Files
DevEnv nis2-agileandClaude Opus 4.8 4dfab2a391 [FORMAZIONE] Avatar di prodotto — mappa-logica COMPLETA (22 viste) + SELETTORI_DEMO + tassonomia corso + fix kb.js
Deliverable formazione-first (DESIGN_AVATAR_FORMAZIONE / product-demo-complete):
- docs/mappa-logica/01..22_*.md: tutte le viste app V2 mappate (formato canonico standard §2),
  selettori VERIFICATI sul DOM reale, endpoint verificati su api.js/script, gate ruolo dai controller
- docs/mappa-logica/SELETTORI_DEMO.md: registry canonico (22 viste, 131 visualizzazione + 89 azioni)
  + worklist consolidata 132 id stabili da aggiungere (modifiche chirurgiche future)
- docs/formazione/TASSONOMIA_CORSO_NIS2.{md,json}: 10 moduli / 28 lezioni / ~7h45, prerequisiti+durate,
  esame con soglia 80%, sandbox 'prova tu' org 996002
- fix kb.js: ingest scope=ORG ora invia organization_id (prima 422 KB_ORG_REQUIRED) — bug trovato da A2

Prodotto con 4 trittici di agenti (A1 esecutore -> A2 revisore -> A3 controllore avversariale):
A2: ~14 correzioni (cross-ref, gate ruolo, comportamenti); A3 PASS: 38 selettori campionati 0 rotti,
18 endpoint reali, 0 violazioni normative (Allegati 3/4, IS-4, '1 mese', PII.* interna), 9 claim verificati.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-12 18:50:19 +02:00

7.2 KiB

MAPPA-LOGICA · Audit & Report

⟦ INIZIO · U-REPORTS · Videata "Audit & Report" ⟧ File: public/reports.html · URL: /reports.html · Scopo: reportistica di compliance NIS2: report esecutivo stampabile, gestione dei controlli di compliance (framework NIS2/ISO 27001), audit log immutabile, mapping NIS2↔ISO 27001:2022, monitoraggio continuo dei controlli (evidence automation) e requisiti operativi ACN (Determina 164179/2025) · Profili: tutti gli utenti autenticati dell'organizzazione (voce sidebar "Audit & Report"); aggiornamento controlli/requisiti soggetto ai permessi backend (org_admin, compliance_manager, auditor in lettura)

• U-REPORTS.1 — Intestazione pagina e tab di navigazione (6 tab) Mostra: titolo "Audit & Report"; pulsante "Genera Report"; 6 tab: "Report Compliance" (attivo di default), "Controlli", "Audit Log", "ISO 27001", "Monitoraggio Continuo", "Requisiti ACN" Azioni: "Genera Report" → generateReport() (attiva il tab Report e genera); click tab → switchTab() attiva il pannello e carica i dati corrispondenti Dati da: nessun endpoint diretto (ogni tab innesca il proprio caricamento) Confine: header.content-header (righe ~352-357) e div.tab-nav (righe ~361-368); pulsante e bottoni tab NON hanno id stabile

• U-REPORTS.2 — Tab "Report Compliance" (report esecutivo) Mostra: stato iniziale: "Nessun report generato — Clicca 'Genera Report'". Dopo la generazione: intestazione "Report di Compliance NIS2" con nome organizzazione e data/ora; sezione "Informazioni Organizzazione" (Nome, Settore, Tipo Entita', Paese); sezione "Riepilogo Compliance" con barra percentuale colorata (verde ≥80%, giallo ≥50%, rosso <50%) e 5 KPI: Controlli Totali, Implementati, Rischi Aperti, Incidenti, Policy Approvate; sezione "Stato Controlli" (tabella Codice, Titolo, Stato, Implementazione — barra colorata con %); pulsante "Stampa Report" Azioni: "Genera Report" (header) → GET report e render; "Stampa Report" → window.print() (CSS @media print nasconde sidebar/header/tab) Dati da: GET /api/audit/report (api.generateComplianceReport()) Confine: pannello #tab-report (riga ~371), contenuto in #report-container (~372)

• U-REPORTS.3 — Tab "Controlli" (compliance controls) Mostra: tabella controlli: Codice (monospace), Framework (NIS2/ISO27001), Titolo, Stato (badge: Non Iniziato, In Corso, Implementato, Verificato), % Implementazione (barra colorata), Responsabile, Prossima Verifica. Righe cliccabili. Stato vuoto: "Nessun controllo configurato — appariranno dopo il primo assessment" Azioni: click riga → modale "Modifica Controllo: {codice}" con: Titolo (sola lettura), Stato (#ctrl-status), % Implementazione (slider #ctrl-impl-pct con valore live in #ctrl-impl-pct-val), Descrizione Evidenza (#ctrl-evidence), Responsabile ID utente (#ctrl-responsible), Prossima Verifica (#ctrl-next-review); "Salva" → saveControl(id) e ricarica Dati da: GET /api/audit/controls (api.listControls()) · PUT /api/audit/controls/{id} (api.updateControl(id, data)) Confine: pannello #tab-controls (riga ~382), contenuto in #controls-container (~383); campi modale #ctrl-* (righe ~827-846) dentro #modal-overlay

• U-REPORTS.4 — Tab "Audit Log" (registro attivita') Mostra: tabella paginata (25 per pagina): Data/Ora, Utente, Azione (etichette italiane: "Accesso effettuato", "Rischio creato", "Policy approvata", "Pre-allarme inviato", "Evidenza caricata", ecc.), Entita' (tipo + #id), Dettagli (JSON appiattito in "chiave: valore", troncato con tooltip); paginazione "Precedente / Pagina N di M / Successiva". Stato vuoto: "Nessun log disponibile" Azioni: "Precedente"/"Successiva" → goAuditPage(n) ricarica la pagina richiesta Dati da: GET /api/audit/logs?page=N&per_page=25 (api.getAuditLogs(params)) Confine: pannello #tab-audit (riga ~392), contenuto in #audit-container (~393); i pulsanti di paginazione (HTML dinamico) NON hanno id stabile

• U-REPORTS.5 — Tab "ISO 27001" (mapping normativo) Mostra: card "Mapping NIS2 - ISO 27001:2022" con righe di corrispondenza: badge "Art. {nis2}" → freccia → badge dei controlli ISO 27001 corrispondenti → titolo descrittivo della misura. Stato vuoto: "Nessun mapping disponibile" Azioni: nessuna (sola lettura) Dati da: GET /api/audit/iso27001-mapping (api.getIsoMapping()) Confine: pannello #tab-iso (riga ~402), contenuto in #iso-container (~403)

• U-REPORTS.6 — Tab "Monitoraggio Continuo" (continuous control monitoring) Mostra: testo introduttivo: stato di freschezza dei controlli alimentato dalle evidenze automatiche dei connettori (Evidence Automation), con copertura % (monitorati/totali); 5 card di sintesi: Sano (verde), Attenzione (giallo), Evidenza scaduta (arancione), Non conforme (rosso), Non monitorato (grigio); tabella: Stato (pallino colorato), Controllo (codice), Titolo, Ultima evidenza (o "mai"), Freschezza (giorni). Stato vuoto in tabella: "Nessun controllo. Le evidenze arrivano via POST /api/services/evidence-ingest." Azioni: nessuna (sola lettura; le evidenze sono ingerite da sistemi esterni via Services API) Dati da: GET /api/audit/controlsMonitoring (api.getControlsMonitoring()) Confine: pannello #tab-monitoring (riga ~412), contenuto in #monitoring-container (~413)

• U-REPORTS.7 — Tab "Requisiti ACN" (specifiche di base, Determina ACN 164179/2025) Mostra: testo introduttivo: requisiti operativi "specifiche di base ACN" (Determina 164179/2025, Framework Nazionale 2025) per il tipo di soggetto dell'organizzazione (essenziale/importante), totale requisiti e "Compliance: N%" con citazione della fonte; 4 card di sintesi: Implementato (verde), In corso (giallo), Da iniziare (grigio), Non applicabile (grigio scuro); requisiti raggruppati per funzione del Framework, in tabelle con colonne: Sottocat. (codice sottocategoria con tooltip testo integrale), Requisito, Stato (pallino + select inline: Da iniziare, In corso, Implementato, Non applicabile) Azioni: cambio select stato → updateAcn(id, status) salva subito e ricarica il tab Dati da: GET /api/audit/acnRequirements (api.getAcnRequirements()) · PUT /api/audit/acnRequirements/{id} (api.updateAcnRequirement(id, status, note)) Confine: pannello #tab-acn (riga ~421), contenuto in #acn-container (~422); le select di stato (HTML dinamico) NON hanno id stabile

⟦ FINE · U-REPORTS ⟧

ID STABILI MANCANTI (da aggiungere)

Elemento Riga Id proposto
Pulsante "Genera Report" (header) 355 nis2-reports-btn-generate
Contenitore tab bar div.tab-nav 361 nis2-reports-tabs
Bottone tab "Report Compliance" 362 nis2-reports-tab-btn-report
Bottone tab "Controlli" 363 nis2-reports-tab-btn-controls
Bottone tab "Audit Log" 364 nis2-reports-tab-btn-audit
Bottone tab "ISO 27001" 365 nis2-reports-tab-btn-iso
Bottone tab "Monitoraggio Continuo" 366 nis2-reports-tab-btn-monitoring
Bottone tab "Requisiti ACN" 367 nis2-reports-tab-btn-acn
Pulsante "Stampa Report" (HTML dinamico nel report) 722 nis2-reports-btn-print
Select stato requisito ACN (HTML dinamico per riga) 543 nis2-reports-acn-status-{id}