Como um psicólogo da plataforma
Quero visualizar todos os meus horários disponíveis em um calendário e adicionar, editar ou bloquear horários, para manter minha agenda organizada e oferecer horários reais para agendamento de pacientes.
✅ Critérios de Aceite
1. 📅 Visualização da Agenda
- A página principal da agenda deve exibir um calendário interativo com os horários já cadastrados
- O calendário pode ser exibido em modo semanal ou mensal
- Cada horário cadastrado deve mostrar:
- Data, hora, duração
- Ícone de repetição (se for um horário recorrente)
- Usar cores ou indicadores visuais diferentes para:
- Horários disponíveis
- Horários agendados por pacientes
- Horários bloqueados (exceções)
- O calendário deve carregar automaticamente os horários salvos no banco, com aplicação das exceções
2. ➕ Adicionar Novo Horário
- Botão: “Adicionar horário”, posicionado acima ou ao lado do calendário
- Ao clicar, abrir um formulário com os campos:
- Data (
date)
- Horário (
time)
- Duração da sessão (Dado fixo vindo das configurações do psicologo)
- Repetir horário?
- Horário único
- Repetir horário (abre opções extras):
- Modelo de dias:
- Dias úteis (segunda a sexta)
- Segunda a sábado
- Personalizado (checkbox com dias da semana)
- Tipo de repetição:
- Data inicial
- Data final (ou “Sem data final”)
- Após salvar, os horários aparecem no calendário imediatamente
3. ⛔ Exceções de Repetição
- Psicólogo pode clicar em um horário recorrente e escolher “Marcar como indisponível nesta data”
- O sistema deve:
- Registrar essa data como exceção da regra de repetição
- Remover visualmente esse horário do calendário para aquela data
- Armazenar as exceções no banco vinculadas à repetição original
4. ✏️ Editar ou Excluir Horários
- Ao clicar em um horário, deve abrir um modal ou popover com as opções:
- Editar horário
- Bloquear horário ou desbloquear (Depende da situação em que está)
-
Cancelar toda repetição
- Se já houver algum agendamento nessa repetição, ele só pode excluir de hoje pra frente. (Define a data término como ontem)
- Caso não exista nenhuma agendamento, poderá excluir todo o agendamento. (Exclui fisicamente do banco)
-
Se o horário possuir carrinhos, agendamentos ou outras reservas e usuário queira excluir, vamos marcar como in_excluido
- Itens excluídos não deverão aparecer no calendário
- Itens excluídos que estão no carrinho deverão mostrar como indisponíveis
- Itens excluídos que estão agendados deverão manter o agendamento, mas não aparecerão mais no calendário (horários) do profissional
- Itens excluídos que estão em outras reservas deverão ser tratados conforme a política de exclusão definida
🧱 Componentes Técnicos (UI/UX)
- Calendário com modo semana/mês (similar ao Google Calendar)
- Modal ou Drawer para adicionar horário com passo a passo intuitivo
- Feedback visual com loading/success ao salvar
- Indicação clara de datas bloqueadas por exceção
- Validação para evitar sobreposição de horários
🔐 Requisitos Técnicos
- Carregamento de todos os horários cadastrados do psicólogo (únicos e recorrentes)
- Aplicação das exceções ao renderizar o calendário
- Controle de timezone
- Evitar conflitos entre horários existentes
- Backend preparado para lidar com:
- Agendamento único
- Regras de repetição
- Exceções
- Edição parcial ou total de uma repetição