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

19 lines
2.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='')))
f=rows[0];data={r[0]:dict(zip(f,r)) for r in rows[1:]}
updates={
'AUD-OPS-01':'B2: Agendador Windows real em QA, PT3M/sem PCNTL; vivo aos178,227s e terminado aos180,244s. Trabalho reservado21 recuperado após lease210s; documento/cifra/hashes preservados, sem duplicações. Fila ativa default lida sem providers: zero jobs/failed_jobs, quatro classes conhecidas, efeito SMTP potencial identificado e notificações OFF. LocalService/ACLs, ClamD3310/PHP web do destino e intervenção B1/B2 continuam pendentes.',
'AUD-PROFILE-15':'Confirmação cruzada implementada e ensaiada como delta QA117d2d889701, separado da candidata98a8e0b70892: primeiro titular com autorização legada+MFA pede; segundo, sem gestão geral prévia, confirma por rota específica+MFA. Pedido sem privilégios, nova sessão recupera link pendente, sem autoaprovação/conta alheia/expiração/troca de hash ou código; dupla/auditoria atómicas e replay sem duplicação. Zero tabelas novas neste delta. Nomes reais e integração na candidata continuam pendentes; terceiro inicializador deixou de ser requisito do delta QA. Substituição/elevação independentes preservadas.',
'AUD-PROFILE-31':'Pré-instalação e guardas do clone mantidos; não repetidas030/040 autenticadas já provadas na candidata. Bootstrap cruzado em QA reutiliza portal_security_approvals, recibos e Fortify, em seis ficheiros e bundle159assets. Restauro pós-uso atual será ligado no relatório. Delta não integrado/ativado; flags/restauração/partilha individual do destino não alteradas.',
}
tag='[QA serviços e confirmação cruzada 11/10/2026]'
for id,text in updates.items():
assert id in data
updates[id]={'Evidência funcional':data[id]['Evidência funcional']+'\n'+tag+' '+text+' Ver outputs/investmoz-service-followup-20261011/relatorio.md.'}
payload={'rows':rows,'updates':updates,'tag':tag}
(P/'service-followup-matrix-baseline.json').write_text(json.dumps(payload,ensure_ascii=False),encoding='utf-8')
print(json.dumps({'rows':len(rows)-1,'updates':list(updates),'new_ids':0}))