From 996b5b08cdf74b08b966415a28869be2a826f14c Mon Sep 17 00:00:00 2001 From: Paulo Massingue Date: Thu, 29 Oct 2026 12:48:31 +0200 Subject: [PATCH] ajuste da estetica em oportunidades de investimento --- .../catalogue-layout-qa-20261029.json | 174 +++ .../unification/traceability-and-manual.md | 23 + .../v2/auditoria-portal/matriz-requisitos.csv | 8 +- resources/css/investment-catalogue.css | 445 +++++++ .../js/components/catalogue-filter-group.tsx | 30 + .../components/opportunity-search-filters.tsx | 698 +++++----- resources/js/pages/investment/catalogue.tsx | 1147 +++++++++++------ 7 files changed, 1819 insertions(+), 706 deletions(-) create mode 100644 docs/investmoz/unification/catalogue-layout-qa-20261029.json create mode 100644 resources/css/investment-catalogue.css create mode 100644 resources/js/components/catalogue-filter-group.tsx diff --git a/docs/investmoz/unification/catalogue-layout-qa-20261029.json b/docs/investmoz/unification/catalogue-layout-qa-20261029.json new file mode 100644 index 00000000..44ff42d6 --- /dev/null +++ b/docs/investmoz/unification/catalogue-layout-qa-20261029.json @@ -0,0 +1,174 @@ +{ + "date": "2026-10-29", + "scope": "Reorganização visual local do catálogo autorizada pela Tempo; sem instalação no portal.", + "base": "838ad941a24ae76ec4bf91ccc3f92012668fe8cf", + "design": { + "desktop": "Painel lateral de filtros e resultados em duas colunas; lista com acções na coluna lateral do cartão.", + "mobile": "Filtros expansíveis; cartões numa coluna; áreas de toque e foco visível.", + "content": "Todos os campos, descrições, avisos e acções conservados; 29 fichas agrupadas por tipo. Aviso provincial e título dos resultados recuperados do pedido fornecido." + }, + "checks": { + "types": { + "command": "npm run types:check", + "exit": 0 + }, + "build": { + "command": "INVESTMOZ_QA_BUILD=1 npm run build", + "exit": 0, + "target": "public/build-qa-opportunities", + "limitations": "Avisos existentes de fontaine opcional e chunks grandes. Compilação anterior à formatação final, apenas cosmética." + }, + "browser": { + "result": "passed", + "scope": "Local compiled React application with public document-based preview fixtures and mocked HTTP, no database or external requests. Does not prove backend or live availability.", + "layouts": [ + { + "width": 1440, + "scrollWidth": 1440, + "count": 12, + "headingY": 296.65625, + "sidebarVisible": true, + "groups": [ + "Corredores6", + "Clusters8", + "Projectos âncora15" + ] + }, + { + "width": 1024, + "scrollWidth": 1024, + "count": 12, + "headingY": 292.234375, + "sidebarVisible": true, + "groups": [ + "Corredores6", + "Clusters8", + "Projectos âncora15" + ] + }, + { + "width": 768, + "scrollWidth": 768, + "count": 12, + "headingY": 368.078125, + "sidebarVisible": false, + "groups": [ + "Corredores6", + "Clusters8", + "Projectos âncora15" + ] + }, + { + "width": 390, + "scrollWidth": 390, + "count": 12, + "headingY": 395.265625, + "sidebarVisible": false, + "groups": [ + "Corredores6", + "Clusters8", + "Projectos âncora15" + ] + }, + { + "width": 320, + "scrollWidth": 320, + "count": 12, + "headingY": 425.96875, + "sidebarVisible": false, + "groups": [ + "Corredores6", + "Clusters8", + "Projectos âncora15" + ] + } + ], + "checks": [ + "All 12 sample titles, full descriptions and territorial caveats preserved at every width; expanded filter controls fit 320/390/1024px.", + "Missing currency error remains visible on mobile.", + "Keyboard opens mobile filters; search preserved through collapse, reopen and reload.", + "Hierarchical territory selector still loads and updates filter context (synthetic QA territory).", + "Investment selection and dossier link survive reload.", + "Comparison still limits four selections and renders the existing comparison table.", + "All 29 territorial reference cards remain accessible in three expandable groups.", + "All five views activate and fit mobile width; map uses explicit no-coordinates preview data." + ], + "pageErrors": 0 + }, + "logic": [ + { + "file": "resources/js/pages/investment/catalogue.tsx", + "existingNonPresentationLogicBlocks": 33, + "missing": 0, + "excludes": "JSX and its inline handlers; those reviewed in source diff and directed browser checks." + }, + { + "file": "resources/js/components/opportunity-search-filters.tsx", + "existingNonPresentationLogicBlocks": 5, + "missing": 0, + "excludes": "JSX and its inline handlers; those reviewed in source diff and directed browser checks." + } + ] + }, + "preservation": { + "schema": "Sem alterações.", + "data": "Sem acesso à base de dados; prévia baseada nos documentos locais e referências públicas já guardadas.", + "configuration": "Sem alterações.", + "permissions": "Sem alterações.", + "queries": "Filtros, endpoints e regras preservados; testes de backend anteriores reutilizados, sem nova prova de backend ou autenticação.", + "sourceFiles": [ + { + "file": "resources/js/pages/investment/catalogue.tsx", + "sha256": "d4697cb83c2f92a786108286c7743401b44d61c5b367e9ff322b05d0424b0d70" + }, + { + "file": "resources/js/components/opportunity-search-filters.tsx", + "sha256": "d5b75fc78f7dc272b745117d37e040f1bb921cec2783c3f50ddaaafff7e2df66" + }, + { + "file": "resources/js/components/catalogue-filter-group.tsx", + "sha256": "f2728dfc2393de7d4f4338d3ea1057ed84317603980a2dc44f8a208d225cda45" + }, + { + "file": "resources/css/investment-catalogue.css", + "sha256": "034a79a62ba13220f814027afd62e43c49e2947afd1d9e25a87ba37d3648fd93" + } + ] + }, + "evidence": { + "directory": "outputs/catalogue-layout-20261029/", + "screenshots": [ + "catalogue-1440.png", + "catalogue-1024.png", + "catalogue-768.png", + "catalogue-390.png", + "catalogue-320.png", + "filters-expanded-390.png", + "territorial-expanded.png", + "list-1440.png" + ] + }, + "matrix": [ + "RF-MN-010", + "RF-PII-003", + "RNF-EDU-008", + "MASTER-471012ab-0124" + ], + "deployment": "Não realizada; alteração activa fora desta entrega local.", + "dynamicMoreFilters": { + "origin": "Pedido expresso da Tempo, 29/10/2026", + "collapsed": "Mais filtros", + "expanded": "Menos filtros", + "verification": { + "result": "passed", + "checks": [ + "Mais filtros quando recolhido", + "Menos filtros quando aberto", + "Alternância por clique e teclado", + "Escolhas e contagem conservadas" + ], + "scope": "Componente React real, compilado e exercitado em Chromium; sem backend ou base de dados." + }, + "deployment": "Alteração local; sem instalação." + } +} diff --git a/docs/investmoz/unification/traceability-and-manual.md b/docs/investmoz/unification/traceability-and-manual.md index 566fffa0..6edd43e7 100644 --- a/docs/investmoz/unification/traceability-and-manual.md +++ b/docs/investmoz/unification/traceability-and-manual.md @@ -7103,3 +7103,26 @@ L8 permanece parcial. A avaliação real do percurso proactivo continua a aguard | Pagamento/titular/uso anterior e correspondência temporal | Pagamento em2027 afecto a2026 sem suporte: anexar/identificar correspondência expressa; sem presumir transporte ou utilização zero. | **L8 permanece parcial.** Crédito internacional apenas emQA; PEC instalado em`e182d1d7` mantém o âmbito demonstrado. Songo eGurué privados; L3,ISPC,câmbio,L5–L7 eSGFTEMPO preservados. Avaliação de utilização do percurso proactivo continua a aguardar retorno da equipa. Sem instalação, publicação ou nova estimativa global nesta passagem. + + +## 29/10/2026 — ergonomia do catálogo: inventário antes da verificação + +Origem: pedido expresso da Tempo para analisar alternativas e reorganizar a página sem alterar conteúdos. Escolha de implementação: painel lateral no computador, filtros expansíveis no móvel, grupos por finalidade e cartões com hierarquia visual; corredores, clusters e projectos âncora agrupados em secções expansíveis. Não introduz regra organizacional. Alternativas ponderadas: formulário integral no topo conserva o bloqueio vertical; janela sobreposta afasta o contexto dos resultados; painel responsivo permite consulta lado a lado e mantém os campos montados ao recolher. + +Inventário do concluído consultado antes de nova ronda: selectores públicos independentes dos resultados e provas 22/10; agronegócio e escolha múltipla/dossier 23/10; vista por corredor e percurso proactivo 27/10; registos de reposição territorial e carteira mantidos. Preservar pesquisa combinada AND, filtros simples/avançados e geográficos, classificação histórica, montantes/moedas sem conversão, estados/erros, cinco vistas, CSV, favoritos/pedidos, comparação, escolha para investimento, paginação, guias e todas as fichas territoriais. Não existe eliminação funcional confirmada neste delta de código; não se infere disponibilidade activa pela apresentação local. O título dos resultados e o aviso provincial fornecidos no pedido estavam ausentes no componente local e são recuperados textualmente. + +Comparação delimitada: só componentes de apresentação e CSS; schema, dados, configuração, fontes, relações e permissões sem alteração. Não se ligou à base activa nem se declarou perda por leitura sem actor. A candidata não modifica aceitação anterior ou limitações de outros incrementos. Matriz existente: RF-MN-010, RF-PII-003, RNF-EDU-008 e MASTER-471012ab-0124; sem nova matriz. + +Verificação do delta por realizar: compilação/tipos, apresentação 320/390/768/1024/1440px, teclado, expansão sem perda de campos, vistas, conservação das acções/conteúdo e ausência de transbordo horizontal. Preparação local, sem instalação ou alteração de dados activos. + +### Resultado do delta de apresentação — 29/10/2026 + +Concluído localmente. TypeScript e build isolado aprovados, sem instalação. Navegador Chromium com a aplicação React compilada e respostas HTTP de prévia locais, sem base de dados nem pedidos externos:320/390/768/1024/1440px sem transbordo horizontal; campos expandidos cabem no painel em320/390/1024px. Conferidas integralmente as descrições e avisos territoriais dos12cartões da amostra em cada largura, teclado para expandir, erro de moeda, recolher/reabrir/recarregar sem perder pesquisa, selectores hierárquicos, escolha persistente para dossier, limite/comparação de4, cinco vistas e acesso às29fichas(6corredores,8clusters,15âncoras). Zero erros JavaScript. Capturas efectivamente inspeccionadas:1440/1024/390/320px, filtros expandidos390px e lista1440px. + +Comparação estrutural:33blocos preexistentes de lógica da página e5auxiliares dos filtros preservados; JSX/callbacks revistos no delta e nas interacções acima. Os avisos de ausência, a consulta pública e as ligações anteriores mantêm-se. Favoritos autenticados, backend de pesquisa/mapa, guias e permissões conservam os contratos/provas anteriores; esta prévia não é nova demonstração desses serviços nem da disponibilidade activa. Mapa exercitado com ausência explícita de coordenadas, sem criar pontos. + +Recibo:docs/investmoz/unification/catalogue-layout-qa-20261029.json. Evidência local:outputs/catalogue-layout-20261029/. Nenhuma redução funcional pretendida; todas as fichas estão nos grupos expansíveis. Sem publicação, dados alterados, migrações, configuração ou permissões novas. Não encerra os critérios globais das quatro linhas da matriz. + +Ajuste solicitado pela Tempo em29/10/2026: o controlo dos filtros avançados alterna entre “Mais filtros” (recolhido) e “Menos filtros” (aberto). O estado segue a abertura nativa da secção; os campos e escolhas continuam montados. Prova dirigida no componente React real em Chromium: clique/teclado, ambos os textos, valor editado e contagem conservados; sem errosJavaScript. Recibo local:outputs/catalogue-layout-20261029/toggle-receipt.json. Sem nova ronda global, instalação ou alteração de dados. + +Ajuste visual solicitado pela Tempo em29/10/2026: títulos, cabeçalhos, rótulos de grupos e conteúdo do catálogo em negrito apresentados em vermelho; os botões com fundo colorido mantêm texto legível. CSS validado por análise sintáctica; alteração local de apresentação, sem instalação. diff --git a/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv b/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv index 6a913d76..31687696 100644 --- a/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv +++ b/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv @@ -194,7 +194,7 @@ RF-MN-010,Pesquisar e filtrar oportunidades.,upgrade v4 SHA f0b9815…; p. 2993; [RECONCILIACAO-43-20261019] Código e critérios confrontados com leitura READ ONLY fresca; PROVA-RECONCILIACAO-43-LEITURA.json, RECONCILIACAO-43-QA-FONTES.json, RECONCILIACAO-43-SCHEMA-QA.json. Não encerra critério funcional por inventário. -[PLANO-P1-P6-20261019] Plano Tempo: 27–46 h disponibilização; P7 e desenvolvimento separados. Inclusão 36–39 expressa para decisão; sem publicação automática. Revisão de proposta d87970e701f0. Roteiro no manual existente; não encerra critério por instalação.",oportunidades,"12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada | 19/10/2026 — conta simples e estados de pesquisa, QA; activo preservado",,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Services/OpportunityManagement.php; app/Services/OpportunityResources.php; resources/js/pages/management/opportunity-draft.tsx — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"OpportunityManagementTest, OpportunityResourcesTest, OpportunityOriginReviewTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, +[PLANO-P1-P6-20261019] Plano Tempo: 27–46 h disponibilização; P7 e desenvolvimento separados. Inclusão 36–39 expressa para decisão; sem publicação automática. Revisão de proposta d87970e701f0. Roteiro no manual existente; não encerra critério por instalação. | 29/10/2026 — ergonomia do catálogo autorizada pela Tempo: inventário prévio preserva pesquisa AND, hierarquia territorial, moedas sem conversão, preparação/históricos, cinco vistas, CSV, favoritos, comparação, selecção/dossier, paginação e fichas de corredores/clusters/âncoras. Não há perda funcional confirmada neste delta de apresentação; disponibilidade no destino não inferida. Reutiliza provas de selectores 22/10, agronegócio/selecção múltipla 23/10 e corredor/percurso 27/10. Preparação local; sem schema, dados, configuração ou permissões novos. Manual: adenda 29/10/2026 — ergonomia do catálogo. | 29/10/2026 — delta visual local verificado: tipos/build QA aprovados; navegador 320/390/768/1024/1440px sem transbordo, filtros expandidos sem corte, descrições/avisos completos, teclado, contexto conservado, escolha/dossier, comparação quatro, cinco vistas e 29 fichas acessíveis; zero erros JS. Prévia com HTTP simulado e documentos públicos locais, sem base; não prova backend/autenticação ou disponibilidade activa. Recibo docs/investmoz/unification/catalogue-layout-qa-20261029.json; critérios globais e aceitação anterior preservados. Ajuste subsequente: Mais filtros/Menos filtros acompanha a abertura; clique/teclado e escolhas conservadas demonstrados no componente React. Pedido Tempo: títulos e destaques em vermelho no catálogo; CSS validado sintacticamente, alteração local.",oportunidades,"12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada | 19/10/2026 — conta simples e estados de pesquisa, QA; activo preservado | 29/10/2026 — ergonomia do catálogo autorizada pela Tempo: inventário prévio preserva pesquisa AND, hierarquia territorial, moedas sem conversão, preparação/históricos, cinco vistas, CSV, favoritos, comparação, selecção/dossier, paginação e fichas de corredores/clusters/âncoras. Não há perda funcional confirmada neste delta de apresentação; disponibilidade no destino não inferida. Reutiliza provas de selectores 22/10, agronegócio/selecção múltipla 23/10 e corredor/percurso 27/10. Preparação local; sem schema, dados, configuração ou permissões novos. Manual: adenda 29/10/2026 — ergonomia do catálogo.",,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Services/OpportunityManagement.php; app/Services/OpportunityResources.php; resources/js/pages/management/opportunity-draft.tsx — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"OpportunityManagementTest, OpportunityResourcesTest, OpportunityOriginReviewTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, RF-MN-011,Guardar pesquisas e oportunidades favoritas.,upgrade v4 SHA f0b9815…; p. 2997; requirements-audit.csv | portal do investidor\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 613 | portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 3449 | portal do investidor\Portal V4\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 620 | portal do investidor\Portal V4\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 2254 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 3449,oportunidades,/api/v1/business-opportunities; /api/v1/business-opportunities/{slug}; /investidor/terra-duat; /investidor/terra-duat/novo; /investidor/terra-duat/{id}; /investidor/terra-duat/{id}/actualizacoes; /investidor/terra-duat/{id}/documentos; /investidor/terra-duat/{id}/documentos/{attachment}; /investidor/terra-duat/{id}/editar; /investidor/terra-duat/{id}/imprimir; /investidor/terra-duat/{id}/solicitar-apoio; /management/opportunities,"OpportunityManagement, OpportunityCanonicalContract/Response, OpportunityReviewMateriality, PortalProfileAccess, OpportunityResources. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Reconciliar contrato/cláusula e provas por categoria; completar apenas falha/variante executável identificada. Response normativo não é completo. Critério individual original preservado; cobertura atual ainda não individualizada.,"030000→040000 já instalados; contratos/resources existentes, sessão/MFA, ClamD e worker para ficheiros; gates das seis categorias ON. Variantes modulares/offers continuam separadas. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","RF-MN-011: Utilizador pode criar, editar e eliminar preferências e receber alertas autorizados. | MASTER-471012ab-0057: Guardar pesquisas e oportunidades favoritas. | MASTER-e1169a77-0207: Guardar pesquisas e oportunidades favoritas. | MASTER-f70ce307-0063: Guardar pesquisas e oportunidades favoritas. | MASTER-51b8f0ad-0143: Guardar pesquisas e oportunidades favoritas. | MASTER-edece80c-0207: Guardar pesquisas e oportunidades favoritas.",P2,RF-MN-011: Relatório 25/09 conservado; estado histórico não promove conclusão | MASTER-471012ab-0057: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-e1169a77-0207: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-f70ce307-0063: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-51b8f0ad-0143: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0207: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,RF-MN-011 | MASTER-471012ab-0057 | MASTER-e1169a77-0207 | MASTER-f70ce307-0063 | MASTER-51b8f0ad-0143 | MASTER-edece80c-0207,6,"[{""id"":""RF-MN-011"",""pedido"":""Guardar pesquisas e oportunidades favoritas."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 2997; requirements-audit.csv""],""aceitacao"":""Utilizador pode criar, editar e eliminar preferências e receber alertas autorizados."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""oportunidades""},{""id"":""MASTER-471012ab-0057"",""pedido"":""Guardar pesquisas e oportunidades favoritas."",""fontes"":[""portal do investidor\\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 613""],""aceitacao"":""Guardar pesquisas e oportunidades favoritas."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""oportunidades""},{""id"":""MASTER-e1169a77-0207"",""pedido"":""Guardar pesquisas e oportunidades favoritas."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 3449""],""aceitacao"":""Guardar pesquisas e oportunidades favoritas."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""oportunidades""},{""id"":""MASTER-f70ce307-0063"",""pedido"":""Guardar pesquisas e oportunidades favoritas."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 620""],""aceitacao"":""Guardar pesquisas e oportunidades favoritas."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""oportunidades""},{""id"":""MASTER-51b8f0ad-0143"",""pedido"":""Guardar pesquisas e oportunidades favoritas."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 2254""],""aceitacao"":""Guardar pesquisas e oportunidades favoritas."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""oportunidades""},{""id"":""MASTER-edece80c-0207"",""pedido"":""Guardar pesquisas e oportunidades favoritas."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 3449""],""aceitacao"":""Guardar pesquisas e oportunidades favoritas."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""oportunidades""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.opportunities: 6 registos; public.opportunity_images: tabela ausente; public.opportunity_documents: tabela ausente; public.opportunity_location_drafts: tabela ausente,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Reconciliar contrato/cláusula e provas por categoria; completar apenas falha/variante executável identificada. Response normativo não é completo. Critério individual original preservado; cobertura atual ainda não individualizada.,"OpportunityManagement, OpportunityCanonicalContract/Response, OpportunityReviewMateriality, PortalProfileAccess, OpportunityResources","030000→040000 já instalados; contratos/resources existentes, sessão/MFA, ClamD e worker para ficheiros; gates das seis categorias ON. Variantes modulares/offers continuam separadas.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: oportunidades. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,oportunidades,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Services/OpportunityManagement.php; app/Services/OpportunityResources.php; resources/js/pages/management/opportunity-draft.tsx — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"OpportunityManagementTest, OpportunityResourcesTest, OpportunityOriginReviewTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, RF-MN-012,Calcular correspondência entre oferta e procura.,upgrade v4 SHA f0b9815…; p. 3001; requirements-audit.csv,governação/outros,/api/v1/investment/admin/interests/{interest}/status; /management/history; /management/interests; /management/interests/{interest}; /management/interests/{interest}/consent/contact; /management/interests/{interest}/consent/proponent; /management/opportunities; /management/opportunities/create; /management/opportunities/drafts; /management/opportunities/{id}/draft; /management/opportunities/{id}/edit; /management/opportunities/{id}/lifecycle,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","RF-MN-012: Condições eliminatórias são avaliadas primeiro; pontuação guarda pesos, critérios, versão e explicação.",P2,RF-MN-012: Relatório 25/09 conservado; estado histórico não promove conclusão,RF-MN-012,1,"[{""id"":""RF-MN-012"",""pedido"":""Calcular correspondência entre oferta e procura."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 3001; requirements-audit.csv""],""aceitacao"":""Condições eliminatórias são avaliadas primeiro; pontuação guarda pesos, critérios, versão e explicação."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""governação/outros""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,Requisito transversal; consultar estado-ativo-after.json,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer","Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: governação e demais cláusulas. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,governação e demais cláusulas,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",AGENTS.md — componentes do domínio encontrados; correspondência integral deste requisito não presumida,; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, RF-MN-013,Permitir revisão humana da correspondência.,upgrade v4 SHA f0b9815…; p. 3005; requirements-audit.csv | portal do investidor\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 621 | portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 3457 | portal do investidor\Portal V4\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 628 | portal do investidor\Portal V4\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 2262 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 3457,governação/outros,/api/v1/investment/admin/interests/{interest}/status; /management/history; /management/interests; /management/interests/{interest}; /management/interests/{interest}/consent/contact; /management/interests/{interest}/consent/proponent; /management/opportunities; /management/opportunities/create; /management/opportunities/drafts; /management/opportunities/{id}/draft; /management/opportunities/{id}/edit; /management/opportunities/{id}/lifecycle,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.",RF-MN-013: Nenhum convite externo é enviado sem aprovação do gestor; decisão e fundamento ficam auditáveis. | MASTER-471012ab-0058: Permitir revisão humana da correspondência. | MASTER-e1169a77-0208: Permitir revisão humana da correspondência. | MASTER-f70ce307-0064: Permitir revisão humana da correspondência. | MASTER-51b8f0ad-0144: Permitir revisão humana da correspondência. | MASTER-edece80c-0208: Permitir revisão humana da correspondência.,P2,RF-MN-013: Relatório 25/09 conservado; estado histórico não promove conclusão | MASTER-471012ab-0058: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-e1169a77-0208: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-f70ce307-0064: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-51b8f0ad-0144: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0208: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,RF-MN-013 | MASTER-471012ab-0058 | MASTER-e1169a77-0208 | MASTER-f70ce307-0064 | MASTER-51b8f0ad-0144 | MASTER-edece80c-0208,6,"[{""id"":""RF-MN-013"",""pedido"":""Permitir revisão humana da correspondência."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 3005; requirements-audit.csv""],""aceitacao"":""Nenhum convite externo é enviado sem aprovação do gestor; decisão e fundamento ficam auditáveis."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""governação/outros""},{""id"":""MASTER-471012ab-0058"",""pedido"":""Permitir revisão humana da correspondência."",""fontes"":[""portal do investidor\\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 621""],""aceitacao"":""Permitir revisão humana da correspondência."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-e1169a77-0208"",""pedido"":""Permitir revisão humana da correspondência."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 3457""],""aceitacao"":""Permitir revisão humana da correspondência."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-f70ce307-0064"",""pedido"":""Permitir revisão humana da correspondência."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 628""],""aceitacao"":""Permitir revisão humana da correspondência."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-51b8f0ad-0144"",""pedido"":""Permitir revisão humana da correspondência."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 2262""],""aceitacao"":""Permitir revisão humana da correspondência."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-edece80c-0208"",""pedido"":""Permitir revisão humana da correspondência."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 3457""],""aceitacao"":""Permitir revisão humana da correspondência."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,Requisito transversal; consultar estado-ativo-after.json,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer","Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: governação e demais cláusulas. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,governação e demais cláusulas,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",AGENTS.md — componentes do domínio encontrados; correspondência integral deste requisito não presumida,; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, @@ -250,7 +250,7 @@ RF-MON-011,"Separação mínima entre criação, aprovação, emissão, recebime RF-MON-012,"Painéis distinguem previsto, apurado, aprovado, facturado, recebido, vencido, estornado e disputado. Acesso varia por função.",upgrade v4 SHA f0b9815…; p. 3367; requirements-audit.csv,governação/outros,/api/v1/investment/admin/interests/{interest}/status; /management/history; /management/interests; /management/interests/{interest}; /management/interests/{interest}/consent/contact; /management/interests/{interest}/consent/proponent; /management/opportunities; /management/opportunities/create; /management/opportunities/drafts; /management/opportunities/{id}/draft; /management/opportunities/{id}/edit; /management/opportunities/{id}/lifecycle,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","RF-MON-012: Entrada: contratos, comissões, facturas, pagamentos, estornos e dimensões. Saída: indicadores, listas reconciliáveis e exportações protegidas.",P2,RF-MON-012: Relatório 25/09 conservado; estado histórico não promove conclusão,RF-MON-012,1,"[{""id"":""RF-MON-012"",""pedido"":""Painéis distinguem previsto, apurado, aprovado, facturado, recebido, vencido, estornado e disputado. Acesso varia por função."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 3367; requirements-audit.csv""],""aceitacao"":""Entrada: contratos, comissões, facturas, pagamentos, estornos e dimensões. Saída: indicadores, listas reconciliáveis e exportações protegidas."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""governação/outros""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,Requisito transversal; consultar estado-ativo-after.json,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer","Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: governação e demais cláusulas. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,governação e demais cláusulas,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",AGENTS.md — componentes do domínio encontrados; correspondência integral deste requisito não presumida,; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, RF-PII-001,Importar projectos por folha estruturada ou API.,upgrade v4 SHA f0b9815…; p. 3939; requirements-audit.csv,governação/outros,/api/v1/investment/admin/interests/{interest}/status; /management/history; /management/interests; /management/interests/{interest}; /management/interests/{interest}/consent/contact; /management/interests/{interest}/consent/proponent; /management/opportunities; /management/opportunities/create; /management/opportunities/drafts; /management/opportunities/{id}/draft; /management/opportunities/{id}/edit; /management/opportunities/{id}/lifecycle,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","RF-PII-001: O sistema valida campos, identifica duplicados, gera relatório de erros e preserva código e fonte.",P2,RF-PII-001: Relatório 25/09 conservado; estado histórico não promove conclusão,RF-PII-001,1,"[{""id"":""RF-PII-001"",""pedido"":""Importar projectos por folha estruturada ou API."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 3939; requirements-audit.csv""],""aceitacao"":""O sistema valida campos, identifica duplicados, gera relatório de erros e preserva código e fonte."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""governação/outros""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,Requisito transversal; consultar estado-ativo-after.json,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer","Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: governação e demais cláusulas. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,governação e demais cláusulas,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",AGENTS.md — componentes do domínio encontrados; correspondência integral deste requisito não presumida,; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, RF-PII-002,Gerir versões e validação institucional.,upgrade v4 SHA f0b9815…; p. 3942; requirements-audit.csv,Balcão/orientação,/balcao-virtual/contextos; /balcao-virtual/dossiers; /balcao-virtual/dossiers/{id}; /balcao-virtual/dossiers/{id}/documentos; /balcao-virtual/dossiers/{id}/documentos/{document}; /balcao-virtual/dossiers/{id}/documentos/{document}/conferencia; /balcao-virtual/dossiers/{id}/etapas; /balcao-virtual/dossiers/{id}/fontes; /balcao-virtual/dossiers/{id}/orientacao; /balcao-virtual/dossiers/{id}/pedidos; /balcao-virtual/dossiers/{id}/pressupostos; /balcao-virtual/dossiers/{id}/recomendacoes,"VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Pedido contextual→gravar→submeter→nova sessão→gestor→mensagem/documentos/resultado, reaproveitando A/B. Critério individual original preservado; cobertura atual ainda não individualizada.","Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","RF-PII-002: Cada publicação identifica versão, data, entidade promotora, aprovador e histórico de alterações.",P2,RF-PII-002: Relatório 25/09 conservado; estado histórico não promove conclusão,RF-PII-002,1,"[{""id"":""RF-PII-002"",""pedido"":""Gerir versões e validação institucional."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 3942; requirements-audit.csv""],""aceitacao"":""Cada publicação identifica versão, data, entidade promotora, aprovador e histórico de alterações."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""Balcão/orientação""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.desk_cases: 1 registos; public.desk_requests: 0 registos; public.desk_institutional_links: 0 registos; public.desk_messages: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","Pedido contextual→gravar→submeter→nova sessão→gestor→mensagem/documentos/resultado, reaproveitando A/B. Critério individual original preservado; cobertura atual ainda não individualizada.","VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento","Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: balcão. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,balcão,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Services/VirtualDesk.php; app/Services/Ai/InvestorGuidance.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,InvestorGuidanceTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, -RF-PII-003,Publicar catálogo pesquisável e comparável.,upgrade v4 SHA f0b9815…; p. 3945; requirements-audit.csv | portal do investidor\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 1577 | portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 4426 | portal do investidor\Portal V4\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 1579 | portal do investidor\Portal V4\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 3213 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 4426,governação/outros,/api/v1/investment/admin/interests/{interest}/status; /management/history; /management/interests; /management/interests/{interest}; /management/interests/{interest}/consent/contact; /management/interests/{interest}/consent/proponent; /management/opportunities; /management/opportunities/create; /management/opportunities/drafts; /management/opportunities/{id}/draft; /management/opportunities/{id}/edit; /management/opportunities/{id}/lifecycle,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","RF-PII-003: O utilizador filtra por sector, território, valor, fase e modalidade e compara projectos seleccionados. | MASTER-471012ab-0137: Publicar catálogo pesquisável e comparável. | MASTER-e1169a77-0290: Publicar catálogo pesquisável e comparável. | MASTER-f70ce307-0146: Publicar catálogo pesquisável e comparável. | MASTER-51b8f0ad-0226: Publicar catálogo pesquisável e comparável. | MASTER-edece80c-0290: Publicar catálogo pesquisável e comparável.",P2,RF-PII-003: Relatório 25/09 conservado; estado histórico não promove conclusão | MASTER-471012ab-0137: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-e1169a77-0290: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-f70ce307-0146: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-51b8f0ad-0226: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0290: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,RF-PII-003 | MASTER-471012ab-0137 | MASTER-e1169a77-0290 | MASTER-f70ce307-0146 | MASTER-51b8f0ad-0226 | MASTER-edece80c-0290,6,"[{""id"":""RF-PII-003"",""pedido"":""Publicar catálogo pesquisável e comparável."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 3945; requirements-audit.csv""],""aceitacao"":""O utilizador filtra por sector, território, valor, fase e modalidade e compara projectos seleccionados."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""governação/outros""},{""id"":""MASTER-471012ab-0137"",""pedido"":""Publicar catálogo pesquisável e comparável."",""fontes"":[""portal do investidor\\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 1577""],""aceitacao"":""Publicar catálogo pesquisável e comparável."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-e1169a77-0290"",""pedido"":""Publicar catálogo pesquisável e comparável."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 4426""],""aceitacao"":""Publicar catálogo pesquisável e comparável."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-f70ce307-0146"",""pedido"":""Publicar catálogo pesquisável e comparável."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 1579""],""aceitacao"":""Publicar catálogo pesquisável e comparável."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-51b8f0ad-0226"",""pedido"":""Publicar catálogo pesquisável e comparável."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 3213""],""aceitacao"":""Publicar catálogo pesquisável e comparável."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-edece80c-0290"",""pedido"":""Publicar catálogo pesquisável e comparável."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 4426""],""aceitacao"":""Publicar catálogo pesquisável e comparável."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,Requisito transversal; consultar estado-ativo-after.json,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer","Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: governação e demais cláusulas. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,governação e demais cláusulas,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",AGENTS.md — componentes do domínio encontrados; correspondência integral deste requisito não presumida,; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, +RF-PII-003,Publicar catálogo pesquisável e comparável.,upgrade v4 SHA f0b9815…; p. 3945; requirements-audit.csv | portal do investidor\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 1577 | portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 4426 | portal do investidor\Portal V4\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 1579 | portal do investidor\Portal V4\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 3213 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 4426,governação/outros,/api/v1/investment/admin/interests/{interest}/status; /management/history; /management/interests; /management/interests/{interest}; /management/interests/{interest}/consent/contact; /management/interests/{interest}/consent/proponent; /management/opportunities; /management/opportunities/create; /management/opportunities/drafts; /management/opportunities/{id}/draft; /management/opportunities/{id}/edit; /management/opportunities/{id}/lifecycle,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","RF-PII-003: O utilizador filtra por sector, território, valor, fase e modalidade e compara projectos seleccionados. | MASTER-471012ab-0137: Publicar catálogo pesquisável e comparável. | MASTER-e1169a77-0290: Publicar catálogo pesquisável e comparável. | MASTER-f70ce307-0146: Publicar catálogo pesquisável e comparável. | MASTER-51b8f0ad-0226: Publicar catálogo pesquisável e comparável. | MASTER-edece80c-0290: Publicar catálogo pesquisável e comparável.",P2,RF-PII-003: Relatório 25/09 conservado; estado histórico não promove conclusão | MASTER-471012ab-0137: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-e1169a77-0290: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-f70ce307-0146: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-51b8f0ad-0226: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0290: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,RF-PII-003 | MASTER-471012ab-0137 | MASTER-e1169a77-0290 | MASTER-f70ce307-0146 | MASTER-51b8f0ad-0226 | MASTER-edece80c-0290,6,"[{""id"":""RF-PII-003"",""pedido"":""Publicar catálogo pesquisável e comparável."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 3945; requirements-audit.csv""],""aceitacao"":""O utilizador filtra por sector, território, valor, fase e modalidade e compara projectos seleccionados."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""governação/outros""},{""id"":""MASTER-471012ab-0137"",""pedido"":""Publicar catálogo pesquisável e comparável."",""fontes"":[""portal do investidor\\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 1577""],""aceitacao"":""Publicar catálogo pesquisável e comparável."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-e1169a77-0290"",""pedido"":""Publicar catálogo pesquisável e comparável."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 4426""],""aceitacao"":""Publicar catálogo pesquisável e comparável."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-f70ce307-0146"",""pedido"":""Publicar catálogo pesquisável e comparável."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 1579""],""aceitacao"":""Publicar catálogo pesquisável e comparável."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-51b8f0ad-0226"",""pedido"":""Publicar catálogo pesquisável e comparável."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 3213""],""aceitacao"":""Publicar catálogo pesquisável e comparável."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-edece80c-0290"",""pedido"":""Publicar catálogo pesquisável e comparável."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 4426""],""aceitacao"":""Publicar catálogo pesquisável e comparável."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,Requisito transversal; consultar estado-ativo-after.json,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer","Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: governação e demais cláusulas. Esforço de código adicional só após lacuna reproduzida.,"outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual. | 29/10/2026 — ergonomia do catálogo autorizada pela Tempo: inventário prévio preserva pesquisa AND, hierarquia territorial, moedas sem conversão, preparação/históricos, cinco vistas, CSV, favoritos, comparação, selecção/dossier, paginação e fichas de corredores/clusters/âncoras. Não há perda funcional confirmada neste delta de apresentação; disponibilidade no destino não inferida. Reutiliza provas de selectores 22/10, agronegócio/selecção múltipla 23/10 e corredor/percurso 27/10. Preparação local; sem schema, dados, configuração ou permissões novos. Manual: adenda 29/10/2026 — ergonomia do catálogo. | 29/10/2026 — delta visual local verificado: tipos/build QA aprovados; navegador 320/390/768/1024/1440px sem transbordo, filtros expandidos sem corte, descrições/avisos completos, teclado, contexto conservado, escolha/dossier, comparação quatro, cinco vistas e 29 fichas acessíveis; zero erros JS. Prévia com HTTP simulado e documentos públicos locais, sem base; não prova backend/autenticação ou disponibilidade activa. Recibo docs/investmoz/unification/catalogue-layout-qa-20261029.json; critérios globais e aceitação anterior preservados. Ajuste subsequente: Mais filtros/Menos filtros acompanha a abertura; clique/teclado e escolhas conservadas demonstrados no componente React. Pedido Tempo: títulos e destaques em vermelho no catálogo; CSS validado sintacticamente, alteração local.",governação e demais cláusulas,"12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada | 29/10/2026 — ergonomia do catálogo autorizada pela Tempo: inventário prévio preserva pesquisa AND, hierarquia territorial, moedas sem conversão, preparação/históricos, cinco vistas, CSV, favoritos, comparação, selecção/dossier, paginação e fichas de corredores/clusters/âncoras. Não há perda funcional confirmada neste delta de apresentação; disponibilidade no destino não inferida. Reutiliza provas de selectores 22/10, agronegócio/selecção múltipla 23/10 e corredor/percurso 27/10. Preparação local; sem schema, dados, configuração ou permissões novos. Manual: adenda 29/10/2026 — ergonomia do catálogo.",,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",AGENTS.md — componentes do domínio encontrados; correspondência integral deste requisito não presumida,; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, RF-PII-004,Gerar páginas e fichas promocionais.,upgrade v4 SHA f0b9815…; p. 3948; requirements-audit.csv,governação/outros,/api/v1/investment/admin/interests/{interest}/status; /management/history; /management/interests; /management/interests/{interest}; /management/interests/{interest}/consent/contact; /management/interests/{interest}/consent/proponent; /management/opportunities; /management/opportunities/create; /management/opportunities/drafts; /management/opportunities/{id}/draft; /management/opportunities/{id}/edit; /management/opportunities/{id}/lifecycle,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.",RF-PII-004: Conteúdo aprovado pode ser publicado na Web e exportado nos idiomas disponíveis sem dados reservados.,P2,RF-PII-004: Relatório 25/09 conservado; estado histórico não promove conclusão,RF-PII-004,1,"[{""id"":""RF-PII-004"",""pedido"":""Gerar páginas e fichas promocionais."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 3948; requirements-audit.csv""],""aceitacao"":""Conteúdo aprovado pode ser publicado na Web e exportado nos idiomas disponíveis sem dados reservados."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""governação/outros""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,Requisito transversal; consultar estado-ativo-after.json,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer","Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: governação e demais cláusulas. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,governação e demais cláusulas,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",AGENTS.md — componentes do domínio encontrados; correspondência integral deste requisito não presumida,; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, RF-PII-005,Registar manifestações de interesse por projecto.,upgrade v4 SHA f0b9815…; p. 3951; requirements-audit.csv | portal do investidor\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 1583 | portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 4432 | portal do investidor\Portal V4\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 1585 | portal do investidor\Portal V4\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 3219 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 4432,CRM/solicitações,//; /Simulador; /api/v1/documents/recommendations; /api/v1/investment/submissions; /api/v1/investment/submissions/{id}; /api/v1/investment/submissions/{id}/attachments; /api/v1/investment/submissions/{id}/attachments/{attachment}; /api/v1/investment/submissions/{id}/submit; /apoio; /balcao-virtual; /como-investir; /documentos,"investors/contacts/leads/tasks, OpportunityContacts, acompanhamento interno existente. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Converter sem duplicar, tarefa/responsável/próxima ação recuperáveis; corrigir apenas falha comprovada. Critério individual original preservado; cobertura atual ainda não individualizada.",Relações mestre/contexto e autorizações; não depende de CRM externo. C131 sóQA. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,"RF-PII-005: A submissão gera protocolo, associa projecto e campanha e cria contacto ou oportunidade no CRM. | MASTER-471012ab-0138: Registar manifestações de interesse por projecto. | MASTER-e1169a77-0291: Registar manifestações de interesse por projecto. | MASTER-f70ce307-0147: Registar manifestações de interesse por projecto. | MASTER-51b8f0ad-0227: Registar manifestações de interesse por projecto. | MASTER-edece80c-0291: Registar manifestações de interesse por projecto.",P2,RF-PII-005: Relatório 25/09 conservado; estado histórico não promove conclusão | MASTER-471012ab-0138: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-e1169a77-0291: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-f70ce307-0147: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-51b8f0ad-0227: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0291: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,RF-PII-005 | MASTER-471012ab-0138 | MASTER-e1169a77-0291 | MASTER-f70ce307-0147 | MASTER-51b8f0ad-0227 | MASTER-edece80c-0291,6,"[{""id"":""RF-PII-005"",""pedido"":""Registar manifestações de interesse por projecto."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 3951; requirements-audit.csv""],""aceitacao"":""A submissão gera protocolo, associa projecto e campanha e cria contacto ou oportunidade no CRM."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""CRM/solicitações""},{""id"":""MASTER-471012ab-0138"",""pedido"":""Registar manifestações de interesse por projecto."",""fontes"":[""portal do investidor\\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 1583""],""aceitacao"":""Registar manifestações de interesse por projecto."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""CRM/solicitações""},{""id"":""MASTER-e1169a77-0291"",""pedido"":""Registar manifestações de interesse por projecto."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 4432""],""aceitacao"":""Registar manifestações de interesse por projecto."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""CRM/solicitações""},{""id"":""MASTER-f70ce307-0147"",""pedido"":""Registar manifestações de interesse por projecto."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 1585""],""aceitacao"":""Registar manifestações de interesse por projecto."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""CRM/solicitações""},{""id"":""MASTER-51b8f0ad-0227"",""pedido"":""Registar manifestações de interesse por projecto."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 3219""],""aceitacao"":""Registar manifestações de interesse por projecto."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""CRM/solicitações""},{""id"":""MASTER-edece80c-0291"",""pedido"":""Registar manifestações de interesse por projecto."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 4432""],""aceitacao"":""Registar manifestações de interesse por projecto."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""CRM/solicitações""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.interest_requests: 4 registos; public.leads: 0 registos; public.investors: 3 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","Converter sem duplicar, tarefa/responsável/próxima ação recuperáveis; corrigir apenas falha comprovada. Critério individual original preservado; cobertura atual ainda não individualizada.","investors/contacts/leads/tasks, OpportunityContacts, acompanhamento interno existente",Relações mestre/contexto e autorizações; não depende de CRM externo. C131 sóQA.,Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: acompanhamento. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,acompanhamento,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Http/Controllers/CrmController.php; app/Services/DeclaredOriginStatistics.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"InterestSubmissionTest, InvestmentWorkspaceTest, PortalOriginCompatibilityTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, RF-PII-006,Qualificar e pontuar potenciais investidores.,upgrade v4 SHA f0b9815…; p. 3954; requirements-audit.csv,governação/outros,/api/v1/investment/admin/interests/{interest}/status; /management/history; /management/interests; /management/interests/{interest}; /management/interests/{interest}/consent/contact; /management/interests/{interest}/consent/proponent; /management/opportunities; /management/opportunities/create; /management/opportunities/drafts; /management/opportunities/{id}/draft; /management/opportunities/{id}/edit; /management/opportunities/{id}/lifecycle,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","RF-PII-006: A pontuação considera capacidade, experiência, prazo, modalidade e adequação, mantendo explicação e revisão humana.",P2,RF-PII-006: Relatório 25/09 conservado; estado histórico não promove conclusão,RF-PII-006,1,"[{""id"":""RF-PII-006"",""pedido"":""Qualificar e pontuar potenciais investidores."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 3954; requirements-audit.csv""],""aceitacao"":""A pontuação considera capacidade, experiência, prazo, modalidade e adequação, mantendo explicação e revisão humana."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""governação/outros""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,Requisito transversal; consultar estado-ativo-after.json,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer","Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: governação e demais cláusulas. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,governação e demais cláusulas,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",AGENTS.md — componentes do domínio encontrados; correspondência integral deste requisito não presumida,; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, @@ -329,7 +329,7 @@ RNF-EDU-004,Disponibilidade — Percentagem de tempo de serviço mensal,educatio RNF-EDU-005,Escalabilidade — Consistência sob concorrência e backlog,education/nonfunctional.csv,educação,/management/education; /management/education/catalog/{kind}; /management/education/demands/{id}/analysis; /management/education/demands/{id}/investment; /management/education/{kind}; /management/education/{kind}/{id}/review,"Cursos, necessidades/capacidades, atores, catálogo e políticas existentes. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Separar catálogo existente de procura/capacidade e painel por ator; preparar execução futura sem cadastros paralelos. Critério individual original preservado; cobertura atual ainda não individualizada.,Novas jornadas não são iniciadas nesta auditoria. Dados reais/perfis/rascunho incompleto pendentes. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,RNF-EDU-005: 0 duplicados em 100 reenvios concorrentes; proposta drenagem de 1000 eventos em <=15min sem dependência externa indisponível,P2,RNF-EDU-005: Limiar proposto não é resultado medido,RNF-EDU-005,1,"[{""id"":""RNF-EDU-005"",""pedido"":""Escalabilidade — Consistência sob concorrência e backlog"",""fontes"":[""education/nonfunctional.csv""],""aceitacao"":""0 duplicados em 100 reenvios concorrentes; proposta drenagem de 1000 eventos em <=15min sem dependência externa indisponível"",""estado"":""parcial"",""variantes"":""Limiar proposto não é resultado medido"",""modulo"":""educação""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.labour_demands: 0 registos; public.training_capacities: 0 registos; public.education_opportunities: 0 registos; public.education_investment_proposals: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Separar catálogo existente de procura/capacidade e painel por ator; preparar execução futura sem cadastros paralelos. Critério individual original preservado; cobertura atual ainda não individualizada.,"Cursos, necessidades/capacidades, atores, catálogo e políticas existentes",Novas jornadas não são iniciadas nesta auditoria. Dados reais/perfis/rascunho incompleto pendentes.,Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: educação. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,educação,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Http/Controllers/EducationController.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"EducationTest, SkillsEducationSchemaTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, RNF-EDU-006,Acessibilidade — Barreiras no percurso crítico,education/nonfunctional.csv,educação,/management/education; /management/education/catalog/{kind}; /management/education/demands/{id}/analysis; /management/education/demands/{id}/investment; /management/education/{kind}; /management/education/{kind}/{id}/review,"Cursos, necessidades/capacidades, atores, catálogo e políticas existentes. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Separar catálogo existente de procura/capacidade e painel por ator; preparar execução futura sem cadastros paralelos. Critério individual original preservado; cobertura atual ainda não individualizada.,Novas jornadas não são iniciadas nesta auditoria. Dados reais/perfis/rascunho incompleto pendentes. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,RNF-EDU-006: 0 bloqueios de teclado; rótulos/erros legíveis; proposta WCAG 2.2 AA a validar com auditoria,P2,RNF-EDU-006: Limiar proposto não é resultado medido,RNF-EDU-006,1,"[{""id"":""RNF-EDU-006"",""pedido"":""Acessibilidade — Barreiras no percurso crítico"",""fontes"":[""education/nonfunctional.csv""],""aceitacao"":""0 bloqueios de teclado; rótulos/erros legíveis; proposta WCAG 2.2 AA a validar com auditoria"",""estado"":""parcial"",""variantes"":""Limiar proposto não é resultado medido"",""modulo"":""educação""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.labour_demands: 0 registos; public.training_capacities: 0 registos; public.education_opportunities: 0 registos; public.education_investment_proposals: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Separar catálogo existente de procura/capacidade e painel por ator; preparar execução futura sem cadastros paralelos. Critério individual original preservado; cobertura atual ainda não individualizada.,"Cursos, necessidades/capacidades, atores, catálogo e políticas existentes",Novas jornadas não são iniciadas nesta auditoria. Dados reais/perfis/rascunho incompleto pendentes.,Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: educação. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,educação,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Http/Controllers/EducationController.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"EducationTest, SkillsEducationSchemaTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, RNF-EDU-007,PT/EN — Cobertura de mensagens e estados críticos,education/nonfunctional.csv,educação,/management/education; /management/education/catalog/{kind}; /management/education/demands/{id}/analysis; /management/education/demands/{id}/investment; /management/education/{kind}; /management/education/{kind}/{id}/review,"Cursos, necessidades/capacidades, atores, catálogo e políticas existentes. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Separar catálogo existente de procura/capacidade e painel por ator; preparar execução futura sem cadastros paralelos. Critério individual original preservado; cobertura atual ainda não individualizada.,Novas jornadas não são iniciadas nesta auditoria. Dados reais/perfis/rascunho incompleto pendentes. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,RNF-EDU-007: 100% fluxos críticos PT/EN; 0 chaves de tradução em bruto,P2,RNF-EDU-007: Limiar proposto não é resultado medido,RNF-EDU-007,1,"[{""id"":""RNF-EDU-007"",""pedido"":""PT/EN — Cobertura de mensagens e estados críticos"",""fontes"":[""education/nonfunctional.csv""],""aceitacao"":""100% fluxos críticos PT/EN; 0 chaves de tradução em bruto"",""estado"":""parcial"",""variantes"":""Limiar proposto não é resultado medido"",""modulo"":""educação""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.labour_demands: 0 registos; public.training_capacities: 0 registos; public.education_opportunities: 0 registos; public.education_investment_proposals: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Separar catálogo existente de procura/capacidade e painel por ator; preparar execução futura sem cadastros paralelos. Critério individual original preservado; cobertura atual ainda não individualizada.,"Cursos, necessidades/capacidades, atores, catálogo e políticas existentes",Novas jornadas não são iniciadas nesta auditoria. Dados reais/perfis/rascunho incompleto pendentes.,Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: educação. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,educação,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Http/Controllers/EducationController.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"EducationTest, SkillsEducationSchemaTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, -RNF-EDU-008,Responsividade — Overflow e perda de acções,education/nonfunctional.csv,educação,/management/education; /management/education/catalog/{kind}; /management/education/demands/{id}/analysis; /management/education/demands/{id}/investment; /management/education/{kind}; /management/education/{kind}/{id}/review,"Cursos, necessidades/capacidades, atores, catálogo e políticas existentes. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Separar catálogo existente de procura/capacidade e painel por ator; preparar execução futura sem cadastros paralelos. Critério individual original preservado; cobertura atual ainda não individualizada.,Novas jornadas não são iniciadas nesta auditoria. Dados reais/perfis/rascunho incompleto pendentes. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,RNF-EDU-008: 0 overflow horizontal global a 360/390/768/1366px; tabelas com scroll local acessível,P2,RNF-EDU-008: Limiar proposto não é resultado medido,RNF-EDU-008,1,"[{""id"":""RNF-EDU-008"",""pedido"":""Responsividade — Overflow e perda de acções"",""fontes"":[""education/nonfunctional.csv""],""aceitacao"":""0 overflow horizontal global a 360/390/768/1366px; tabelas com scroll local acessível"",""estado"":""parcial"",""variantes"":""Limiar proposto não é resultado medido"",""modulo"":""educação""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.labour_demands: 0 registos; public.training_capacities: 0 registos; public.education_opportunities: 0 registos; public.education_investment_proposals: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Separar catálogo existente de procura/capacidade e painel por ator; preparar execução futura sem cadastros paralelos. Critério individual original preservado; cobertura atual ainda não individualizada.,"Cursos, necessidades/capacidades, atores, catálogo e políticas existentes",Novas jornadas não são iniciadas nesta auditoria. Dados reais/perfis/rascunho incompleto pendentes.,Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: educação. Esforço de código adicional só após lacuna reproduzida.,"outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual. | 21/10/2026: pedido expresso da Tempo para uma única navbar, sem retirar acessos; aplicação de AGENTS.md, decisões de 12/10/2026. Agrupamento Tempo, posições, breakpoint 1280px e altura 72px são escolhas de apresentação, não novas regras operacionais. Prova local isolada do header em tools/portal-header-qa.mjs e outputs/header-navbar-20261021/qa-results.json; não encerra o critério integral nem representa implantação no activo.",educação,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Http/Controllers/EducationController.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"EducationTest, SkillsEducationSchemaTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, +RNF-EDU-008,Responsividade — Overflow e perda de acções,education/nonfunctional.csv,educação,/management/education; /management/education/catalog/{kind}; /management/education/demands/{id}/analysis; /management/education/demands/{id}/investment; /management/education/{kind}; /management/education/{kind}/{id}/review,"Cursos, necessidades/capacidades, atores, catálogo e políticas existentes. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Separar catálogo existente de procura/capacidade e painel por ator; preparar execução futura sem cadastros paralelos. Critério individual original preservado; cobertura atual ainda não individualizada.,Novas jornadas não são iniciadas nesta auditoria. Dados reais/perfis/rascunho incompleto pendentes. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,RNF-EDU-008: 0 overflow horizontal global a 360/390/768/1366px; tabelas com scroll local acessível,P2,RNF-EDU-008: Limiar proposto não é resultado medido,RNF-EDU-008,1,"[{""id"":""RNF-EDU-008"",""pedido"":""Responsividade — Overflow e perda de acções"",""fontes"":[""education/nonfunctional.csv""],""aceitacao"":""0 overflow horizontal global a 360/390/768/1366px; tabelas com scroll local acessível"",""estado"":""parcial"",""variantes"":""Limiar proposto não é resultado medido"",""modulo"":""educação""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.labour_demands: 0 registos; public.training_capacities: 0 registos; public.education_opportunities: 0 registos; public.education_investment_proposals: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Separar catálogo existente de procura/capacidade e painel por ator; preparar execução futura sem cadastros paralelos. Critério individual original preservado; cobertura atual ainda não individualizada.,"Cursos, necessidades/capacidades, atores, catálogo e políticas existentes",Novas jornadas não são iniciadas nesta auditoria. Dados reais/perfis/rascunho incompleto pendentes.,Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: educação. Esforço de código adicional só após lacuna reproduzida.,"outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual. | 21/10/2026: pedido expresso da Tempo para uma única navbar, sem retirar acessos; aplicação de AGENTS.md, decisões de 12/10/2026. Agrupamento Tempo, posições, breakpoint 1280px e altura 72px são escolhas de apresentação, não novas regras operacionais. Prova local isolada do header em tools/portal-header-qa.mjs e outputs/header-navbar-20261021/qa-results.json; não encerra o critério integral nem representa implantação no activo. | 29/10/2026 — ergonomia do catálogo autorizada pela Tempo: inventário prévio preserva pesquisa AND, hierarquia territorial, moedas sem conversão, preparação/históricos, cinco vistas, CSV, favoritos, comparação, selecção/dossier, paginação e fichas de corredores/clusters/âncoras. Não há perda funcional confirmada neste delta de apresentação; disponibilidade no destino não inferida. Reutiliza provas de selectores 22/10, agronegócio/selecção múltipla 23/10 e corredor/percurso 27/10. Preparação local; sem schema, dados, configuração ou permissões novos. Manual: adenda 29/10/2026 — ergonomia do catálogo. | 29/10/2026 — delta visual local verificado: tipos/build QA aprovados; navegador 320/390/768/1024/1440px sem transbordo, filtros expandidos sem corte, descrições/avisos completos, teclado, contexto conservado, escolha/dossier, comparação quatro, cinco vistas e 29 fichas acessíveis; zero erros JS. Prévia com HTTP simulado e documentos públicos locais, sem base; não prova backend/autenticação ou disponibilidade activa. Recibo docs/investmoz/unification/catalogue-layout-qa-20261029.json; critérios globais e aceitação anterior preservados. Ajuste subsequente: Mais filtros/Menos filtros acompanha a abertura; clique/teclado e escolhas conservadas demonstrados no componente React. Pedido Tempo: títulos e destaques em vermelho no catálogo; CSS validado sintacticamente, alteração local.",educação,"12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada | 29/10/2026 — ergonomia do catálogo autorizada pela Tempo: inventário prévio preserva pesquisa AND, hierarquia territorial, moedas sem conversão, preparação/históricos, cinco vistas, CSV, favoritos, comparação, selecção/dossier, paginação e fichas de corredores/clusters/âncoras. Não há perda funcional confirmada neste delta de apresentação; disponibilidade no destino não inferida. Reutiliza provas de selectores 22/10, agronegócio/selecção múltipla 23/10 e corredor/percurso 27/10. Preparação local; sem schema, dados, configuração ou permissões novos. Manual: adenda 29/10/2026 — ergonomia do catálogo.",,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Http/Controllers/EducationController.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"EducationTest, SkillsEducationSchemaTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, RNF-EDU-009,Interoperabilidade — Validade de contratos e tipos,education/nonfunctional.csv,educação,/management/education; /management/education/catalog/{kind}; /management/education/demands/{id}/analysis; /management/education/demands/{id}/investment; /management/education/{kind}; /management/education/{kind}/{id}/review,"Cursos, necessidades/capacidades, atores, catálogo e políticas existentes. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Separar catálogo existente de procura/capacidade e painel por ator; preparar execução futura sem cadastros paralelos. Critério individual original preservado; cobertura atual ainda não individualizada.,Novas jornadas não são iniciadas nesta auditoria. Dados reais/perfis/rascunho incompleto pendentes. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,"RNF-EDU-009: 100% exemplos conformes; datas ISO, UUID, moeda/país normalizados; 0 breaking changes não versionadas",P2,RNF-EDU-009: Limiar proposto não é resultado medido,RNF-EDU-009,1,"[{""id"":""RNF-EDU-009"",""pedido"":""Interoperabilidade — Validade de contratos e tipos"",""fontes"":[""education/nonfunctional.csv""],""aceitacao"":""100% exemplos conformes; datas ISO, UUID, moeda/país normalizados; 0 breaking changes não versionadas"",""estado"":""parcial"",""variantes"":""Limiar proposto não é resultado medido"",""modulo"":""educação""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.labour_demands: 0 registos; public.training_capacities: 0 registos; public.education_opportunities: 0 registos; public.education_investment_proposals: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Separar catálogo existente de procura/capacidade e painel por ator; preparar execução futura sem cadastros paralelos. Critério individual original preservado; cobertura atual ainda não individualizada.,"Cursos, necessidades/capacidades, atores, catálogo e políticas existentes",Novas jornadas não são iniciadas nesta auditoria. Dados reais/perfis/rascunho incompleto pendentes.,Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: educação. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,educação,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Http/Controllers/EducationController.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"EducationTest, SkillsEducationSchemaTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, RNF-EDU-010,Observabilidade — Operações correlacionadas sem segredos,education/nonfunctional.csv,educação,/management/education; /management/education/catalog/{kind}; /management/education/demands/{id}/analysis; /management/education/demands/{id}/investment; /management/education/{kind}; /management/education/{kind}/{id}/review,"Cursos, necessidades/capacidades, atores, catálogo e políticas existentes. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Separar catálogo existente de procura/capacidade e painel por ator; preparar execução futura sem cadastros paralelos. Critério individual original preservado; cobertura atual ainda não individualizada.,Novas jornadas não são iniciadas nesta auditoria. Dados reais/perfis/rascunho incompleto pendentes. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,RNF-EDU-010: 100% mutações com correlation_id e actor; 0 tokens/PII nos eventos; proposta alerta em <=5min,P2,RNF-EDU-010: Limiar proposto não é resultado medido,RNF-EDU-010,1,"[{""id"":""RNF-EDU-010"",""pedido"":""Observabilidade — Operações correlacionadas sem segredos"",""fontes"":[""education/nonfunctional.csv""],""aceitacao"":""100% mutações com correlation_id e actor; 0 tokens/PII nos eventos; proposta alerta em <=5min"",""estado"":""parcial"",""variantes"":""Limiar proposto não é resultado medido"",""modulo"":""educação""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.labour_demands: 0 registos; public.training_capacities: 0 registos; public.education_opportunities: 0 registos; public.education_investment_proposals: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Separar catálogo existente de procura/capacidade e painel por ator; preparar execução futura sem cadastros paralelos. Critério individual original preservado; cobertura atual ainda não individualizada.,"Cursos, necessidades/capacidades, atores, catálogo e políticas existentes",Novas jornadas não são iniciadas nesta auditoria. Dados reais/perfis/rascunho incompleto pendentes.,Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: educação. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,educação,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Http/Controllers/EducationController.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"EducationTest, SkillsEducationSchemaTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, RNF-EDU-011,Backup — Cobertura e recuperabilidade,education/nonfunctional.csv,educação,/management/education; /management/education/catalog/{kind}; /management/education/demands/{id}/analysis; /management/education/demands/{id}/investment; /management/education/{kind}; /management/education/{kind}/{id}/review,"Cursos, necessidades/capacidades, atores, catálogo e políticas existentes. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Separar catálogo existente de procura/capacidade e painel por ator; preparar execução futura sem cadastros paralelos. Critério individual original preservado; cobertura atual ainda não individualizada.,Novas jornadas não são iniciadas nesta auditoria. Dados reais/perfis/rascunho incompleto pendentes. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,RNF-EDU-011: Proposta backup diário cifrado; 100% recursos críticos incluídos; restauro trimestral verificado,P1,RNF-EDU-011: Limiar proposto não é resultado medido,RNF-EDU-011,1,"[{""id"":""RNF-EDU-011"",""pedido"":""Backup — Cobertura e recuperabilidade"",""fontes"":[""education/nonfunctional.csv""],""aceitacao"":""Proposta backup diário cifrado; 100% recursos críticos incluídos; restauro trimestral verificado"",""estado"":""parcial"",""variantes"":""Limiar proposto não é resultado medido"",""modulo"":""educação""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.labour_demands: 0 registos; public.training_capacities: 0 registos; public.education_opportunities: 0 registos; public.education_investment_proposals: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Separar catálogo existente de procura/capacidade e painel por ator; preparar execução futura sem cadastros paralelos. Critério individual original preservado; cobertura atual ainda não individualizada.,"Cursos, necessidades/capacidades, atores, catálogo e políticas existentes",Novas jornadas não são iniciadas nesta auditoria. Dados reais/perfis/rascunho incompleto pendentes.,Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: educação. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,educação,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Http/Controllers/EducationController.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"EducationTest, SkillsEducationSchemaTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, @@ -637,7 +637,7 @@ MASTER-471012ab-0120,"Seleccionar componente, cultura ou serviço e manifestar i MASTER-471012ab-0121,"Nota editorial: custos, metas, maturidade, entidades responsáveis e disponibilidade para investimento devem ser confirmados com o MPD e a entidade de tutela antes da publicação. A ficha pública deve distinguir claramente informação oficial, estimativa, oportunidade complementar e chamada exploratória ao mercado.",portal do investidor\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 1444 | portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 4292 | portal do investidor\Portal V4\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 1446 | portal do investidor\Portal V4\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 3080 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 4292,oportunidades,/api/v1/business-opportunities; /api/v1/business-opportunities/{slug}; /investidor/terra-duat; /investidor/terra-duat/novo; /investidor/terra-duat/{id}; /investidor/terra-duat/{id}/actualizacoes; /investidor/terra-duat/{id}/documentos; /investidor/terra-duat/{id}/documentos/{attachment}; /investidor/terra-duat/{id}/editar; /investidor/terra-duat/{id}/imprimir; /investidor/terra-duat/{id}/solicitar-apoio; /management/opportunities,"OpportunityManagement, OpportunityCanonicalContract/Response, OpportunityReviewMateriality, PortalProfileAccess, OpportunityResources. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Reconciliar contrato/cláusula e provas por categoria; completar apenas falha/variante executável identificada. Response normativo não é completo. Critério individual original preservado; cobertura atual ainda não individualizada.,"030000→040000 já instalados; contratos/resources existentes, sessão/MFA, ClamD e worker para ficheiros; gates das seis categorias ON. Variantes modulares/offers continuam separadas. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","MASTER-471012ab-0121: Nota editorial: custos, metas, maturidade, entidades responsáveis e disponibilidade para investimento devem ser confirmados com o MPD e a entidade de tutela antes da publicação. A ficha pública deve distinguir claramente informação oficial, estimativa, oportunidade complementar e chamada exploratória ao mercado. | MASTER-e1169a77-0274: Nota editorial: custos, metas, maturidade, entidades responsáveis e disponibilidade para investimento devem ser confirmados com o MPD e a entidade de tutela antes da publicação. A ficha pública deve distinguir claramente informação oficial, estimativa, oportunidade complementar e chamada exploratória ao mercado. | MASTER-f70ce307-0130: Nota editorial: custos, metas, maturidade, entidades responsáveis e disponibilidade para investimento devem ser confirmados com o MPD e a entidade de tutela antes da publicação. A ficha pública deve distinguir claramente informação oficial, estimativa, oportunidade complementar e chamada exploratória ao mercado. | MASTER-51b8f0ad-0210: Nota editorial: custos, metas, maturidade, entidades responsáveis e disponibilidade para investimento devem ser confirmados com o MPD e a entidade de tutela antes da publicação. A ficha pública deve distinguir claramente informação oficial, estimativa, oportunidade complementar e chamada exploratória ao mercado. | MASTER-edece80c-0274: Nota editorial: custos, metas, maturidade, entidades responsáveis e disponibilidade para investimento devem ser confirmados com o MPD e a entidade de tutela antes da publicação. A ficha pública deve distinguir claramente informação oficial, estimativa, oportunidade complementar e chamada exploratória ao mercado.",P2,MASTER-471012ab-0121: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-e1169a77-0274: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-f70ce307-0130: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-51b8f0ad-0210: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0274: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-471012ab-0121 | MASTER-e1169a77-0274 | MASTER-f70ce307-0130 | MASTER-51b8f0ad-0210 | MASTER-edece80c-0274,5,"[{""id"":""MASTER-471012ab-0121"",""pedido"":""Nota editorial: custos, metas, maturidade, entidades responsáveis e disponibilidade para investimento devem ser confirmados com o MPD e a entidade de tutela antes da publicação. A ficha pública deve distinguir claramente informação oficial, estimativa, oportunidade complementar e chamada exploratória ao mercado."",""fontes"":[""portal do investidor\\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 1444""],""aceitacao"":""Nota editorial: custos, metas, maturidade, entidades responsáveis e disponibilidade para investimento devem ser confirmados com o MPD e a entidade de tutela antes da publicação. A ficha pública deve distinguir claramente informação oficial, estimativa, oportunidade complementar e chamada exploratória ao mercado."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""oportunidades""},{""id"":""MASTER-e1169a77-0274"",""pedido"":""Nota editorial: custos, metas, maturidade, entidades responsáveis e disponibilidade para investimento devem ser confirmados com o MPD e a entidade de tutela antes da publicação. A ficha pública deve distinguir claramente informação oficial, estimativa, oportunidade complementar e chamada exploratória ao mercado."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 4292""],""aceitacao"":""Nota editorial: custos, metas, maturidade, entidades responsáveis e disponibilidade para investimento devem ser confirmados com o MPD e a entidade de tutela antes da publicação. A ficha pública deve distinguir claramente informação oficial, estimativa, oportunidade complementar e chamada exploratória ao mercado."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""oportunidades""},{""id"":""MASTER-f70ce307-0130"",""pedido"":""Nota editorial: custos, metas, maturidade, entidades responsáveis e disponibilidade para investimento devem ser confirmados com o MPD e a entidade de tutela antes da publicação. A ficha pública deve distinguir claramente informação oficial, estimativa, oportunidade complementar e chamada exploratória ao mercado."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 1446""],""aceitacao"":""Nota editorial: custos, metas, maturidade, entidades responsáveis e disponibilidade para investimento devem ser confirmados com o MPD e a entidade de tutela antes da publicação. A ficha pública deve distinguir claramente informação oficial, estimativa, oportunidade complementar e chamada exploratória ao mercado."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""oportunidades""},{""id"":""MASTER-51b8f0ad-0210"",""pedido"":""Nota editorial: custos, metas, maturidade, entidades responsáveis e disponibilidade para investimento devem ser confirmados com o MPD e a entidade de tutela antes da publicação. A ficha pública deve distinguir claramente informação oficial, estimativa, oportunidade complementar e chamada exploratória ao mercado."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 3080""],""aceitacao"":""Nota editorial: custos, metas, maturidade, entidades responsáveis e disponibilidade para investimento devem ser confirmados com o MPD e a entidade de tutela antes da publicação. A ficha pública deve distinguir claramente informação oficial, estimativa, oportunidade complementar e chamada exploratória ao mercado."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""oportunidades""},{""id"":""MASTER-edece80c-0274"",""pedido"":""Nota editorial: custos, metas, maturidade, entidades responsáveis e disponibilidade para investimento devem ser confirmados com o MPD e a entidade de tutela antes da publicação. A ficha pública deve distinguir claramente informação oficial, estimativa, oportunidade complementar e chamada exploratória ao mercado."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 4292""],""aceitacao"":""Nota editorial: custos, metas, maturidade, entidades responsáveis e disponibilidade para investimento devem ser confirmados com o MPD e a entidade de tutela antes da publicação. A ficha pública deve distinguir claramente informação oficial, estimativa, oportunidade complementar e chamada exploratória ao mercado."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""oportunidades""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.opportunities: 6 registos; public.opportunity_images: tabela ausente; public.opportunity_documents: tabela ausente; public.opportunity_location_drafts: tabela ausente,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Reconciliar contrato/cláusula e provas por categoria; completar apenas falha/variante executável identificada. Response normativo não é completo. Critério individual original preservado; cobertura atual ainda não individualizada.,"OpportunityManagement, OpportunityCanonicalContract/Response, OpportunityReviewMateriality, PortalProfileAccess, OpportunityResources","030000→040000 já instalados; contratos/resources existentes, sessão/MFA, ClamD e worker para ficheiros; gates das seis categorias ON. Variantes modulares/offers continuam separadas.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: oportunidades. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,oportunidades,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Services/OpportunityManagement.php; app/Services/OpportunityResources.php; resources/js/pages/management/opportunity-draft.tsx — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"OpportunityManagementTest, OpportunityResourcesTest, OpportunityOriginReviewTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, MASTER-471012ab-0122,"Local do investimento: país, região, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência e coordenadas geográficas, quando disponíveis. Projectos nacionais ou multiterritoriais devem listar cada área abrangida e indicar a localização principal.",portal do investidor\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 1447 | portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 4295 | portal do investidor\Portal V4\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 1449 | portal do investidor\Portal V4\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 3083 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 4295,cartografia/relações,/api/v1/geo/drafts; /api/v1/geo/search; /api/v1/geo/sources; /api/v1/geo/sources/{id}/transitions; /api/v1/geo/territories; /api/v1/geo/territories/{id}; /api/v1/geo/territories/{id}/transitions; /api/v1/geo/territories/{type}/{id}; /api/v1/geo/{collection}; /api/v1/investment/compare; /api/v1/investment/export; /api/v1/investment/favourites/{id},"InvestmentGeography, campos TerritoryFields/ProvinceSelect, geo_locations/geo_geometries e importador autenticado. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Demonstrar consumidor: pesquisar→selecionar→gravar→nova sessão→renderizar limite correto; conservar pai, código e fonte. Critério individual original preservado; cobertura atual ainda não individualizada.","QA408/581INE; ativo0geometrias;173correspondências por nome/edição/pai, Mandie ambíguo. Publicação é ação separada. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","MASTER-471012ab-0122: Local do investimento: país, região, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência e coordenadas geográficas, quando disponíveis. Projectos nacionais ou multiterritoriais devem listar cada área abrangida e indicar a localização principal. | MASTER-e1169a77-0275: Local do investimento: país, região, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência e coordenadas geográficas, quando disponíveis. Projectos nacionais ou multiterritoriais devem listar cada área abrangida e indicar a localização principal. | MASTER-f70ce307-0131: Local do investimento: país, região, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência e coordenadas geográficas, quando disponíveis. Projectos nacionais ou multiterritoriais devem listar cada área abrangida e indicar a localização principal. | MASTER-51b8f0ad-0211: Local do investimento: país, região, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência e coordenadas geográficas, quando disponíveis. Projectos nacionais ou multiterritoriais devem listar cada área abrangida e indicar a localização principal. | MASTER-edece80c-0275: Local do investimento: país, região, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência e coordenadas geográficas, quando disponíveis. Projectos nacionais ou multiterritoriais devem listar cada área abrangida e indicar a localização principal.",P1,MASTER-471012ab-0122: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-e1169a77-0275: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-f70ce307-0131: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-51b8f0ad-0211: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0275: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-471012ab-0122 | MASTER-e1169a77-0275 | MASTER-f70ce307-0131 | MASTER-51b8f0ad-0211 | MASTER-edece80c-0275,5,"[{""id"":""MASTER-471012ab-0122"",""pedido"":""Local do investimento: país, região, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência e coordenadas geográficas, quando disponíveis. Projectos nacionais ou multiterritoriais devem listar cada área abrangida e indicar a localização principal."",""fontes"":[""portal do investidor\\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 1447""],""aceitacao"":""Local do investimento: país, região, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência e coordenadas geográficas, quando disponíveis. Projectos nacionais ou multiterritoriais devem listar cada área abrangida e indicar a localização principal."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""},{""id"":""MASTER-e1169a77-0275"",""pedido"":""Local do investimento: país, região, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência e coordenadas geográficas, quando disponíveis. Projectos nacionais ou multiterritoriais devem listar cada área abrangida e indicar a localização principal."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 4295""],""aceitacao"":""Local do investimento: país, região, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência e coordenadas geográficas, quando disponíveis. Projectos nacionais ou multiterritoriais devem listar cada área abrangida e indicar a localização principal."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""},{""id"":""MASTER-f70ce307-0131"",""pedido"":""Local do investimento: país, região, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência e coordenadas geográficas, quando disponíveis. Projectos nacionais ou multiterritoriais devem listar cada área abrangida e indicar a localização principal."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 1449""],""aceitacao"":""Local do investimento: país, região, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência e coordenadas geográficas, quando disponíveis. Projectos nacionais ou multiterritoriais devem listar cada área abrangida e indicar a localização principal."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""},{""id"":""MASTER-51b8f0ad-0211"",""pedido"":""Local do investimento: país, região, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência e coordenadas geográficas, quando disponíveis. Projectos nacionais ou multiterritoriais devem listar cada área abrangida e indicar a localização principal."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 3083""],""aceitacao"":""Local do investimento: país, região, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência e coordenadas geográficas, quando disponíveis. Projectos nacionais ou multiterritoriais devem listar cada área abrangida e indicar a localização principal."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""},{""id"":""MASTER-edece80c-0275"",""pedido"":""Local do investimento: país, região, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência e coordenadas geográficas, quando disponíveis. Projectos nacionais ou multiterritoriais devem listar cada área abrangida e indicar a localização principal."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 4295""],""aceitacao"":""Local do investimento: país, região, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência e coordenadas geográficas, quando disponíveis. Projectos nacionais ou multiterritoriais devem listar cada área abrangida e indicar a localização principal."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.geo_locations: 1990 registos; public.geo_geometries: 0 registos; public.project_locations: 28 registos; public.cluster_projects: 13 registos; public.opportunity_projects: 0 registos; public.opportunity_clusters: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","Demonstrar consumidor: pesquisar→selecionar→gravar→nova sessão→renderizar limite correto; conservar pai, código e fonte. Critério individual original preservado; cobertura atual ainda não individualizada.","InvestmentGeography, campos TerritoryFields/ProvinceSelect, geo_locations/geo_geometries e importador autenticado","QA408/581INE; ativo0geometrias;173correspondências por nome/edição/pai, Mandie ambíguo. Publicação é ação separada.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: território. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,território,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",resources/js/components/investment-territory.tsx; app/Http/Controllers/InvestmentTerritoryController.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"InvestmentTerritoryTest, TerritorialRegistryTest, InvestmentTerritorialTraceabilityTest, InvestmentZoneTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, MASTER-471012ab-0123,"Localização normalizada: país, âmbito nacional ou regional, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência, latitude, longitude e localização principal. Registos multiterritoriais devem admitir múltiplas localizações relacionadas.",portal do investidor\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 1460 | portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 4308 | portal do investidor\Portal V4\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 1462 | portal do investidor\Portal V4\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 3096 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 4308,cartografia/relações,/api/v1/geo/drafts; /api/v1/geo/search; /api/v1/geo/sources; /api/v1/geo/sources/{id}/transitions; /api/v1/geo/territories; /api/v1/geo/territories/{id}; /api/v1/geo/territories/{id}/transitions; /api/v1/geo/territories/{type}/{id}; /api/v1/geo/{collection}; /api/v1/investment/compare; /api/v1/investment/export; /api/v1/investment/favourites/{id},"InvestmentGeography, campos TerritoryFields/ProvinceSelect, geo_locations/geo_geometries e importador autenticado. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Demonstrar consumidor: pesquisar→selecionar→gravar→nova sessão→renderizar limite correto; conservar pai, código e fonte. Critério individual original preservado; cobertura atual ainda não individualizada.","QA408/581INE; ativo0geometrias;173correspondências por nome/edição/pai, Mandie ambíguo. Publicação é ação separada. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","MASTER-471012ab-0123: Localização normalizada: país, âmbito nacional ou regional, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência, latitude, longitude e localização principal. Registos multiterritoriais devem admitir múltiplas localizações relacionadas. | MASTER-e1169a77-0276: Localização normalizada: país, âmbito nacional ou regional, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência, latitude, longitude e localização principal. Registos multiterritoriais devem admitir múltiplas localizações relacionadas. | MASTER-f70ce307-0132: Localização normalizada: país, âmbito nacional ou regional, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência, latitude, longitude e localização principal. Registos multiterritoriais devem admitir múltiplas localizações relacionadas. | MASTER-51b8f0ad-0212: Localização normalizada: país, âmbito nacional ou regional, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência, latitude, longitude e localização principal. Registos multiterritoriais devem admitir múltiplas localizações relacionadas. | MASTER-edece80c-0276: Localização normalizada: país, âmbito nacional ou regional, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência, latitude, longitude e localização principal. Registos multiterritoriais devem admitir múltiplas localizações relacionadas.",P1,MASTER-471012ab-0123: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-e1169a77-0276: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-f70ce307-0132: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-51b8f0ad-0212: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0276: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-471012ab-0123 | MASTER-e1169a77-0276 | MASTER-f70ce307-0132 | MASTER-51b8f0ad-0212 | MASTER-edece80c-0276,5,"[{""id"":""MASTER-471012ab-0123"",""pedido"":""Localização normalizada: país, âmbito nacional ou regional, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência, latitude, longitude e localização principal. Registos multiterritoriais devem admitir múltiplas localizações relacionadas."",""fontes"":[""portal do investidor\\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 1460""],""aceitacao"":""Localização normalizada: país, âmbito nacional ou regional, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência, latitude, longitude e localização principal. Registos multiterritoriais devem admitir múltiplas localizações relacionadas."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""},{""id"":""MASTER-e1169a77-0276"",""pedido"":""Localização normalizada: país, âmbito nacional ou regional, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência, latitude, longitude e localização principal. Registos multiterritoriais devem admitir múltiplas localizações relacionadas."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 4308""],""aceitacao"":""Localização normalizada: país, âmbito nacional ou regional, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência, latitude, longitude e localização principal. Registos multiterritoriais devem admitir múltiplas localizações relacionadas."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""},{""id"":""MASTER-f70ce307-0132"",""pedido"":""Localização normalizada: país, âmbito nacional ou regional, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência, latitude, longitude e localização principal. Registos multiterritoriais devem admitir múltiplas localizações relacionadas."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 1462""],""aceitacao"":""Localização normalizada: país, âmbito nacional ou regional, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência, latitude, longitude e localização principal. Registos multiterritoriais devem admitir múltiplas localizações relacionadas."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""},{""id"":""MASTER-51b8f0ad-0212"",""pedido"":""Localização normalizada: país, âmbito nacional ou regional, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência, latitude, longitude e localização principal. Registos multiterritoriais devem admitir múltiplas localizações relacionadas."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 3096""],""aceitacao"":""Localização normalizada: país, âmbito nacional ou regional, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência, latitude, longitude e localização principal. Registos multiterritoriais devem admitir múltiplas localizações relacionadas."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""},{""id"":""MASTER-edece80c-0276"",""pedido"":""Localização normalizada: país, âmbito nacional ou regional, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência, latitude, longitude e localização principal. Registos multiterritoriais devem admitir múltiplas localizações relacionadas."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 4308""],""aceitacao"":""Localização normalizada: país, âmbito nacional ou regional, província, distrito, posto administrativo, localidade, município ou cidade, corredor, zona económica, parque industrial ou bacia, endereço ou referência, latitude, longitude e localização principal. Registos multiterritoriais devem admitir múltiplas localizações relacionadas."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.geo_locations: 1990 registos; public.geo_geometries: 0 registos; public.project_locations: 28 registos; public.cluster_projects: 13 registos; public.opportunity_projects: 0 registos; public.opportunity_clusters: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","Demonstrar consumidor: pesquisar→selecionar→gravar→nova sessão→renderizar limite correto; conservar pai, código e fonte. Critério individual original preservado; cobertura atual ainda não individualizada.","InvestmentGeography, campos TerritoryFields/ProvinceSelect, geo_locations/geo_geometries e importador autenticado","QA408/581INE; ativo0geometrias;173correspondências por nome/edição/pai, Mandie ambíguo. Publicação é ação separada.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: território. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,território,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",resources/js/components/investment-territory.tsx; app/Http/Controllers/InvestmentTerritoryController.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"InvestmentTerritoryTest, TerritorialRegistryTest, InvestmentTerritorialTraceabilityTest, InvestmentZoneTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, -MASTER-471012ab-0124,"Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos.",portal do investidor\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 1470 | portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 4318 | portal do investidor\Portal V4\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 1472 | portal do investidor\Portal V4\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 3106 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 4318,Balcão/orientação,/balcao-virtual/contextos; /balcao-virtual/dossiers; /balcao-virtual/dossiers/{id}; /balcao-virtual/dossiers/{id}/documentos; /balcao-virtual/dossiers/{id}/documentos/{document}; /balcao-virtual/dossiers/{id}/documentos/{document}/conferencia; /balcao-virtual/dossiers/{id}/etapas; /balcao-virtual/dossiers/{id}/fontes; /balcao-virtual/dossiers/{id}/orientacao; /balcao-virtual/dossiers/{id}/pedidos; /balcao-virtual/dossiers/{id}/pressupostos; /balcao-virtual/dossiers/{id}/recomendacoes,"VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Pedido contextual→gravar→submeter→nova sessão→gestor→mensagem/documentos/resultado, reaproveitando A/B. Critério individual original preservado; cobertura atual ainda não individualizada.","Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","MASTER-471012ab-0124: Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos. | MASTER-e1169a77-0277: Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos. | MASTER-f70ce307-0133: Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos. | MASTER-51b8f0ad-0213: Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos. | MASTER-edece80c-0277: Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos.",P2,MASTER-471012ab-0124: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-e1169a77-0277: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-f70ce307-0133: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-51b8f0ad-0213: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0277: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-471012ab-0124 | MASTER-e1169a77-0277 | MASTER-f70ce307-0133 | MASTER-51b8f0ad-0213 | MASTER-edece80c-0277,5,"[{""id"":""MASTER-471012ab-0124"",""pedido"":""Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos."",""fontes"":[""portal do investidor\\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 1470""],""aceitacao"":""Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""},{""id"":""MASTER-e1169a77-0277"",""pedido"":""Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 4318""],""aceitacao"":""Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""},{""id"":""MASTER-f70ce307-0133"",""pedido"":""Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 1472""],""aceitacao"":""Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""},{""id"":""MASTER-51b8f0ad-0213"",""pedido"":""Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 3106""],""aceitacao"":""Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""},{""id"":""MASTER-edece80c-0277"",""pedido"":""Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 4318""],""aceitacao"":""Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.desk_cases: 1 registos; public.desk_requests: 0 registos; public.desk_institutional_links: 0 registos; public.desk_messages: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","Pedido contextual→gravar→submeter→nova sessão→gestor→mensagem/documentos/resultado, reaproveitando A/B. Critério individual original preservado; cobertura atual ainda não individualizada.","VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento","Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: balcão. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,balcão,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Services/VirtualDesk.php; app/Services/Ai/InvestorGuidance.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,InvestorGuidanceTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, +MASTER-471012ab-0124,"Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos.",portal do investidor\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 1470 | portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 4318 | portal do investidor\Portal V4\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 1472 | portal do investidor\Portal V4\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 3106 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 4318,Balcão/orientação,/balcao-virtual/contextos; /balcao-virtual/dossiers; /balcao-virtual/dossiers/{id}; /balcao-virtual/dossiers/{id}/documentos; /balcao-virtual/dossiers/{id}/documentos/{document}; /balcao-virtual/dossiers/{id}/documentos/{document}/conferencia; /balcao-virtual/dossiers/{id}/etapas; /balcao-virtual/dossiers/{id}/fontes; /balcao-virtual/dossiers/{id}/orientacao; /balcao-virtual/dossiers/{id}/pedidos; /balcao-virtual/dossiers/{id}/pressupostos; /balcao-virtual/dossiers/{id}/recomendacoes,"VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Pedido contextual→gravar→submeter→nova sessão→gestor→mensagem/documentos/resultado, reaproveitando A/B. Critério individual original preservado; cobertura atual ainda não individualizada.","Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","MASTER-471012ab-0124: Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos. | MASTER-e1169a77-0277: Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos. | MASTER-f70ce307-0133: Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos. | MASTER-51b8f0ad-0213: Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos. | MASTER-edece80c-0277: Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos.",P2,MASTER-471012ab-0124: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-e1169a77-0277: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-f70ce307-0133: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-51b8f0ad-0213: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0277: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-471012ab-0124 | MASTER-e1169a77-0277 | MASTER-f70ce307-0133 | MASTER-51b8f0ad-0213 | MASTER-edece80c-0277,5,"[{""id"":""MASTER-471012ab-0124"",""pedido"":""Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos."",""fontes"":[""portal do investidor\\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 1470""],""aceitacao"":""Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""},{""id"":""MASTER-e1169a77-0277"",""pedido"":""Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 4318""],""aceitacao"":""Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""},{""id"":""MASTER-f70ce307-0133"",""pedido"":""Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 1472""],""aceitacao"":""Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""},{""id"":""MASTER-51b8f0ad-0213"",""pedido"":""Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 3106""],""aceitacao"":""Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""},{""id"":""MASTER-edece80c-0277"",""pedido"":""Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 4318""],""aceitacao"":""Disponibilizar pesquisa, filtros, comparação, favoritos, alertas e recomendação de projectos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.desk_cases: 1 registos; public.desk_requests: 0 registos; public.desk_institutional_links: 0 registos; public.desk_messages: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","Pedido contextual→gravar→submeter→nova sessão→gestor→mensagem/documentos/resultado, reaproveitando A/B. Critério individual original preservado; cobertura atual ainda não individualizada.","VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento","Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: balcão. Esforço de código adicional só após lacuna reproduzida.,"outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual. | 29/10/2026 — ergonomia do catálogo autorizada pela Tempo: inventário prévio preserva pesquisa AND, hierarquia territorial, moedas sem conversão, preparação/históricos, cinco vistas, CSV, favoritos, comparação, selecção/dossier, paginação e fichas de corredores/clusters/âncoras. Não há perda funcional confirmada neste delta de apresentação; disponibilidade no destino não inferida. Reutiliza provas de selectores 22/10, agronegócio/selecção múltipla 23/10 e corredor/percurso 27/10. Preparação local; sem schema, dados, configuração ou permissões novos. Manual: adenda 29/10/2026 — ergonomia do catálogo. | 29/10/2026 — delta visual local verificado: tipos/build QA aprovados; navegador 320/390/768/1024/1440px sem transbordo, filtros expandidos sem corte, descrições/avisos completos, teclado, contexto conservado, escolha/dossier, comparação quatro, cinco vistas e 29 fichas acessíveis; zero erros JS. Prévia com HTTP simulado e documentos públicos locais, sem base; não prova backend/autenticação ou disponibilidade activa. Recibo docs/investmoz/unification/catalogue-layout-qa-20261029.json; critérios globais e aceitação anterior preservados. Ajuste subsequente: Mais filtros/Menos filtros acompanha a abertura; clique/teclado e escolhas conservadas demonstrados no componente React. Pedido Tempo: títulos e destaques em vermelho no catálogo; CSS validado sintacticamente, alteração local.",balcão,"12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada | 29/10/2026 — ergonomia do catálogo autorizada pela Tempo: inventário prévio preserva pesquisa AND, hierarquia territorial, moedas sem conversão, preparação/históricos, cinco vistas, CSV, favoritos, comparação, selecção/dossier, paginação e fichas de corredores/clusters/âncoras. Não há perda funcional confirmada neste delta de apresentação; disponibilidade no destino não inferida. Reutiliza provas de selectores 22/10, agronegócio/selecção múltipla 23/10 e corredor/percurso 27/10. Preparação local; sem schema, dados, configuração ou permissões novos. Manual: adenda 29/10/2026 — ergonomia do catálogo.",,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Services/VirtualDesk.php; app/Services/Ai/InvestorGuidance.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,InvestorGuidanceTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, MASTER-471012ab-0125,"Implementar chamadas para acção: “Manifestar interesse”, “Solicitar dossier”, “Agendar reunião” e “Propor financiamento ou parceria”.",portal do investidor\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 1471 | portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 4319 | portal do investidor\Portal V4\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 1473 | portal do investidor\Portal V4\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 3107 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 4319,Balcão/orientação,/balcao-virtual/contextos; /balcao-virtual/dossiers; /balcao-virtual/dossiers/{id}; /balcao-virtual/dossiers/{id}/documentos; /balcao-virtual/dossiers/{id}/documentos/{document}; /balcao-virtual/dossiers/{id}/documentos/{document}/conferencia; /balcao-virtual/dossiers/{id}/etapas; /balcao-virtual/dossiers/{id}/fontes; /balcao-virtual/dossiers/{id}/orientacao; /balcao-virtual/dossiers/{id}/pedidos; /balcao-virtual/dossiers/{id}/pressupostos; /balcao-virtual/dossiers/{id}/recomendacoes,"VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Pedido contextual→gravar→submeter→nova sessão→gestor→mensagem/documentos/resultado, reaproveitando A/B. Critério individual original preservado; cobertura atual ainda não individualizada.","Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","MASTER-471012ab-0125: Implementar chamadas para acção: “Manifestar interesse”, “Solicitar dossier”, “Agendar reunião” e “Propor financiamento ou parceria”. | MASTER-e1169a77-0278: Implementar chamadas para acção: “Manifestar interesse”, “Solicitar dossier”, “Agendar reunião” e “Propor financiamento ou parceria”. | MASTER-f70ce307-0134: Implementar chamadas para acção: “Manifestar interesse”, “Solicitar dossier”, “Agendar reunião” e “Propor financiamento ou parceria”. | MASTER-51b8f0ad-0214: Implementar chamadas para acção: “Manifestar interesse”, “Solicitar dossier”, “Agendar reunião” e “Propor financiamento ou parceria”. | MASTER-edece80c-0278: Implementar chamadas para acção: “Manifestar interesse”, “Solicitar dossier”, “Agendar reunião” e “Propor financiamento ou parceria”.",P2,MASTER-471012ab-0125: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-e1169a77-0278: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-f70ce307-0134: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-51b8f0ad-0214: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0278: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-471012ab-0125 | MASTER-e1169a77-0278 | MASTER-f70ce307-0134 | MASTER-51b8f0ad-0214 | MASTER-edece80c-0278,5,"[{""id"":""MASTER-471012ab-0125"",""pedido"":""Implementar chamadas para acção: “Manifestar interesse”, “Solicitar dossier”, “Agendar reunião” e “Propor financiamento ou parceria”."",""fontes"":[""portal do investidor\\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 1471""],""aceitacao"":""Implementar chamadas para acção: “Manifestar interesse”, “Solicitar dossier”, “Agendar reunião” e “Propor financiamento ou parceria”."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""},{""id"":""MASTER-e1169a77-0278"",""pedido"":""Implementar chamadas para acção: “Manifestar interesse”, “Solicitar dossier”, “Agendar reunião” e “Propor financiamento ou parceria”."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 4319""],""aceitacao"":""Implementar chamadas para acção: “Manifestar interesse”, “Solicitar dossier”, “Agendar reunião” e “Propor financiamento ou parceria”."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""},{""id"":""MASTER-f70ce307-0134"",""pedido"":""Implementar chamadas para acção: “Manifestar interesse”, “Solicitar dossier”, “Agendar reunião” e “Propor financiamento ou parceria”."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 1473""],""aceitacao"":""Implementar chamadas para acção: “Manifestar interesse”, “Solicitar dossier”, “Agendar reunião” e “Propor financiamento ou parceria”."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""},{""id"":""MASTER-51b8f0ad-0214"",""pedido"":""Implementar chamadas para acção: “Manifestar interesse”, “Solicitar dossier”, “Agendar reunião” e “Propor financiamento ou parceria”."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 3107""],""aceitacao"":""Implementar chamadas para acção: “Manifestar interesse”, “Solicitar dossier”, “Agendar reunião” e “Propor financiamento ou parceria”."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""},{""id"":""MASTER-edece80c-0278"",""pedido"":""Implementar chamadas para acção: “Manifestar interesse”, “Solicitar dossier”, “Agendar reunião” e “Propor financiamento ou parceria”."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 4319""],""aceitacao"":""Implementar chamadas para acção: “Manifestar interesse”, “Solicitar dossier”, “Agendar reunião” e “Propor financiamento ou parceria”."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.desk_cases: 1 registos; public.desk_requests: 0 registos; public.desk_institutional_links: 0 registos; public.desk_messages: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","Pedido contextual→gravar→submeter→nova sessão→gestor→mensagem/documentos/resultado, reaproveitando A/B. Critério individual original preservado; cobertura atual ainda não individualizada.","VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento","Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: balcão. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,balcão,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Services/VirtualDesk.php; app/Services/Ai/InvestorGuidance.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,InvestorGuidanceTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, MASTER-471012ab-0126,Identificar cadeia e localização → captar interesse → validar capacidade → formar grupos por elo → visitas → propostas.,portal do investidor\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 1505 | portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 4354 | portal do investidor\Portal V4\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 1507 | portal do investidor\Portal V4\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 3141 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 4354,governação/outros,/api/v1/investment/admin/interests/{interest}/status; /management/history; /management/interests; /management/interests/{interest}; /management/interests/{interest}/consent/contact; /management/interests/{interest}/consent/proponent; /management/opportunities; /management/opportunities/create; /management/opportunities/drafts; /management/opportunities/{id}/draft; /management/opportunities/{id}/edit; /management/opportunities/{id}/lifecycle,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.",MASTER-471012ab-0126: Identificar cadeia e localização → captar interesse → validar capacidade → formar grupos por elo → visitas → propostas. | MASTER-e1169a77-0279: Identificar cadeia e localização → captar interesse → validar capacidade → formar grupos por elo → visitas → propostas. | MASTER-f70ce307-0135: Identificar cadeia e localização → captar interesse → validar capacidade → formar grupos por elo → visitas → propostas. | MASTER-51b8f0ad-0215: Identificar cadeia e localização → captar interesse → validar capacidade → formar grupos por elo → visitas → propostas. | MASTER-edece80c-0279: Identificar cadeia e localização → captar interesse → validar capacidade → formar grupos por elo → visitas → propostas.,P2,MASTER-471012ab-0126: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-e1169a77-0279: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-f70ce307-0135: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-51b8f0ad-0215: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0279: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-471012ab-0126 | MASTER-e1169a77-0279 | MASTER-f70ce307-0135 | MASTER-51b8f0ad-0215 | MASTER-edece80c-0279,5,"[{""id"":""MASTER-471012ab-0126"",""pedido"":""Identificar cadeia e localização → captar interesse → validar capacidade → formar grupos por elo → visitas → propostas."",""fontes"":[""portal do investidor\\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 1505""],""aceitacao"":""Identificar cadeia e localização → captar interesse → validar capacidade → formar grupos por elo → visitas → propostas."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-e1169a77-0279"",""pedido"":""Identificar cadeia e localização → captar interesse → validar capacidade → formar grupos por elo → visitas → propostas."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 4354""],""aceitacao"":""Identificar cadeia e localização → captar interesse → validar capacidade → formar grupos por elo → visitas → propostas."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-f70ce307-0135"",""pedido"":""Identificar cadeia e localização → captar interesse → validar capacidade → formar grupos por elo → visitas → propostas."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 1507""],""aceitacao"":""Identificar cadeia e localização → captar interesse → validar capacidade → formar grupos por elo → visitas → propostas."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-51b8f0ad-0215"",""pedido"":""Identificar cadeia e localização → captar interesse → validar capacidade → formar grupos por elo → visitas → propostas."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 3141""],""aceitacao"":""Identificar cadeia e localização → captar interesse → validar capacidade → formar grupos por elo → visitas → propostas."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-edece80c-0279"",""pedido"":""Identificar cadeia e localização → captar interesse → validar capacidade → formar grupos por elo → visitas → propostas."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 4354""],""aceitacao"":""Identificar cadeia e localização → captar interesse → validar capacidade → formar grupos por elo → visitas → propostas."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,Requisito transversal; consultar estado-ativo-after.json,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer","Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: governação e demais cláusulas. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,governação e demais cláusulas,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",AGENTS.md — componentes do domínio encontrados; correspondência integral deste requisito não presumida,; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, MASTER-471012ab-0127,Mapear janelas de financiamento → adaptar concept note → identificar consórcio → validar elegibilidade → submissão → seguimento.,portal do investidor\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 1515 | portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 4364 | portal do investidor\Portal V4\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 1517 | portal do investidor\Portal V4\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 3151 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 4364,governação/outros,/api/v1/investment/admin/interests/{interest}/status; /management/history; /management/interests; /management/interests/{interest}; /management/interests/{interest}/consent/contact; /management/interests/{interest}/consent/proponent; /management/opportunities; /management/opportunities/create; /management/opportunities/drafts; /management/opportunities/{id}/draft; /management/opportunities/{id}/edit; /management/opportunities/{id}/lifecycle,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.",MASTER-471012ab-0127: Mapear janelas de financiamento → adaptar concept note → identificar consórcio → validar elegibilidade → submissão → seguimento. | MASTER-e1169a77-0280: Mapear janelas de financiamento → adaptar concept note → identificar consórcio → validar elegibilidade → submissão → seguimento. | MASTER-f70ce307-0136: Mapear janelas de financiamento → adaptar concept note → identificar consórcio → validar elegibilidade → submissão → seguimento. | MASTER-51b8f0ad-0216: Mapear janelas de financiamento → adaptar concept note → identificar consórcio → validar elegibilidade → submissão → seguimento. | MASTER-edece80c-0280: Mapear janelas de financiamento → adaptar concept note → identificar consórcio → validar elegibilidade → submissão → seguimento.,P2,MASTER-471012ab-0127: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-e1169a77-0280: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-f70ce307-0136: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-51b8f0ad-0216: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0280: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-471012ab-0127 | MASTER-e1169a77-0280 | MASTER-f70ce307-0136 | MASTER-51b8f0ad-0216 | MASTER-edece80c-0280,5,"[{""id"":""MASTER-471012ab-0127"",""pedido"":""Mapear janelas de financiamento → adaptar concept note → identificar consórcio → validar elegibilidade → submissão → seguimento."",""fontes"":[""portal do investidor\\upgrade do portal de investimentos.docx; SHA 471012abb0f56377956f4ab822fe3186e2561bee0471508a5d807091f2e0154f; w:p 1515""],""aceitacao"":""Mapear janelas de financiamento → adaptar concept note → identificar consórcio → validar elegibilidade → submissão → seguimento."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-e1169a77-0280"",""pedido"":""Mapear janelas de financiamento → adaptar concept note → identificar consórcio → validar elegibilidade → submissão → seguimento."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 4364""],""aceitacao"":""Mapear janelas de financiamento → adaptar concept note → identificar consórcio → validar elegibilidade → submissão → seguimento."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-f70ce307-0136"",""pedido"":""Mapear janelas de financiamento → adaptar concept note → identificar consórcio → validar elegibilidade → submissão → seguimento."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 1517""],""aceitacao"":""Mapear janelas de financiamento → adaptar concept note → identificar consórcio → validar elegibilidade → submissão → seguimento."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-51b8f0ad-0216"",""pedido"":""Mapear janelas de financiamento → adaptar concept note → identificar consórcio → validar elegibilidade → submissão → seguimento."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 3151""],""aceitacao"":""Mapear janelas de financiamento → adaptar concept note → identificar consórcio → validar elegibilidade → submissão → seguimento."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-edece80c-0280"",""pedido"":""Mapear janelas de financiamento → adaptar concept note → identificar consórcio → validar elegibilidade → submissão → seguimento."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 4364""],""aceitacao"":""Mapear janelas de financiamento → adaptar concept note → identificar consórcio → validar elegibilidade → submissão → seguimento."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,Requisito transversal; consultar estado-ativo-after.json,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer","Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: governação e demais cláusulas. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,governação e demais cláusulas,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",AGENTS.md — componentes do domínio encontrados; correspondência integral deste requisito não presumida,; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, diff --git a/resources/css/investment-catalogue.css b/resources/css/investment-catalogue.css new file mode 100644 index 00000000..38de9add --- /dev/null +++ b/resources/css/investment-catalogue.css @@ -0,0 +1,445 @@ +/* Presentation only: catalogue queries, records and permissions retain their contracts. */ +.investment-catalogue { + --catalogue-accent: #c9141b; + --catalogue-ink: #17324d; + max-width: 1440px; + color: var(--catalogue-ink); +} +.investment-catalogue > h1 { + font-size: clamp(1.6rem, 3vw, 2.15rem); + letter-spacing: -0.035em; +} +.investment-catalogue .catalogue-intro { + margin-top: 0.65rem; + max-width: 76ch; + color: #526477; + line-height: 1.7; +} +.catalogue-workspace { + display: grid; + gap: 1.5rem; + align-items: start; +} +.catalogue-workspace > *, +.catalogue-results > *, +.catalogue-opportunity > * { + min-width: 0; +} +.catalogue-filters { + border: 1px solid #dce3eb; + border-radius: 1rem; + background: #fff; + overflow: clip; +} +.catalogue-filters-toggle, +.catalogue-filters-heading { + align-items: center; + gap: 0.65rem; + padding: 1rem 1.15rem; + font-weight: 650; +} +.catalogue-filters-toggle { + display: flex; + width: 100%; + text-align: left; + min-height: 52px; +} +.catalogue-filters-toggle > svg:last-child { + margin-left: auto; + transition: transform 0.15s; +} +.catalogue-filters-toggle[aria-expanded='true'] > svg:last-child { + transform: rotate(180deg); +} +.catalogue-filters-heading { + display: none; +} +#catalogue-filter-fields { + padding: 0 1.15rem 1.15rem; +} +.catalogue-filters input:not([type='checkbox']), +.catalogue-filters select { + min-height: 44px; + max-width: 100%; + font-size: 0.875rem; +} +.catalogue-filter-group { + border-top: 1px solid #e5eaf0; +} +.catalogue-filter-group > summary { + display: flex; + align-items: center; + gap: 0.6rem; + min-height: 52px; + padding: 0.65rem 0; + cursor: pointer; + list-style: none; + font-size: 0.875rem; + font-weight: 650; +} +.catalogue-filter-group > summary::-webkit-details-marker { + display: none; +} +.catalogue-filter-group > summary > svg { + margin-left: auto; + flex-shrink: 0; + transition: transform 0.15s; +} +.catalogue-filter-group[open] > summary > svg { + transform: rotate(180deg); +} +.catalogue-filter-group-content { + padding: 0.4rem 0 1rem; + display: grid; + gap: 1rem; +} +.catalogue-count { + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 1.5rem; + padding: 0.15rem 0.45rem; + border-radius: 99px; + background: #f0f3f7; + color: #526477; + font-size: 0.75rem; +} +.catalogue-filters .catalogue-filter-group { + margin-top: 0; +} +.catalogue-active-filters:empty { + display: none; +} +.catalogue-active-filters button { + border-radius: 0.5rem; + background: #f5f7fa; + border-color: #dce3eb; + font-size: 0.75rem; + overflow-wrap: anywhere; +} +.catalogue-filter-submit > button:first-of-type { + gap: 0.5rem; + background: var(--catalogue-accent); + min-height: 44px; +} +.catalogue-filter-submit > button:last-child { + min-height: 44px; + color: #526477; + font-size: 0.875rem; + border: 0; + text-decoration: none; +} +.catalogue-results { + display: flex; + flex-direction: column; + gap: 1.25rem; + scroll-margin-top: 2rem; +} +.catalogue-results-heading { + display: flex; + align-items: baseline; + flex-wrap: wrap; + gap: 0.35rem 1rem; +} +.catalogue-results-heading > h2 { + font-size: 1.125rem; + font-weight: 700; + letter-spacing: -0.02em; +} +.catalogue-results-heading > [role] { + border: 0; + padding: 0; + margin: 0; + color: #526477; + font-size: 0.875rem; +} +.catalogue-results-toolbar { + display: flex; + flex-wrap: wrap; + gap: 0.8rem 1.25rem; + padding-bottom: 1.1rem; + border-bottom: 1px solid #dce3eb; +} +.catalogue-view-options { + display: flex; + flex-wrap: wrap; + gap: 0.2rem; + padding: 0.25rem; + border: 1px solid #dce3eb; + border-radius: 0.75rem; + background: #fff; +} +.catalogue-view-button { + display: inline-flex; + gap: 0.4rem; + align-items: center; + justify-content: center; + min-height: 42px; + padding: 0.5rem 0.7rem; + border-radius: 0.5rem; + color: #526477; + font-size: 0.8rem; +} +.catalogue-view-button[aria-pressed='true'] { + background: #17324d; + color: #fff; +} +.catalogue-view-button:not(:disabled):hover { + color: var(--catalogue-accent); +} +.catalogue-view-button[aria-pressed='true']:not(:disabled):hover { + background: var(--catalogue-accent); + color: #fff; +} +.catalogue-view-button:disabled { + opacity: 0.5; + cursor: wait; +} +.catalogue-utility-actions { + display: flex; + flex-wrap: wrap; + gap: 0.25rem 1.25rem; +} +.catalogue-utility-link { + display: inline-flex; + align-items: center; + gap: 0.4rem; + min-height: 44px; + font-size: 0.8rem; + color: #526477; +} +.catalogue-utility-link[aria-disabled='true'] { + opacity: 0.5; +} +.catalogue-cards { + display: grid; + gap: 1rem; +} +.catalogue-opportunity { + display: flex; + flex-direction: column; + border: 1px solid #dce3eb; + border-radius: 1rem; + background: white; + overflow: clip; + transition: + border-color 0.15s, + box-shadow 0.15s; +} +.catalogue-opportunity:hover, +.catalogue-opportunity:focus-within { + border-color: #9cabbc; + box-shadow: 0 5px 18px #17324d0a; +} +.catalogue-opportunity-body { + display: flex; + flex: 1; + flex-direction: column; + align-items: start; + gap: 0.85rem; + padding: 1.25rem; +} +.catalogue-sector { + padding: 0.25rem 0.6rem; + background: #f0f4f8; + color: #3d5268; + border-radius: 0.4rem; + font-size: 0.75rem; + font-weight: 600; +} +.catalogue-location { + display: flex; + align-items: flex-start; + gap: 0.4rem; + color: #526477; + font-size: 0.8rem; + line-height: 1.6; +} +.catalogue-location svg { + flex-shrink: 0; + margin-top: 0.2rem; +} +.catalogue-opportunity h2 { + font-size: 1.125rem; + line-height: 1.45; + letter-spacing: -0.015em; + color: var(--catalogue-ink); + overflow-wrap: anywhere; +} +.catalogue-summary { + color: #526477; + font-size: 0.875rem; + line-height: 1.7; +} +.catalogue-opportunity-facts { + display: flex; + align-items: center; + justify-content: space-between; + flex-wrap: wrap; + gap: 0.65rem; + width: 100%; + margin-top: auto; + padding-top: 0.5rem; + font-size: 0.875rem; +} +.catalogue-maturity { + padding: 0.25rem 0.6rem; + border-radius: 99px; + background: #f5f6f8; + color: #526477; + font-size: 0.75rem; +} +.catalogue-opportunity-actions { + padding: 0.45rem 1.25rem 0.75rem; + border-top: 1px solid #e5eaf0; +} +.catalogue-opportunity-links { + display: flex; + align-items: center; + justify-content: space-between; + flex-wrap: wrap; + gap: 0.25rem 0.75rem; +} +.catalogue-detail-link, +.catalogue-favourite { + display: inline-flex; + align-items: center; + gap: 0.4rem; + min-height: 44px; + font-size: 0.8rem; +} +.catalogue-detail-link { + color: var(--catalogue-accent); + font-weight: 650; +} +.catalogue-favourite { + color: #526477; + text-align: left; +} +.catalogue-favourite[aria-pressed='true'] { + color: var(--catalogue-accent); +} +.catalogue-opportunity-choices { + display: grid; + gap: 0.15rem; + padding-top: 0.35rem; + border-top: 1px solid #eef1f5; +} +.catalogue-opportunity-choices label { + display: flex; + align-items: center; + gap: 0.6rem; + min-height: 44px; + font-size: 0.8rem; + line-height: 1.5; + cursor: pointer; +} +.catalogue-opportunity-choices input { + width: 1rem; + height: 1rem; + flex-shrink: 0; + accent-color: var(--catalogue-accent); +} +.catalogue-pagination { + display: flex; + justify-content: flex-end; + flex-wrap: wrap; + gap: 0.75rem; +} +.catalogue-pagination a { + display: inline-flex; + align-items: center; + justify-content: center; + min-height: 44px; + padding: 0.5rem 1rem; + border: 1px solid #dce3eb; + border-radius: 0.5rem; + background: #fff; + font-size: 0.875rem; +} +.catalogue-territorial { + padding-top: 1.5rem; + border-top: 1px solid #dce3eb; +} +.catalogue-territorial > h2 { + font-size: 1.125rem; + font-weight: 700; +} +.catalogue-territorial > p { + margin: 0.5rem 0 1.2rem; + color: #526477; + font-size: 0.875rem; + line-height: 1.7; +} +.catalogue-territorial-links { + display: grid; + gap: 0.75rem; +} +.catalogue-territorial-link { + border: 1px solid #e5eaf0; + border-radius: 0.65rem; + padding: 0.85rem 1rem; + background: #fff; +} +.catalogue-territorial-link > span { + color: #526477; + font-size: 0.75rem; +} +.catalogue-territorial-link h3 { + font-size: 0.875rem; + line-height: 1.6; +} +/* Headings and emphasized catalogue content use Tempo's red. */ +.investment-catalogue :is(h1, h2, h3, h4, h5, h6, caption, th, strong), +.investment-catalogue :is(p.font-bold, p.font-semibold), +.investment-catalogue .catalogue-sector, +.investment-catalogue .catalogue-filters-toggle, +.investment-catalogue .catalogue-territorial .catalogue-filter-group > summary { + color: var(--catalogue-accent); +} +.investment-catalogue :is(a, button, summary, input, select):focus-visible { + outline: 2px solid #17324d; + outline-offset: 3px; +} +.investment-catalogue :is(a, button, summary):hover { + text-decoration: underline; + text-underline-offset: 3px; +} +@media (min-width: 640px) { + .catalogue-cards-grid, + .catalogue-territorial-links { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } +} +@media (min-width: 1024px) { + .catalogue-workspace { + grid-template-columns: 290px minmax(0, 1fr); + gap: 2rem; + } + .catalogue-filters-toggle { + display: none; + } + .catalogue-filters-heading { + display: flex; + } + .catalogue-results-heading { + min-height: 48px; + } + .catalogue-cards-list .catalogue-opportunity { + flex-direction: row; + } + .catalogue-cards-list .catalogue-opportunity-actions { + flex: 0 0 235px; + display: flex; + flex-direction: column; + justify-content: center; + border-top: 0; + border-left: 1px solid #e5eaf0; + } +} +@media (prefers-reduced-motion: reduce) { + .investment-catalogue * { + transition: none; + scroll-behavior: auto; + } +} diff --git a/resources/js/components/catalogue-filter-group.tsx b/resources/js/components/catalogue-filter-group.tsx new file mode 100644 index 00000000..390ddf3c --- /dev/null +++ b/resources/js/components/catalogue-filter-group.tsx @@ -0,0 +1,30 @@ +import { ChevronDown } from 'lucide-react'; +import { useState, type ReactNode } from 'react'; + +export default function CatalogueFilterGroup({ + title, + expandedTitle, + count = 0, + children, +}: { + title: string; + expandedTitle?: string; + count?: number; + children: ReactNode; +}) { + const [open, setOpen] = useState(false); + + return ( +
setOpen(event.currentTarget.open)} + > + + {open && expandedTitle ? expandedTitle : title} + {count > 0 && {count}} + +
{children}
+
+ ); +} diff --git a/resources/js/components/opportunity-search-filters.tsx b/resources/js/components/opportunity-search-filters.tsx index 3c371ff4..3dddb115 100644 --- a/resources/js/components/opportunity-search-filters.tsx +++ b/resources/js/components/opportunity-search-filters.tsx @@ -1,6 +1,9 @@ import { Field, input, button, groupLabels } from '@/pages/investment/shared'; import type { References } from '@/pages/investment/shared'; import { TerritoryLevel, type TerritoryOption } from './investment-territory'; +import CatalogueFilterGroup from './catalogue-filter-group'; +import { useEffect, useState } from 'react'; +import { ChevronDown, Search, SlidersHorizontal } from 'lucide-react'; export const modalityLabels: Record = { investment_project: 'Projecto de investimento', @@ -50,14 +53,19 @@ const labels: Record = { publication_state: 'Critério herdado', }; const specialisedEmpty: Record = { - corridor_id: 'Não existem corredores públicos cadastrados para esta localização.', - cluster_id: 'Não existem clusters públicos cadastrados para esta localização.', + corridor_id: + 'Não existem corredores públicos cadastrados para esta localização.', + cluster_id: + 'Não existem clusters públicos cadastrados para esta localização.', zee_id: 'Não existem ZEE públicas cadastradas para esta localização.', zfi_id: 'Não existem ZFI públicas cadastradas para esta localização.', - park_id: 'Não existem parques industriais públicos cadastrados para esta localização.', - project_id: 'Não existem projectos âncora públicos cadastrados para esta localização.', + park_id: + 'Não existem parques industriais públicos cadastrados para esta localização.', + project_id: + 'Não existem projectos âncora públicos cadastrados para esta localização.', subsector_id: 'Não existem actividades disponíveis no catálogo público.', - chain_id: 'Não existem cadeias de valor públicas cadastradas para esta localização.', + chain_id: + 'Não existem cadeias de valor públicas cadastradas para esta localização.', }; export default function OpportunitySearchFilters({ data, @@ -78,6 +86,10 @@ export default function OpportunitySearchFilters({ clear: () => void; errors: Record; }) { + const [expanded, setExpanded] = useState(false); + useEffect(() => { + if (Object.keys(errors).length) setExpanded(true); + }, [errors]); const select = ( key: string, choices: { value: string; label: string }[], @@ -87,8 +99,14 @@ export default function OpportunitySearchFilters({ change({ q: e.target.value })} - /> - - {select('perspective', [{value:'exists',label:'O que existe'},{value:'needs',label:'Necessidades identificadas'},{value:'ideas',label:'Ideias de investimento'},{value:'opportunities',label:'Oportunidades cadastradas — disponibilidade na ficha'}])} - {select('sector', choicesFor('sector'))} - {select('category', choicesFor('category'))} - -
- Localização - {( - [ - 'province_id', - 'district_id', - 'admin_post_id', - 'locality_id', - ] as const - ).map((key, index) => ( - - territory([ - ...path.slice(0, index), - ...(value ? [value] : []), - ]) - } - /> - ))} -
-
- - -

- Os registos históricos são apresentados separadamente e - conservam a classificação indicada na ficha. -

-
- {(['min_amount', 'max_amount'] as const).map((key) => ( - - change({ [key]: e.target.value })} - /> - - ))} - {select( - 'currency', - ['MZN', 'USD', 'EUR', 'ZAR'].map((c) => ({ - value: c, - label: c, - })), - 'Seleccione uma moeda para comparar montantes. Não se efectuam conversões cambiais.', +
-
- - Mais filtros - -
- {[ - 'corridor_id', - 'cluster_id', - 'zee_id', - 'zfi_id', - 'park_id', - 'project_id', - 'subsector_id', - 'chain_id', - ].map((key) => select(key, choicesFor(key)))} - +
+ +
- Limpar filtros - + {path.map((node, index) => ( + + ))} + {active.flatMap(([key, value]) => + key === 'facets' && Array.isArray(value) + ? value.map((id) => ( + + )) + : [ + , + ], + )} +
+ {Object.entries(errors).map(([key, value]) => ( +

+ {value} +

+ ))} +
+ {select('sort', [ + { value: 'recent', label: 'Mais recentes' }, + { value: 'title', label: 'Título' }, + { + value: 'amount_asc', + label: 'Montante crescente, por moeda', + }, + { + value: 'amount_desc', + label: 'Montante decrescente, por moeda', + }, + ])} + + +
); diff --git a/resources/js/pages/investment/catalogue.tsx b/resources/js/pages/investment/catalogue.tsx index 643ef30d..258328fd 100644 --- a/resources/js/pages/investment/catalogue.tsx +++ b/resources/js/pages/investment/catalogue.tsx @@ -1,5 +1,7 @@ import EducationalGuides from '@/components/educational-guides'; -import OpportunityCorridorGroups, { type CorridorGroup } from '@/components/opportunity-corridor-groups'; +import OpportunityCorridorGroups, { + type CorridorGroup, +} from '@/components/opportunity-corridor-groups'; import { searchTerritoryHref } from '@/lib/search-territory'; import type { EducationalArticle } from '@/components/educational-article-card'; import OpportunitySearchFilters from '@/components/opportunity-search-filters'; @@ -12,6 +14,19 @@ import type { InvestmentMapArea } from '@/components/interactive-investment-map' import { type TerritoryOption } from '@/components/investment-territory'; import { Frame, button, card, money, api, groupLabels } from './shared'; import type { Opportunity, References } from './shared'; +import { + ArrowUpRight, + Bookmark, + Columns2, + Download, + LayoutGrid, + List, + Map as MapIcon, + MapPin, + Route, +} from 'lucide-react'; +import CatalogueFilterGroup from '@/components/catalogue-filter-group'; +import '../../../css/investment-catalogue.css'; type Feature = { geometry: { coordinates: [number, number] }; @@ -52,12 +67,28 @@ export default function Catalogue({ }) { const page = usePage<{ auth: { user: unknown } }>(); const { auth } = page.props; - const [investmentSelection, setInvestmentSelection] = useState(() => { - try { return JSON.parse(sessionStorage.getItem('investment-opportunity-selection') ?? '[]'); } catch { return []; } - }); + const [investmentSelection, setInvestmentSelection] = useState( + () => { + try { + return JSON.parse( + sessionStorage.getItem( + 'investment-opportunity-selection', + ) ?? '[]', + ); + } catch { + return []; + } + }, + ); function selectInvestment(id: number, checked: boolean) { - const next = checked ? [...new Set([...investmentSelection, id])] : investmentSelection.filter(x => x !== id); - setInvestmentSelection(next); sessionStorage.setItem('investment-opportunity-selection', JSON.stringify(next)); + const next = checked + ? [...new Set([...investmentSelection, id])] + : investmentSelection.filter((x) => x !== id); + setInvestmentSelection(next); + sessionStorage.setItem( + 'investment-opportunity-selection', + JSON.stringify(next), + ); } const form = useForm({ perspective: String(filters.perspective ?? ''), @@ -114,13 +145,24 @@ export default function Catalogue({ }); const view = String(filters.view ?? 'grid'); const selectedStructures = [ - ...(references.zones ?? []).filter((zone) => - ['park_id', 'zee_id', 'zfi_id'].some((key) => filters[key] === zone.id), - ).map((zone) => ({ ...zone, url: `/zonas/${zone.id}` })), + ...(references.zones ?? []) + .filter((zone) => + ['park_id', 'zee_id', 'zfi_id'].some( + (key) => filters[key] === zone.id, + ), + ) + .map((zone) => ({ ...zone, url: `/zonas/${zone.id}` })), ...(['clusters', 'corridors', 'projects'] as const).flatMap((group) => - references[group].filter((record) => filters[ - { clusters: 'cluster_id', corridors: 'corridor_id', projects: 'project_id' }[group] - ] === record.id), + references[group].filter( + (record) => + filters[ + { + clusters: 'cluster_id', + corridors: 'corridor_id', + projects: 'project_id', + }[group] + ] === record.id, + ), ), ]; const [territoryPath, setTerritoryPath] = useState(territorySelection); @@ -129,7 +171,11 @@ export default function Catalogue({ const [comparison, setComparison] = useState<{ record: Opportunity }[]>([]); const comparisonRef = useRef(null); useEffect(() => { - if (view === 'corridors' && comparison.length) comparisonRef.current?.scrollIntoView({ behavior: 'smooth', block: 'start' }); + if (view === 'corridors' && comparison.length) + comparisonRef.current?.scrollIntoView({ + behavior: 'smooth', + block: 'start', + }); }, [comparison, view]); const [points, setPoints] = useState(null); const [areas, setAreas] = useState([]); @@ -329,6 +375,7 @@ export default function Catalogue({ }; return ( )} -

+

Combine os filtros para encontrar oportunidades publicadas. Nenhum critério é alargado automaticamente.

- form.setData((d) => ({ ...d, ...patch }))} - territory={changeTerritory} - submit={() => runSearch()} - errors={form.errors} - clear={() => { - setTerritoryPath([]); - form.setData( - (d) => - Object.fromEntries( - Object.entries(d).map(([key, value]) => [ - key, - key === 'view' - ? 'grid' - : key === 'sort' - ? 'recent' - : key === 'territory_basis' - ? 'all' - : Array.isArray(value) - ? [] - : typeof value === 'boolean' - ? false - : '', - ]), - ) as unknown as typeof d, - ); - }} - /> - runSearch()} - /> - {!searchLoading && !searchError && results.total === 0 && selectedStructures.length > 0 && ( -
-

Sem oportunidades publicadas associadas com estes filtros.

-

A estrutura continua disponível para consulta. A sua selecção não confirma benefícios nem disponibilidade para investimento.

- {selectedStructures.map((record) => ( - record.url ? - Consultar ficha: {record.name} - :

{record.name} — sem ficha pública detalhada disponível.

- ))} -
- )} -
- {!searchLoading && - !searchError && - results.total === 0 && - (form.data.province_id || - form.data.district_id || - form.data.admin_post_id || - form.data.locality_id) && ( - - )} - {['grid', 'list', 'map', 'combined', 'corridors'].map((value, i) => ( - - ))} - { - if (searchLoading || searchError) - event.preventDefault(); - }} - href={'/api/v1/investment/export?' + query()} - > - Exportar CSV (até 1.000) - - - Favoritos e pedidos - -
- {!searchLoading && - !searchError && - ['map', 'combined'].includes(view) && ( -
- {error ? ( - <> - Não foi possível apresentar o mapa. A lista - continua disponível.{' '} - - - ) : points === null ? ( - 'A carregar o mapa…' - ) : ( - `${points.length} ${points.length === 1 ? 'local' : 'locais'} no mapa; ${unlocated.length} ${unlocated.length === 1 ? 'oportunidade' : 'oportunidades'} sem coordenadas confirmadas.` - )} -
- )} - {!searchLoading && - !searchError && - ['map', 'combined'].includes(view) && - !error && } - {!searchLoading && - !searchError && - ['map', 'combined'].includes(view) && ( - - )} - {!searchLoading && - !searchError && - ['map', 'combined'].includes(view) && - !error && - mapContext.length > 0 && ( -
-

- Estruturas territoriais e projetos -

-

- Estas fichas continuam consultáveis - independentemente de terem coordenadas. A lista não - atribui implantação às oportunidades nem cria pontos - no mapa. Até 30 fichas por conjunto; refine a - localização para pesquisar. -

-
    - {mapContext.map((record) => ( -
  • - - {record.kind}: {record.title} - -
  • - ))} -
-
- )} - {!searchLoading && - !searchError && - ['map', 'combined'].includes(view) && - truncated && ( -

- O mapa atingiu o limite de 1.000 registos; refine os - filtros. A cobertura não está completa. -

- )} - {!searchLoading && - !searchError && - view === 'map' && - unlocated.length > 0 && ( -
-

- {unlocated.length} investimentos sem coordenadas de - local confirmadas -

-

- Continuam nos resultados. Seleccionar uma província - não determina a posição exacta do investimento. -

-
    - {unlocated.map((record) => ( -
  • - - {record.title} - {' '} - —{' '} - {record.location || - 'Localização por completar'} -
  • - ))} -
-
- )} - {view === 'corridors' && !searchLoading && !searchError && {setInvestmentSelection([]);sessionStorage.removeItem('investment-opportunity-selection');}} onCompare={ids=>void api('/api/v1/investment/compare?'+ids.map(id=>'ids[]='+id).join('&')).then(data=>setComparison(data.records)).catch(e=>setError(e.message))}/>} - {view !== 'corridors' && !searchLoading && - !searchError && - (view !== 'map' || error || points?.length === 0) && ( -
- {results.data.map((r) => ( -
-

- {r.sector?.name} ·{' '} - {r.province || 'Localização não indicada'} + +

+
+

Oportunidades publicadas

+ runSearch()} + /> +
+ {!searchLoading && + !searchError && + results.total === 0 && + selectedStructures.length > 0 && ( +
+

+ Sem oportunidades publicadas associadas com + estes filtros.

-

- - {r.title} - -

-

{r.summary}

-

{money(r)}

-

{r.proactive?(r.proactive.group==='ideas'?'Ideia em preparação':r.proactive.group==='needs'?'Necessidade identificada':'O que existe'):r.maturity_label}

-
- - Ver ficha - +

+ A estrutura continua disponível para + consulta. A sua selecção não confirma + benefícios nem disponibilidade para + investimento. +

+ {selectedStructures.map((record) => + record.url ? ( + + Consultar ficha: {record.name} + + ) : ( +

+ {record.name} — sem ficha pública + detalhada disponível. +

+ ), + )} +
+ )} +
+ {!searchLoading && + !searchError && + results.total === 0 && + (form.data.province_id || + form.data.district_id || + form.data.admin_post_id || + form.data.locality_id) && ( + + )} +
+ {[ + 'grid', + 'list', + 'map', + 'combined', + 'corridors', + ].map((value, i) => { + const Icon = [ + LayoutGrid, + List, + MapIcon, + Columns2, + Route, + ][i]; + return ( - -
+ +
+ {!searchLoading && + !searchError && + ['map', 'combined'].includes(view) && ( +
+ {error ? ( + <> + Não foi possível apresentar o mapa. A + lista continua disponível.{' '} +
-
- ))} -
- )} - {!results.total && ( -

- Sem oportunidades com estes filtros. Explore as fichas - territoriais ou{' '} - - peça apoio - - . -

- )} - - {selected.length > 0 && ( - - )} - {view !== 'corridors' && !!investmentSelection.length &&

{investmentSelection.length} oportunidades escolhidas, conservadas ao mudar de página.

'opportunities[]='+id).join('&')}>Preparar investimento com as oportunidades escolhidas
} - {comparison.length > 0 && ( -
- - - - - - {comparison.map(({ record: r }) => ( - - ))} - - - - {[ - 'Sector', - 'Província', - 'Investimento', - 'Maturidade', - 'Parceria', - 'Impacto', - ].map((field, i) => ( - - - {comparison.map(({ record: r }) => ( - - ))} - - ))} - -
- Comparação — montantes nas moedas de origem -
Campo - {r.title} -
{field} - {[ - r.sector?.name, - r.province, - money(r), - r.maturity_label, - r.financing_modality, - r.expected_impact, - ][i] || 'Não indicado'} -
-
- )} - {territorial.length > 0 && ( -
-

- Contexto territorial e projectos âncora -

-

- Fichas do documento de referência; montantes e metas - conservam a natureza declarada na fonte. -

-
- {territorial.map((d) => ( - + Tentar novamente + + + ) : points === null ? ( + 'A carregar o mapa…' + ) : ( + `${points.length} ${points.length === 1 ? 'local' : 'locais'} no mapa; ${unlocated.length} ${unlocated.length === 1 ? 'oportunidade' : 'oportunidades'} sem coordenadas confirmadas.` + )} +
+ )} + {!searchLoading && + !searchError && + ['map', 'combined'].includes(view) && + !error && } + {!searchLoading && + !searchError && + ['map', 'combined'].includes(view) && ( + + )} + {!searchLoading && + !searchError && + ['map', 'combined'].includes(view) && + !error && + mapContext.length > 0 && ( +
- - {d.content.code} ·{' '} - {d.cluster_id - ? 'Cluster' - : d.corridor_id - ? 'Corredor' - : 'Projecto âncora'} - -

- {d.title} -

+

+ Estruturas territoriais e projetos +

+

+ Estas fichas continuam consultáveis + independentemente de terem coordenadas. A + lista não atribui implantação às + oportunidades nem cria pontos no mapa. Até + 30 fichas por conjunto; refine a localização + para pesquisar. +

+
    + {mapContext.map((record) => ( +
  • + + {record.kind}: {record.title} + +
  • + ))} +
+
+ )} + {!searchLoading && + !searchError && + ['map', 'combined'].includes(view) && + truncated && ( +

+ O mapa atingiu o limite de 1.000 registos; + refine os filtros. A cobertura não está + completa. +

+ )} + {!searchLoading && + !searchError && + view === 'map' && + unlocated.length > 0 && ( +
+

+ {unlocated.length} investimentos sem + coordenadas de local confirmadas +

+

+ Continuam nos resultados. Seleccionar uma + província não determina a posição exacta do + investimento. +

+
    + {unlocated.map((record) => ( +
  • + + {record.title} + {' '} + —{' '} + {record.location || + 'Localização por completar'} +
  • + ))} +
+
+ )} + {view === 'corridors' && !searchLoading && !searchError && ( + { + setInvestmentSelection([]); + sessionStorage.removeItem( + 'investment-opportunity-selection', + ); + }} + onCompare={(ids) => + void api( + '/api/v1/investment/compare?' + + ids + .map((id) => 'ids[]=' + id) + .join('&'), + ) + .then((data) => setComparison(data.records)) + .catch((e) => setError(e.message)) + } + /> + )} + {view !== 'corridors' && + !searchLoading && + !searchError && + (view !== 'map' || error || points?.length === 0) && ( +
+ {results.data.map((r) => ( +
+
+

+ {r.sector?.name} +

+

+

+

+ + {r.title} + +

+

+ {r.summary} +

+
+

+ {money(r)} +

+

+ {r.proactive + ? r.proactive.group === + 'ideas' + ? 'Ideia em preparação' + : r.proactive + .group === + 'needs' + ? 'Necessidade identificada' + : 'O que existe' + : r.maturity_label} +

+
+
+
+
+ + Ver ficha +
+
+ + +
+
+
+ ))} +
+ )} + {!results.total && ( +

+ Sem oportunidades com estes filtros. Explore as + fichas territoriais ou{' '} + + peça apoio - ))} - + . +

+ )} + + {selected.length > 0 && ( + + )} + {view !== 'corridors' && !!investmentSelection.length && ( +
+

+ {investmentSelection.length} oportunidades + escolhidas, conservadas ao mudar de página. +

+ 'opportunities[]=' + id) + .join('&') + } + > + Preparar investimento com as oportunidades + escolhidas + + +
+ )} + {comparison.length > 0 && ( +
+ + + + + + {comparison.map(({ record: r }) => ( + + ))} + + + + {[ + 'Sector', + 'Província', + 'Investimento', + 'Maturidade', + 'Parceria', + 'Impacto', + ].map((field, i) => ( + + + {comparison.map(({ record: r }) => ( + + ))} + + ))} + +
+ Comparação — montantes nas moedas de origem +
Campo + {r.title} +
+ {field} + + {[ + r.sector?.name, + r.province, + money(r), + r.maturity_label, + r.financing_modality, + r.expected_impact, + ][i] || 'Não indicado'} +
+
+ )} + {territorial.length > 0 && ( +
+

+ Contexto territorial e projectos âncora +

+

+ Fichas do documento de referência; montantes e + metas conservam a natureza declarada na fonte. +

+ {[ + { + title: 'Corredores', + records: territorial.filter( + (d) => !d.cluster_id && d.corridor_id, + ), + }, + { + title: 'Clusters', + records: territorial.filter( + (d) => d.cluster_id, + ), + }, + { + title: 'Projectos âncora', + records: territorial.filter( + (d) => !d.cluster_id && !d.corridor_id, + ), + }, + ] + .filter((group) => group.records.length) + .map((group) => ( + +
+ {group.records.map((d) => ( + + + {d.content.code} ·{' '} + {d.cluster_id + ? 'Cluster' + : d.corridor_id + ? 'Corredor' + : 'Projecto âncora'} + +

+ {d.title} +

+ + ))} +
+
+ ))} +
+ )} +
- )} - + ); }