Files
nis2-agile/docs/mappa-logica/10_reports.md
T
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

63 lines
7.2 KiB
Markdown

# 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}` |