---
id: migration-17-internship-pauses
title: Migration 17 — internship_pauses
description: Contrato das pausas de estágio e sua validação temporal.
type: migration-reference
status: implemented
visibility: public
tags: sge/migrations, sge/estagio, sge/historico
related: migration-15-internships, service-internshipenddatecalculator, schedules
source_refs:
---
> [!success] Estado
> Migration, Model, factory, relação e validação de datas/sobreposição implementados. A sincronização do status e o recálculo do término permanecem no fluxo funcional.

## Contrato

| Campo                   | Regra                                                   |
| ----------------------- | ------------------------------------------------------- |
| `id`                    | bigint, chave primária.                                 |
| `internship_id`         | FK obrigatória.                                         |
| `starts_at` / `ends_at` | `date` obrigatórios; início e fim inclusivos da pausa.  |
| `reason`                | motivo obrigatório.                                     |
| timestamps              | auditoria.                                              |

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](doc:service-internshipenddatecalculator) e sincroniza o status efetivo; [Schedules](doc:schedules) repete essa conferência diariamente.

## Checklist

- [x] Criar migration, Model, factory, relação e índice por estágio/período.
- [x] 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.
- [x] Registrar criação, alteração e remoção no Activity Log.
- [ ] Testar pausa válida, sobreposição, intervalo invertido e impacto na data final.
- [x] Testar migrate/rollback na ordem completa.
