Informar Horários Disponíveis

Informar Horários Disponíveis

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:
          • Diária
          • Semanal
        • 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