22 lines
3.3 KiB
Python
22 lines
3.3 KiB
Python
from pathlib import Path
|
|
import csv,json
|
|
R=Path(__file__).resolve().parent.parent;P=R/'storage/app/private/investmoz-v2/portal-audit'
|
|
csv.field_size_limit(16777216)
|
|
rows=list(csv.reader((R/'docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv').open(encoding='utf-8-sig',newline='')))
|
|
headers=rows[0];data={row[0]:dict(zip(headers,row)) for row in rows[1:]}
|
|
candidate=json.loads((P/'consolidated-candidate-latest.json').read_text());rev=candidate['revision'][:12]
|
|
text={
|
|
'AUD-OPS-01':f'Candidata consolidada {rev}, código117d2d889701: LocalService real S-1-5-19 em clone próprio55441, scanner13310, cinco invocações supervisionadas e scans PDF20MiB/trêsWebP; fila4→0 e repetição0→0, sem falhas/duplicações, originais/cifra recuperados. Configuração necessária lida, escrita autorizada nos diretórios QA e negada no código/vendor/config/.env; sentinela alheia ilegível. Tarefa própria removida. Restauro físico QA renovado295/31/191:22código+159bundle+1env+9documentais, incluindo4originais do destino por nome/hash. B1/B2 e renovação do backup real antes de intervenção continuam pendentes; default ativa só lida, notificações OFF, nova leitura obrigatória imediatamente antes de iniciar worker.',
|
|
'AUD-PROFILE-15':f'Delta117d2d889701 integrado na candidata consolidada {rev}, preservando98a8e0b70892. Responsável confirmou nala@tempo.co.mz e onala@me.com; leitura do destino identifica IDs2/13, email verificado/MFA confirmado/gestão legada autorizada. Os IDs3/18 iniciais foram reconciliados sem mover contas. Designação registada, sem privilégios ativos. Confirmação cruzada QA permanece provada: dois titulares, sessões/MFA independentes, sem terceiro exclusivo. Ainda faltam autorização/cerimónia no destino e contas/organização/tipos/âmbito dos papéis operacionais.',
|
|
'AUD-PROFILE-31':f'Candidata consolidada {rev}:22ficheiros de código e159assets,181noZIP; nova compilação do delta reaproveitada por hashes. Fingerprint040000 atualizado e restauroQA ligados ao código117d2d889701. Preservadas as instalações autenticadas030→040 e provas funcionais anteriores, sem repetir050000/190000. Procedimento único inclui serviços separados, prévias correspondentes, duas contas reais indicadas, ACL efetiva restrita e notificações externas OFF. Nenhuma instalação, bootstrap, serviço ou flag alterada no destino.',
|
|
}
|
|
tag=f'[Consolidação QA {rev} 11/10/2026]'
|
|
updates={key:{'Evidência funcional':data[key]['Evidência funcional']+'\n'+tag+' '+value+' Ver outputs/investmoz-workflow-consolidated-20261011/relatorio-consolidacao.md.'} for key,value in text.items()}
|
|
assert len({row[0] for row in rows[1:]})==3401
|
|
(P/'consolidated-matrix-baseline.json').write_text(json.dumps({'rows':rows,'updates':updates,'tag':tag},ensure_ascii=False),encoding='utf-8')
|
|
old=(R/'tools/portal-service-followup-matrix.mjs').read_text(encoding='utf-8')
|
|
new=old.replace('service-followup-matrix-baseline.json','consolidated-matrix-baseline.json')
|
|
new=new.replace('service-followup-matrix-before.csv','consolidated-matrix-before.csv').replace('service-followup-matrix-proof.json','consolidated-matrix-proof.json')
|
|
(R/'tools/portal-consolidated-matrix.mjs').write_text(new,encoding='utf-8')
|
|
print(json.dumps({'rows':3401,'updated_ids':list(updates),'source_history_preserved':True}))
|