reference-hub · in-progress
Migrations
Índice executável das migrations do domínio do SGE, em ordem de dependência.
Estado da fundação atual
Estas migrations já existem no projeto novo e não devem ser recriadas. Cada uma tem uma nota com o contrato real, o rollback atual e as pendências de integração:
users,password_reset_tokensesessions— autenticação;cacheecache_locks— cache e locks;jobs,job_batchesefailed_jobs— filas;activity_log— auditoria;media— arquivos polimórficos;
Não há migration de permissões: as tabelas anteriormente previstas foram removidas e a autorização usa Gates e Policies com os vínculos.
Todas as migrations listadas abaixo estão implementadas. As sete últimas também tiveram aplicação, rollback e reaplicação verificados no PostgreSQL de testes. Os fluxos de geração documental, recálculo, análise e autorização ainda têm etapas pendentes descritas nas notas individuais.
Ordem de execução
A tabela segue a ordem dos nomes dos arquivos em database/migrations. Os números identificam as notas de domínio e não determinam a execução. Por isso, 22 vem antes de 01, e 16/17 aparecem depois de 19.
| Número | Migration | Tabela/alteração | Dependências principais |
|---|---|---|---|
| Base 01 | Users | contas, reset e sessões | — |
| Base 02 | Cache | cache e locks | — |
| Base 03 | Jobs | filas | — |
| Base 04 | Activity Log | auditoria | users |
| Base 05 | Media | arquivos polimórficos | — |
| 01A | Migration 01A — cities | catálogo local de cidades | código IBGE |
| 22 | Migration 22 — holidays | feriados persistidos | cities, Enum — HolidayScope, Enum — BrazilianState |
| 01 | Migration 01 — addresses | endereços atuais | cities |
| 02 | Migration 02 — user_personal_data | dados pessoais e profissionais por usuário | users, addresses |
| 03 | Migration 03 — campuses | campi | addresses |
| 04 | Migration 04 — affiliations | vínculos base, sem course_id | users, campuses, Enum — AffiliationType |
| 05 | Migration 05 — notifications | notificações internas nativas | users, affiliations |
| 06 | Migration 06 — email_messages | mensagens preparadas | notifications, users, affiliations, Enum — EmailMessagePurpose |
| 07 | Migration 07 — email_delivery_attempts | tentativas de transporte | email_messages, Enum — EmailDeliveryAttemptStatus |
| 09 | Migration 09 — courses | cursos | campuses, affiliations |
| 10 | Migration 10 — course_id em affiliations | vínculo discente por curso | courses, affiliations |
| 11 | Migration 11 — internship_types | tipos e regras | courses |
| 12 | Migration 12 — granting_parties | partes concedentes | addresses, Enum — PartyDocumentType |
| 12A | Migration 12A — supervisor_registration_requests | pedidos de supervisor | affiliations, Enum — RegistrationRequestStatus |
| 12B | Migration 12B — granting_party_registration_requests | pedidos de concedente | granting_parties, Enum — RegistrationRequestStatus, Enum — PartyDocumentType, Enum — BrazilianState |
| 13 | Migration 13 — document_templates | templates | campuses, Enum — GeneratedDocumentType |
| 14 | Migration 14 — template_versions | versões de templates | document_templates, affiliations, media |
| 15 | Migration 15 — internships | estágios e snapshots | users, addresses, affiliations, courses, internship_types, granting_parties, Enum — InternshipStatus |
| 18 | Migration 18 — supervisor_evaluations | avaliações e referência vigente | internships, affiliations, Enum — EvaluationStatus |
| 19 | Migration 19 — internship_requests | solicitações de estágio | affiliations, courses, internship_types, granting_parties, supervisor_registration_requests, granting_party_registration_requests, internships, Enum — InternshipRequestStatus |
| 16 | Migration 16 — generated_documents | documentos gerados | internships, template_versions, enums documentais |
| 17 | Migration 17 — internship_pauses | pausas | internships |
| 19A | Migration 19A — emancipation_evidences | provas de emancipação | internship_requests, media, Enum — EmancipationEvidenceStatus |
| 20 | Migration 20 — internship_request_corrections | correções de solicitações | internship_requests, Enum — InternshipRequestCorrectionStatus |
| 21 | Migration 21 — internship_cancellation_requests | pedidos de cancelamento | internships, Enum — InternshipCancellationRequestStatus |
| 22A | Migration 22A — internship_calendar_overrides | exceções por estágio | internships |
| 23 | Migration 23 — internship_work_schedules | jornada e aditivos | internships, generated_documents, calendário e exceções |
Dependências críticas
Diagram Design · Mermaid · arraste para mover · Ctrl/⌘ + scroll para zoom
Renderizando diagrama declarativo…
Leitura semântica
A fundação começa com users e dados pessoais, passa por campi, vínculos, cursos e tipos de estágio, e então chega a solicitações, estágios, documentos, jornadas, pausas e comunicação.
diagrams/sources/migrations-ordem.mmdProntidão para implementação
- As Migrations 05–07 estão implementadas.
notificationsusa a base nativa do Laravel 13 com ID UUID edataemjsonb; as duas tabelas de e-mail usam IDsbigintautoincrementais, FKs históricas, Models, casts e testes PostgreSQL. Actions e Jobs enfileiram os fluxos administrativos de conta, vínculo e alteração de e-mail. A consulta de e-mails do Administrador do Sistema também está implementada, com escopo pelo registro afetado e conteúdo/tentativas. A integração de outras notificações de domínio, consultas para outros vínculos e retenção ainda estão pendentes. - As Migrations 09 e 10 estão implementadas. A 09 usa
primary_coordinator_affiliation_idesecondary_coordinator_affiliation_id, ambas nullable para cadastro inicial sem coordenadores; o Model valida tipo, atividade e campus na atribuição. A 10 vincula cada discente a um curso do mesmo campus e preserva o histórico comON DELETE RESTRICT. - A Migration 12 usa
namepara o nome completo da concedente/unidade, permite documentos compartilhados entre unidades e deixa índices secundários e telas de cadastro para etapas futuras. - A Migration 12A implementa pedidos de cadastro de supervisor com CPF e estados validados no Model, dados profissionais, associação ao vínculo resultante e bloqueio da exclusão pelo Model. O Model participa do Activity Log Eloquent, que identifica a conta e o vínculo ativo como autoria; o fluxo transacional de aprovação e sua Policy permanecem pendentes.
- A Migration 12B implementa pedidos de cadastro de concedente com CPF/CNPJ, endereço proposto, estados validados, relação com a concedente resultante e bloqueio da exclusão pelo Model. O Activity Log Eloquent registra autoria por contexto; o fluxo transacional de aprovação e sua Policy permanecem pendentes.
- A Migration 13 implementa o catálogo lógico de templates globais ou por campus, sem chave textual, com categoria por enum, desativação e Activity Log.
- A Migration 14 implementa versões DOCX por template, mídia privada no Media Library, hash único por template e seleção da versão validada mais recente. Uma geração referencia a versão usada; não cria outra versão. A FK da Migration 16 restringe a exclusão física da versão usada.
- A Migration 15 implementa o estágio com FKs para vínculos, curso, tipo e concedente, snapshots históricos, jornada inicial e data projetada; o cálculo automático e a criação pelo aceite da solicitação ficam para o fluxo funcional.
- A Migration 18 cria as avaliações do supervisor e as referências de liberação e avaliação vigente em
internships, com validações do formulário no Model. Liberação, autorização, aprovação transacional e cálculo de nota permanecem no fluxo funcional. - A Migration 19 implementa a solicitação com FKs para curso, tipo, concedente, supervisor e estágio, jornada em JSONB, estados, validações condicionais no Model, Activity Log e data do aceite dos termos. Checkbox, cálculo da data projetada e aprovação transacional permanecem para o fluxo; a Migration 19A já exige evidência no caminho emancipado.
- As Migrations 16, 17, 19A, 20, 21, 22A e 23 agora têm schema, Models, factories, relações e validações do registro. Geração/assinatura, upload/autorização, decisões, recálculo e concorrência transacional permanecem para os fluxos funcionais. Ainda faltam testes Pest específicos desses sete contratos.
Checklist comum
Cada nota individual deve terminar com todos estes pontos marcados:
- contrato revisado contra Domínio e modelo de dados;
- FKs, índices, nulabilidade e unicidade definidos;
cascade,restrictounullOnDeleteescolhidos conscientemente;- migration criada e nomeada conforme a tabela/alteração;
- Model, relações, casts de enum e casts de JSONB atualizados;
- factory/seed mínima criada quando aplicável;
migrateexecutado em banco limpo;migrate:rollbacktestado quando a reversão for segura;- testes de restrições e casos inválidos criados;
- fase e modelo de dados atualizados.