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
- Recebe
POST /api/appointments/move/from/{from}/to/{to}/class/{class_id}. - Carrega agendamentos futuros da origem.
- Para cada item, verifica conflito no destino.
- Move os sem conflito e acumula os nao movidos.
- 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