Files
Investidor-V2/docs/investmoz/existing-business/implementation-status.md
T
nala 3dc7c5c649
tests / ci (push) Canceled after 0s
commit 30/9
2026-09-30 09:05:43 +02:00

10 KiB
Raw Blame History

Estado actual — Mercado de Negócios Existentes

29/09/2026 — Formulário privado por oito etapas disponível com autosave, retoma, sector e confirmação no servidor. Testado por API e navegador; os anexos A–C completos continuam pendentes.

29/09/2026 — Anexos D/E: incremento 005 aplicado. Simulação do backfill, reconciliação com saída de falha e bloqueio SQL de activação canónica testados; a entrega integral continua pendente.

29/09/2026 — Ponte de compatibilidade 004 aplicada: seis tabelas de vínculo/controlo, backfill, resolvers e interface de repositório nos serviços privados. Legado permanece autoridade; identidade pendente, leitura canónica completa e privilégios mínimos ainda impedem a activação.

29/09/2026 — Integridade do schema canónico: aplicado incremento SQL com 81 índices e protecção de quatro históricos; teste isolado de idempotência/reversão aprovado. As 70 tabelas mne ainda não alimentam a interface privada. A integração do modelo e as fases seguintes continuam incompletas.

Actualização 29/09/2026: revisão granular com evidência, validade e invalidação por alteração implementada na ficha privada. Suite: 173 testes / 1785 verificações aprovadas. Os limites e contagens abaixo descrevem a entrega anterior; o módulo integral continua incompleto.

28/09/2026. A instrução mais recente autoriza executar todas as fases e avançar automaticamente. Substitui a paragem entre fases do prompt inicial. Não presume evidências jurídicas, nomeação de revisores, publicação ou integração externa efectiva.

Entrega utilizável localmente

  • /investidor/negocios: lista própria, criação privada e formulário reservado.
  • /investidor/negocios/{uuid}: edição, elementos separados, fonte/validade, submissão com consentimento de análise interna, histórico e retirada.
  • /management/negocios: fila reservada aos gestores designados para revisão e com MFA confirmado; exclui os próprios negócios.
  • O revisor inicia análise e pede informação; o proprietário consulta a nota, corrige e pode ressubmeter. Submissão não significa identidade, representação ou titularidade verificadas.
  • O negócio fica bloqueado para edição enquanto submetido/em revisão. Todas as alterações exigem versão actual; revisões e decisões são transaccionais e imutáveis. A retirada remove imediatamente o acesso do revisor e a entrada da fila.
  • Cada activo, imóvel, unidade, benfeitoria, investimento agrícola, direito, contrato, licença, autorização, encargo, participação, avaliação ou pedido de capital tem identificador próprio, natureza imutável e payload cifrado. Referências documentais são declarações, não ficheiros validados.
  • Campos reservados incluem titular, entidade competente declarada, fonte, referência documental, finalidade, localização/limites descritivos, ocupação/conservação, encargos, restrições, autorizações e condição de transmissão. Não se inferem coordenadas nem direitos.
  • Área exige unidade; montante exige moeda e natureza do valor. Datas indicadas em conjunto têm de ser coerentes. Nenhum montante é receita; todos os elementos permanecem pending.
  • O serviço de objectos aplica autorização do agregado, controla versão e grava o snapshot completo cifrado. Edição cruzada por UUID é recusada. A lista/ficha só é entregue após verificação de acesso.

Não existe publicação neste incremento. A constraint da BD permite apenas draft, submitted, in_review, needs_information, withdrawn; approved e published são recusados. Não há endpoint público MNE nem documentos descarregáveis, contrato emitido, cobrança ou decisão de transmissibilidade.

Matriz das fases e decisões

Fase Executado Lacunas / decisão
0 — descoberta Diagnóstico, ameaças, RACI, matriz jurídica, baseline Política/base/equipa/piloto não homologados; No-Go institucional mantém-se
1 — modelo Negócio, objectos tipados separados, mandato pendente, classificação, versões, histórico, rollback Relações documentais/territoriais detalhadas, titularidade comprovada, revisão de mandatos e retenção homologada pendentes; Go condicionado técnico
2 — submissão/administração UI e API de rascunho, submissão, consentimento, revisão independente, pedido de informação, retirada Upload/scanner, verificações documentais, dois níveis de aprovação e publicação ainda não implementados; núcleo privado utilizável, fase parcial
3 — catálogo público Nenhuma ficha reservada enviada ao catálogo público Projecção anonimizada, revisão de reidentificação, filtros e mapas MNE pendentes; No-Go para divulgação
4 — CRM/matching CRM existente preservado; nenhum lead MNE enviado Deduplicação interessado/negócio/modalidade/período, matching revisto e integrações MNE pendentes
5 — sala segura Referências declarativas e cifragem privadas NDA juridicamente aprovado, grants temporais, malware, watermark e diligência não implementados; sem sala segura anunciada
6 — negociação/monetização Valores reservados rotulados por natureza Workflow negocial, contrato/regra financeira, facturação e reconciliação pendentes; nenhuma cobrança
7 — piloto/operação Backup/restauro, migrations locais, reconciliação, testes e build Piloto real, UAT institucional, carga, recuperação MNE completa, PT/EN completo e decisão formal de produção pendentes

Não se declara conclusão integral do prompt. Aprovação para desenvolver não torna disponíveis os documentos, mandatos ou regras que faltam. O próximo trabalho técnico é a evidência documental e a governação da validação, antes da publicação; não é necessário repetir autorização de desenvolvimento.

Ficheiros e contratos

Novos: ExistingBusinessController, ExistingBusinessEnabled, ExistingBusinessIntake, ExistingBusinessObjects, config/existing-business.php, routes/existing-business.php, migration 2026_09_28_140000_existing_business_intake, teste ExistingBusinessIntakeTest, React businesses, business, business-types, business-objects; ferramentas existing-business-openapi.mjs, existing-business-browser.mjs e existing-business-reconcile.php.

Adaptados: policy e snapshots MNE, shared props Inertia, navegação, web routes e testes de rollback em ordem inversa das dependências. Nenhum ficheiro removido.

OpenAPI: oito operações API v1 privadas de listagem, criação, consulta, edição, transição e objectos. Contrato preserva as APIs anteriores. Sessão, email verificado, CSRF/origin Laravel, limite de 30 pedidos/minuto e Cache-Control: private, no-store; nomes de cookie dependem do ambiente. Não existe bearer token inventado. Erros de validação 422, autorização 403, versão/estado 409; módulo desactivado 404. Contrato de eventos externos e correlation_id transversal ainda por implementar; não fingir integração completa.

Activação e reconciliação local

Backup antes das migrations: storage/app/private/zones-backup-20260928-151000/, SHA-256 f7b56bfcf76d1937ba6a1e58142e8a85c25c69c2d1d21418703c9ed54f70c851. Restauro isolado verificado e 103 tabelas reconciliadas. Configuração anterior guardada privadamente no mesmo directório; contém segredos e não deve ser publicada.

Migrations 130000 e 140000 aplicadas localmente. Reconciliação posterior com php tools/existing-business-reconcile.php <manifesto-privado>: só migrations mudou de 38 para 40; 5 tabelas MNE novas, todas vazias. Total 108 tabelas. Nenhum anúncio ou documento real importado. Fixtures do navegador residem apenas em portal_services_test, nunca na base da aplicação.

INVESTMOZ_MNE_ENABLED=true activado apenas na .env local; configuração de origem mantém default false. INVESTMOZ_MNE_REVIEWERS é uma lista de emails de gestores previamente autorizados e com MFA. Nenhum revisor foi nomeado automaticamente (contagem local: zero). O proprietário pode preparar/submeter; a fila exige designação administrativa explícita, que não prova competência jurídica.

Validação

Resultado final após integrar os objectos: 157 testes / 1647 verificações aprovadas, 47369 ms. Build final: 2363 módulos, 16,29 s. Navegador repetido sobre o build final: quatro observações aprovadas, zero erros JavaScript. Ajuste posterior de limites/representação decimal verificado novamente nos testes focados.

  • Suite antes de acrescentar objectos: 156 testes / 1633 verificações aprovadas.
  • Testes focados após objectos: 9 testes / 67 verificações aprovadas; isolamento entre negócios, natureza imutável, valores/moeda, cifragem e snapshot incluídos.
  • Áreas e montantes usam strings decimais (sem conversão para float); máximo de 100 elementos por negócio para limitar tamanho de histórico/respostas.
  • PHPStan, TypeScript, lint e Pint aprovados nos ficheiros verificados.
  • Build inicial das páginas: 2362 módulos, 8,46 s. Validação final após objectos registada abaixo.
  • Navegador QA em 390 e 1440 px: criar/gravar/submeter com consentimento, breadcrumbs, apoio fixo, ausência de overflow e zero erros JavaScript. Evidência. Não é UAT institucional, pentest ou certificação WCAG.
  • tools/existing-business-browser.mjs usa exclusivamente servidor QA local na porta 18027 e Edge de teste em 9224. Conta sintética preparada na base isolada; não executar contra produção. O teste nunca publica negócios.

Suspensão e rollback

Para suspender acesso: INVESTMOZ_MNE_ENABLED=false e php artisan config:clear; conservar dados e evidências. Novas tabelas vazias permitem down de 140000 antes de 130000. Os testes confirmam recusa de rollback destrutivo quando há negócios ou decisões. Não usar CASCADE, DROP EXTENSION ou migrate:fresh na aplicação. Preferir correcção progressiva quando existam dados; qualquer restauro substitutivo exige plano de reconciliação para alterações posteriores ao backup.

Riscos residuais: mandatos ainda declarativos, ausência de scanner e fluxo documental, revisão editorial/jurídica não implementada, objectos com metadados tipados mas conteúdo declarativo, ausência de duas aprovações e política final de retenção. Estes limites impedem abertura pública, sala segura e transacções; não impedem a preparação privada identificada como pendente.