Files
Investidor-V2/tools/portal-functional-report-finalize.py
T
nala 287e991486
tests / ci (push) Waiting to run
oportunidades 7
2026-10-13 11:40:29 +02:00

16 lines
8.7 KiB
Python

"""Reconcile granular exit criteria into the existing audit, preserving its history."""
from pathlib import Path
import json
root=Path(__file__).resolve().parent.parent
doc=root/'docs/investmoz/v2/auditoria-portal'
private=root/'storage/app/private/investmoz-v2/portal-audit'
p=doc/'workflow-criterios-saida-20261011.md'
text=p.read_text(encoding='utf-8')
text=text.replace('`functional-conditions-qa-20261011.json`','`functional-conditions-semantic-qa-20261011.json`')
text=text.replace('**Leitura do serviço no destino,11:57:23UTC:**','**Leitura do serviço no destino,12:01:25UTC:**').replace('51,53horas','51,59horas')
marker='<!-- functional-category-remaining-20261011 -->'
if marker not in text:
text+=f'''\n{marker}\n\n## Critérios ainda não encerrados por categoria\n\nAs lacunas abaixo são variantes ou contratos adicionais, não uma repetição do ramo já demonstrado. “Preparado” não equivale a verificado na interface. IDs da matriz: AUD-OP-03/04, AUD-PROFILE-06/07/08/09/10/11/12/19/21/23/25/28/30/31, AUD-GEO-03, AUD-LIB-02/SCAN-01, AUD-STATS-01 e AUD-UI-01.\n\n| Categoria | Semântica ainda por critério | Materialidade ainda por prova | Documentos ainda por consumidor | Response/§27 |\n| --- | --- | --- | --- | --- |\n| Projeto | Variantes de licenciamento e pressupostos de cenários. O caso30 reconcilia rubricas; não decide viabilidade nem aprova externamente. | Valores têm hash/gates e ensaio em memória; risco tem ciclo visual. Substituição de evidência aninhada foi ensaiada em memória, não como substituição visual completa por cada variante económica. | Original/derivadas próprias têm recibos anteriores e retirada global tem prova nova. PDF/exportações de outros consumidores e ACL individual de oportunidade não ficam incluídos. | Adaptador com condições, GET sem gravação e hashes recuperados; lacunas normativas comuns abaixo. |\n| Imobiliário | Venda existente31 demonstrada. Renda e periodicidade inválidas agora têm erros próprios em memória; falta ciclo visual de arrendamento e construção planeada/urbanismo aplicável. | Preço31 anterior e titular31 agora reabrem só gates pertinentes. Variantes de licença/obra/licenciamento de arrendamento requerem os seus próprios percursos. | Licença própria obrigatória testada; variações documentais por obra/arrendamento e exposição por destinatário não encerradas. | Mesmas lacunas comuns; não converter IDs/história. |\n| Fundiário | Parcela vazia recusada; polígono administrativo não atribui terra. QA32 positiva é simulação expressa. Faltam situações reais de consulta, encargos/conflitos e compatibilidade cadastral. | Titular e ato externo tiveram ciclos diferentes. Área/unidade/comunidades/plano pertencem aos gates no código; variantes visuais adicionais precisam de casos próprios. | Ato externo sintético identificado testou o bloqueio/libertação em QA. Não comprova direito real. Sem importação cartográfica neste pacote;173lacunas e ambiguidade preservadas. | Mesmas lacunas comuns, autorização interna e decisão externa separadas. |\n| Venda de negócio | Preço/entidade/teaser ensaiados. Origem/país/repetição/estatísticas do interesse no anúncio existente não encerrados por esta oportunidade canónica; entidade sem histórico continua na proposta separada. | Identificação societária visual; financeiros, histórico/projeções e confidencialidade estão nos gates v3, faltando variantes visuais individuais. | Documentos próprios e teaser separados; mandato e destinatários por modalidade precisam de critério próprio. | Compatibilidade não estabelece equivalência automática com o anúncio do cadastro existente. |\n| Parceria | Governação/contribuições com contrato; variantes de obrigações, valor indicativo e responsabilidades reais não presumidas. | Voto alterado reabriu dois gates e preservou os demais. Contribuição monetária/não monetária e documentos adicionais ainda por variante visual. | Revogação na sala1 é prova desse consumidor. ACL individual de documentos de oportunidade não foi acrescentada; retirada global15 não a substitui. | Pareceres paralelos conservados no contexto; sem converter para um único estado normativo fictício. |\n| Franquia | Marca e identificação têm critérios demonstrados. Variantes de exclusividade, royalties e licença/território requerem evidência própria. | Registo societário visual; licença, marca, taxas/território estão nos gates, mas os ramos visuais distintos continuam pendentes. | Licença/documentação própria ligada; variantes de titularidade/confidencialidade por destinatário não fechadas por35. | Compatibilidade e recuperação demonstradas; mesmas lacunas normativas comuns. |\n\n**Lacunas comuns de§27:** IDs bigint existentes para raiz/atores/setor, referência histórica existente, metadata de criação histórica desconhecida e pareceres paralelos. O adaptador não satisfaz a forma normativa integral; estes valores não serão transformados nem inventados. A candidata aceita explicitamente o contrato de compatibilidade existente e expõe `normative_response_complete=false`. Uma eventual migração de identidade/estados exige desenho e aprovação próprios, não está escondida neste lote.\n\n## Consumidores incluídos: saída e limite\n\n| Rota | Perfil e ação | Evidência de saída | Critério que permanece fora desse fecho |\n| --- | --- | --- | --- |\n| `/minhas-oportunidades` | Promotor21: categoria/estado/texto/filas | Clique Pesquisar,6consultas, indicadores e SQL independente coincidentes. Teclado/atalho/axe/320/390px. | Combinações novas de filtros e outras filas/perfis por variante; leitor real. |\n| `/minhas-oportunidades/15/edit` e`/resources` | Coeditor22: país/hierarquia/mapa/PDF; autor21 recupera; outraorg23 recusa | Coedição prévia HTTP preservada. Nova sessão, mapa Cabo Delgado/Ancuabe, limpeza de descendentes, original scaneado/hash, retirada404/restauro mesmosbytes. | Coedição de correção pós-submissão e revogação do coeditor nessa ação; ACL individual. |\n| `/minhas-oportunidades/30..35/view` | Promotor/Validador24/Publicador25: materialidade/condição/aprovação/publicação | Seis ramos novos com recuperações, independência e GET Response sem nova versão. Land32 positiva recuperada noutra sessão; publicação prévia422 externa preservada. | Variantes da tabela acima; restauração de oportunidade aguardando política. |\n| `/management/interests` | Gestão17: origem unknown/PT+paísMZ+texto | Listas e três coleções estatísticas separadas; origem determina estatística, país/texto determinam lista, conforme UI. | Interesse público de negócio existente e outras modalidades/transições; país/texto não passam a filtrar estatísticas por inferência. |\n| `/management/opportunity-resources-install` | Gestor17/MFA: prévia030000 | InstaladoQA, fingerprint/dependências recuperados; nenhuma reinstalação. | Prévia/prontidão/backup do alvo ativo ainda necessários. |\n| `/management/profile-install` | TitularQA26/MFA: prévia040000 | Ledger/schema8itens/dependências consistentes e dupla existente preservada. | Bootstrap/designações legítimas no ativo e prévia correspondente. |\n\nA revisão de acessibilidade inclui9rotas, não todo o portal; leitor de ecrã real, dispositivos físicos e PDFs etiquetados continuam separados. Mapas partilhados mantêm o resultado anterior quando não há geometria: não há preenchimento fictício.\n\n## Recuperação e destino\n\nRestauro QA de12:10:22UTC:295tabelas,31sequências,270ficheiros,16envelopes MFA normais recuperáveis. Conta19 é o controlo **Synthetic wrong-key MFA negative control QA**, criado por`tools/portal-qa-mfa.php` com chave estrangeira; deve continuar a rejeitar desencriptação. Não foi reparada nem autenticada. Os envelopes herdados13/2 recuperam com a chave da origem conservada no backup privado. Nenhuma chave/cifra/conta foi alterada, e C37 não foi reaberto.\n\nLeitura ativa em12:14:31UTC, transaçãoREADONLY:288tabelas,13contas,0organizações/representações,1990territórios cadastrados e **0geometrias**.020000/050000 presentes;030000/040000/190000 ausentes. COUNTRY02ON e demais flagsOFF; manifesto ativo`250ae618d716c0ffff1cfe3409cf55ba18e52f0ec86d305aa938fe2375adda4b`conservado. Assim, mostrar limites administrativos no destino requer importação cartográfica **separadamente autorizada**; territórios cadastrados não a substituem. A candidata atual não importa nem publica camadas.\n\nO backup QA não renova o backup/restauro ativo. O cenário organizacional continua dependente de cadastro/representação legítimos; a alternativa individual exige perfil funcional autorizado e não inventa organização.\n'''
p.write_text(text,encoding='utf-8')
print(json.dumps({'report_updated':True,'active_writes':0}))