41 lines
7.5 KiB
Markdown
41 lines
7.5 KiB
Markdown
# Execução autorizada — 28/09/2026
|
||
|
||
O proprietário autorizou progressão automática entre fases e reiterou «prossiga». Não há nova aprovação de fase a pedir. As verificações técnicas e as pendências de dados mantêm-se registadas.
|
||
|
||
## Implementado até ao momento
|
||
|
||
- Migration `2026_09_28_100000_investment_zone_foundation`: nove tabelas aditivas; entidades ZEE/ZFI/parque separadas do enquadramento jurídico; identidade UUID com correspondências tipadas de oportunidades/projectos; associações M:N; revisão editorial encriptada e imutável.
|
||
- Migration `2026_09_28_110000_zone_geometry_review`: editor e revisor GIS separados. Geometrias PostGIS existentes reutilizadas; upload GeoJSON validado, perímetro exige polígono e referência legal, sobreposição de perímetros é remetida para revisão.
|
||
- APIs v2 para cadastro, fontes, validação/revogação, ligações, relações territoriais, geometrias e mapa. API v1 preservada, com filtros opcionais `zee_id`, `zfi_id`, `park_id`; resultados continuam a usar IDs canónicos de oportunidades existentes.
|
||
- As quatro entradas filtram o mesmo catálogo através de `dimension=cluster|corridor|zee|zfi`; filtros compatíveis são mantidos. `view=grid|list|map|combined` conserva a vista no URL. Falha do mapa apresenta a lista e mensagem de recuperação; ensaio de navegador confirmado.
|
||
- Páginas `/zonas`, `/zonas/{id}`, `/management/investment/zones` e `/management/investment/zones/{id}`. Catálogo tem quatro entradas; ficha de oportunidade e carteira territorial exibem associações publicadas.
|
||
- Edição PT/EN, formulário de fontes, relações e GIS; revisões e conflitos de versão. Fonte revogada ou vencida oculta zonas/associações e geometrias da consulta pública sem eliminar registos.
|
||
- Gestão exige autenticação, email verificado, gate de gestor e MFA confirmado. Validar fonte/GIS e publicar exigem designação em configuração. Auto-aprovação recusada. Suspensão/revogação continua acessível a gestores com MFA para retirar informação rapidamente.
|
||
- Migration `2026_09_28_120000_investment_submission_zones`: origem normalizada por FK, versão da zona e finalidade interest/dossier/meeting. Rascunho deduplicado por utilizador/zona/versão/investimento/finalidade; submissão revalida disponibilidade e versão, conserva origem no CRM e snapshot privado, e reutiliza protocolo nos reenvios.
|
||
- Comando `investment:reconcile-identities`: dry-run por omissão; `--apply` cria apenas correspondência directa de IDs. Executado localmente para seis oportunidades, preservando registos e URLs; 16 projectos continuam por reconciliar documentalmente, sem fusão automática.
|
||
|
||
## Aplicação local e reversão
|
||
|
||
Primeiro backup: `storage/app/private/zones-backup-20260928-015930/`, restaurado e conferido em 93 tabelas. Primeira migration levou a 102 tabelas; apenas migrations 35→36, novas tabelas vazias.
|
||
|
||
Segundo backup: `storage/app/private/zones-backup-20260928-021135/`, restaurado e conferido em 102 tabelas. Segunda migration manteve 102 tabelas; migrations 36→37. Sessões 3→2 durante uso local; contagens de negócio preservadas. Manifestações, oportunidades e dossiers não foram convertidos ou publicados em massa. Nenhuma zona fictícia foi inserida na base operacional.
|
||
|
||
Rollback das novas tabelas recusa se existirem dados; rollback vazio foi testado isoladamente. Com dados, usar restauro isolado do backup, reconciliar com a aplicação compatível e preservar a base actual para recuperação. Não executar rollback global das migrations antigas.
|
||
|
||
Terceiro backup: `zones-backup-20260928-061527/`, 102 tabelas restauradas/conferidas antes da origem de manifestações. Após migration: 103 tabelas, migrations 37→38, tabela nova vazia. Quarto backup: `zones-backup-20260928-062127/`, 103 tabelas verificadas antes da correspondência canónica. Reconciliação posterior: apenas `investment_items` e `investment_item_opportunities` mudaram de zero para seis; restantes contagens iguais. Relatórios privados em `storage/app/private/zone-reconciliation/`. [Inventário actual agregado](current-data.json).
|
||
|
||
## Limites actuais por fase
|
||
|
||
| Fase | Estado factual | Trabalho ainda necessário |
|
||
| ---- | ----------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| 0 | Baseline e plano executados | Identidade Git para commits; não configurada em nome do utilizador |
|
||
| 1 | Núcleo canónico/legal/GIS aditivo implementado | Modelo completo de actividades, benefícios, obrigações, instalações, lotes e indicadores; matriz jurídica por artigo; correspondências projecto–oportunidade reconciliadas |
|
||
| 2 | APIs e administração do núcleo implementadas | Workflows institucionais completos, histórico de todas as entidades, atribuição nominal de funções, MFA de sessão e testes de contrato exaustivos |
|
||
| 3 | Filtros das zonas integrados com resultados sem duplicação | Descoberta indirecta por elos/nós/influência, ranking/sinónimos, telemetria e benchmark representativo |
|
||
| 4 | Cadastro e fichas com conteúdo PT/EN, mapa esquemático, lista–mapa, filtros/vista no URL e recuperação da falha do mapa | Interface integral EN, acessibilidade assistiva e E2E de todas as jornadas |
|
||
| 5 | Interesse/dossier/reunião assistidos com origem zona/versão/finalidade no protocolo e CRM interno | Origem completa de filtros, SLA parametrizado e integração externa real formalmente autorizada |
|
||
| 6 | Backups/restauros, dry-run, seis correspondências canónicas e reconciliação executados | UAT, carga, formação real, recuperação pontual e piloto com dados oficiais |
|
||
| 7 | Não iniciada | Decisão de produção, suporte e requisitos operacionais |
|
||
|
||
Não declarar a implementação integral concluída com base nesta entrega. Zero geometrias e zonas oficiais estão cadastradas localmente; o estado vazio é intencional até haver documentos e responsáveis. Configurar `INVESTMOZ_ZONE_LEGAL_REVIEWERS`, `INVESTMOZ_ZONE_GIS_REVIEWERS`, `INVESTMOZ_ZONE_PUBLISHERS` com emails de gestores já autorizados, após designação. Estas listas não atribuem competência legal por si próprias.
|