SGEProduto · Domínio · Desenvolvimento
Repositório

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:

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úmeroMigrationTabela/alteraçãoDependências principais
Base 01Userscontas, reset e sessões—
Base 02Cachecache e locks—
Base 03Jobsfilas—
Base 04Activity Logauditoriausers
Base 05Mediaarquivos polimórficos—
01AMigration 01A — citiescatálogo local de cidadescódigo IBGE
22Migration 22 — holidaysferiados persistidoscities, Enum — HolidayScope, Enum — BrazilianState
01Migration 01 — addressesendereços atuaiscities
02Migration 02 — user_personal_datadados pessoais e profissionais por usuáriousers, addresses
03Migration 03 — campusescampiaddresses
04Migration 04 — affiliationsvínculos base, sem course_idusers, campuses, Enum — AffiliationType
05Migration 05 — notificationsnotificações internas nativasusers, affiliations
06Migration 06 — email_messagesmensagens preparadasnotifications, users, affiliations, Enum — EmailMessagePurpose
07Migration 07 — email_delivery_attemptstentativas de transporteemail_messages, Enum — EmailDeliveryAttemptStatus
09Migration 09 — coursescursoscampuses, affiliations
10Migration 10 — course_id em affiliationsvínculo discente por cursocourses, affiliations
11Migration 11 — internship_typestipos e regrascourses
12Migration 12 — granting_partiespartes concedentesaddresses, Enum — PartyDocumentType
12AMigration 12A — supervisor_registration_requestspedidos de supervisoraffiliations, Enum — RegistrationRequestStatus
12BMigration 12B — granting_party_registration_requestspedidos de concedentegranting_parties, Enum — RegistrationRequestStatus, Enum — PartyDocumentType, Enum — BrazilianState
13Migration 13 — document_templatestemplatescampuses, Enum — GeneratedDocumentType
14Migration 14 — template_versionsversões de templatesdocument_templates, affiliations, media
15Migration 15 — internshipsestágios e snapshotsusers, addresses, affiliations, courses, internship_types, granting_parties, Enum — InternshipStatus
18Migration 18 — supervisor_evaluationsavaliações e referência vigenteinternships, affiliations, Enum — EvaluationStatus
19Migration 19 — internship_requestssolicitações de estágioaffiliations, courses, internship_types, granting_parties, supervisor_registration_requests, granting_party_registration_requests, internships, Enum — InternshipRequestStatus
16Migration 16 — generated_documentsdocumentos geradosinternships, template_versions, enums documentais
17Migration 17 — internship_pausespausasinternships
19AMigration 19A — emancipation_evidencesprovas de emancipaçãointernship_requests, media, Enum — EmancipationEvidenceStatus
20Migration 20 — internship_request_correctionscorreções de solicitaçõesinternship_requests, Enum — InternshipRequestCorrectionStatus
21Migration 21 — internship_cancellation_requestspedidos de cancelamentointernships, Enum — InternshipCancellationRequestStatus
22AMigration 22A — internship_calendar_overridesexceções por estágiointernships
23Migration 23 — internship_work_schedulesjornada e aditivosinternships, generated_documents, calendário e exceções

Dependências críticas

Diagram Design · Mermaid · arraste para mover · Ctrl/⌘ + scroll para zoom

100%Abrir inteiro ↗

Renderizando diagrama declarativo…

Legenda
  • Etapa
  • Conexão
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.

Fonte declarativa: diagrams/sources/migrations-ordem.mmd

Prontidão para implementação

  • As Migrations 05–07 estão implementadas. notifications usa a base nativa do Laravel 13 com ID UUID e data em jsonb; as duas tabelas de e-mail usam IDs bigint autoincrementais, 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_id e secondary_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 com ON DELETE RESTRICT.
  • A Migration 12 usa name para 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, restrict ou nullOnDelete escolhidos 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;
  • migrate executado em banco limpo;
  • migrate:rollback testado quando a reversão for segura;
  • testes de restrições e casos inválidos criados;
  • fase e modelo de dados atualizados.