SGEProduto · Domínio · Desenvolvimento
Repositório

migration-reference · implemented

Migration 17 — internship_pauses

Contrato das pausas de estágio e sua validação temporal.

Contrato

CampoRegra
idbigint, chave primária.
internship_idFK obrigatória.
starts_at / ends_atdate obrigatórios; início e fim inclusivos da pausa.
reasonmotivo obrigatório.
timestampsauditoria.

Pausas não podem se sobrepor, só podem ser criadas em estágio InProgress, não podem começar antes de planned_start_date e devem participar do recálculo da previsão de término. O intervalo é inclusivo e não credita horas, mesmo que contenha dia programado. A FK deve preservar o histórico de pausas. A Action de criação ou alteração usa lock no estágio, chama Service — InternshipEndDateCalculator e sincroniza o status efetivo; Schedules repete essa conferência diariamente.

Checklist

  • Criar migration, Model, factory, relação e índice por estágio/período.
  • Definir validação de intervalo e sobreposição no Model.
  • Atualizar status Paused/InProgress pela Action de sincronização, com autorização e sem update direto.
  • Registrar criação, alteração e remoção no Activity Log.
  • Testar pausa válida, sobreposição, intervalo invertido e impacto na data final.
  • Testar migrate/rollback na ordem completa.