Pular para conteúdo

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.