Agenda e sessões¶
Em produção. A agenda reúne as sessões vendidas aos alunos e os compromissos que não são sessão.
Duas entidades diferentes¶
| Entidade | Tabela | O que é |
|---|---|---|
| Sessão do aluno | sessions |
Ocorrência de uma sessão vendida, com tutor, aluno e horário |
| Compromisso | calendar_tasks |
Tarefa de agenda que não é sessão de aluno |
As duas aparecem na mesma tela de semana, e as duas respeitam o mesmo recorte de acesso.
Disponibilidade do tutor¶
| Peça | Papel |
|---|---|
tutor_availability |
Janela recorrente em que o tutor aceita agendamento |
tutor_schedule_releases |
Ato de abrir um período concreto |
tutor_bookable_slots |
Horário agendável derivado da disponibilidade |
tutor_specialties |
Em que especialidades ele pode atuar |
O fechamento de venda agenda sozinho, escolhendo horários na agenda liberada do tutor. Quando não encontra horário, a ocorrência fica pendente de atribuição em vez de impedir a venda.
Recorte de acesso¶
O perfil Tutor não recebe a permissão de ver todas as agendas. Ele vê a própria porque essa permissão falta, não porque exista uma regra "só a própria". Dar essa permissão a ele abre todas as agendas.
A Secretaria recebe o módulo agenda inteiro, incluindo ver todas.
Ciclo de vida de uma sessão¶
As ações sobre sessão têm permissão própria: ver, criar, editar, cancelar, remarcar e concluir. Cada mudança entra em session_history.
A janela da semana¶
A semana começa no domingo
O sistema roda em pt_BR, e nessa configuração a semana do Carbon começa no domingo. A tela de semana pede uma data inicial e devolve sete dias a partir dela. Quem escrever teste de agenda deve posicionar o compromisso a partir do início da semana, não a partir de hoje: now()->addDay() cai fora da janela quando hoje é sábado, e o teste passa a falhar um dia por semana.
Integração com o Google Calendar¶
Existe sincronização com o Google Calendar, por tutor, com token em tutor_google_tokens e eventos em google_calendar_events. A configuração do OAuth está documentada no runbook de deploy antigo, seção 11.
O que não entra na agenda¶
Entrega importada de planilha não vira compromisso quando não traz tutor, hora e duração. Inventar os três produziria compromisso falso na tela do cliente. Ver AD-014 e o escopo que AD-019 abriu.