Pular para o conteúdo principal

Feature - Transferencia de Agendamentos Futuros

Introducao ao documento

Documenta a regra de mover agendamentos futuros de um colaborador para outro por turma.

Versionamento

  • Versao do documento: 1.0.0
  • Ultima atualizacao: 2026-03-17
  • Responsavel: GitHub Copilot

Referencial teorico

  • Bulk operations
  • Conflict-aware reallocation

Visao geral

Permite remanejar em lote agendamentos futuros de um colaborador origem para um colaborador destino.

Atores

  • Sistema consumidor da API.
  • Colaborador origem e colaborador destino.
  • Evidencia: routes/api.php:38
  • Evidencia: app/Http/Controllers/AppointmentController.php:461
  • Evidencia: app/Http/Controllers/AppointmentController.php:462

Pre-condicoes

  • Origem e destino devem existir.
  • Deve haver agenda futura por class_id.
  • Evidencia: app/Http/Controllers/AppointmentController.php:464
  • Evidencia: app/Http/Controllers/AppointmentController.php:475
  • Evidencia: app/Models/Appointment.php:58

Fluxo principal

  1. Recebe POST /api/appointments/move/from/{from}/to/{to}/class/{class_id}.
  2. Carrega agendamentos futuros da origem.
  3. Para cada item, verifica conflito no destino.
  4. Move os sem conflito e acumula os nao movidos.
  5. Retorna moved/unmoved.
  • Evidencia: routes/api.php:38
  • Evidencia: app/Http/Controllers/AppointmentController.php:488
  • Evidencia: app/Http/Controllers/AppointmentController.php:490
  • Evidencia: app/Http/Controllers/AppointmentController.php:506

Fluxos alternativos

  • 404 quando colaborador origem/destino nao existe.
  • 404 quando nao ha agendamento futuro para classe.
  • 500 em erro inesperado.
  • Evidencia: app/Http/Controllers/AppointmentController.php:466
  • Evidencia: app/Http/Controllers/AppointmentController.php:479
  • Evidencia: app/Http/Controllers/AppointmentController.php:515

Regras de negocio

  • Janela de futuros considera now()-3h.
  • Somente type_id >= 2 e elegivel para movimentacao.
  • Tipo group nao bloqueia conflito no check.
  • Evidencia: app/Models/Appointment.php:62
  • Evidencia: app/Models/Appointment.php:63
  • Evidencia: app/Http/Controllers/AppointmentController.php:447

Estados possiveis

  • Processado com moved e unmoved (200)
  • Nao encontrado (404)
  • Erro interno (500)

Endpoints envolvidos

  • POST /api/appointments/move/from/{from}/to/{to}/class/{class_id}

Dados impactados

  • appointments.employee_id (update)
  • Referencia: ../data/model.md

Pendencias

  • Comentario indica possivel necessidade de flush de cache apos transferencia.
  • Evidencia: app/Http/Controllers/AppointmentController.php:499