SGEProduto · Domínio · Desenvolvimento
Repositório

migration-reference · implemented

Migration 22A — internship_calendar_overrides

Exceções de uma data de calendário para um estágio específico.

Contrato

ColunaTipo PostgreSQLNuloChaves/índicesRegra
idbigintnãoPKIdentificador da exceção.
internship_idbigintnãoFK, UQ com dateEstágio afetado; RESTRICT.
datedatenãoUQ com internship_idUma data por registro; feriadão usa registros separados.
is_working_daybooleannão—true libera expediente; false bloqueia expediente.
reasontextnão—Justificativa obrigatória.

| created_at | timestamp(0) | não | — | Auditoria. | | updated_at | timestamp(0) | não | — | Auditoria técnica. |

Uma exceção não modifica holidays e não é um escopo territorial. O cálculo consulta primeiro os feriados aplicáveis e depois substitui o resultado somente para a data e o estágio indicados. Recessos, folgas, pontes e fechamentos específicos devem ser registrados como pausas do estágio. Toda criação, alteração ou invalidação gera Activity Log; o Model proíbe a exclusão física, preservando inclusive exceções que poderão participar de uma previsão. A autoria fica no Activity Log.

Checklist

  • Criar migration com UNIQUE (internship_id, date) e RESTRICT.
  • Criar Model, factory, relação, validações e Activity Log.
  • Criar Policy e autorização exclusiva do Setor de Estágio.
  • Recalcular a previsão após alteração autorizada.
  • Testar liberação de feriado, bloqueio de dia comum e datas duplicadas no fluxo de cálculo; as regras do registro e a unicidade já têm teste Pest.