Files
nis2-agile/docs/mappa-logica/12_normative.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

4.5 KiB

MAPPA-LOGICA · Aggiornamenti Normativi

⟦ INIZIO · U-NORMATIVE · Videata "Aggiornamenti Normativi" ⟧ File: public/normative.html · URL: /normative.html · Scopo: feed degli aggiornamenti normativi NIS2 / ACN / DORA / ENISA / ISO 27001 con presa visione (ACK) tracciata e documentata ai fini dell'audit di compliance NIS2 Art.21 · Profili: lettura (lista, pendenti, statistiche) per tutti i membri dell'organizzazione; la presa visione (POST ack) è riservata a org_admin e compliance_manager (super_admin bypassa) — gate backend requireOrgRole in NormativeController::acknowledge; la UI mostra comunque il bottone "Prendi in visione" a tutti, ma per gli altri ruoli il backend risponde 403 INSUFFICIENT_ROLE. La presa visione è registrata con nome utente.

• U-NORMATIVE.1 — Header pagina + "Solo Pendenti" Mostra: titolo "Aggiornamenti Normativi", sottotitolo "Feed NIS2 / ACN / DORA — Presa visione obbligatoria per audit compliance". Azioni: bottone "Solo Pendenti" → loadPending() → mostra solo gli aggiornamenti non ancora presi in visione. Dati da: GET /api/normative/pending (risposta: data.pending[]). Confine: .page-header (riga 35); bottone senza id, dentro .page-header-actions (riga 41).

• U-NORMATIVE.2 — Statistiche (4 card) Mostra: "Aggiornamenti Totali" (total_updates), "Prese Visione" (acknowledged, verde), "Pendenti" (pending, ambra), "Compliance ACK" (ack_rate %, colore primario). Azioni: nessuna (lettura). Dati da: GET /api/normative/stats (renderizzata da renderStats()). Confine: #stats-grid (riga 49).

• U-NORMATIVE.3 — Barra "Avanzamento presa visione" Mostra: percentuale ACK (es. "75%") e progress bar proporzionale; nota: "Documentare la presa visione degli aggiornamenti normativi è richiesto per la compliance NIS2 Art.21". Azioni: nessuna (lettura). Dati da: GET /api/normative/stats (campo ack_rate). Confine: #ack-pct (riga 58) e #ack-bar (riga 61).

• U-NORMATIVE.4 — Filtri lista Mostra: select "Tutte le fonti" (D.Lgs. 138/2024, Direttiva NIS2, ACN Guideline, DORA, ENISA, ISO 27001); select "Tutti i livelli" di impatto (Critico, Alto, Medio, Basso, Informativo); checkbox "Solo azione richiesta". Azioni: ogni cambio filtro → loadUpdates() ricarica la lista con i parametri query source / impact / action_required=1. Dati da: GET /api/normative/list?source=&impact=&action_required= (risposta: data.updates[]). Confine: #filter-source (riga 72), #filter-impact (riga 82), #filter-action (riga 91).

• U-NORMATIVE.5 — Lista card aggiornamenti Mostra: per ogni aggiornamento una card con: chip fonte (es. "D.Lgs. 138/2024"), badge impatto colorato (Critico/Alto/Medio/Basso/Informativo), badge "Azione richiesta" (se action_required, con bordo sinistro ambra), badge presa visione ("Preso in visione da " verde, oppure "Da prendere in visione" ambra — card già ACK in opacità ridotta), titolo, riferimento normativo (code), sommario, chip dei domini impattati (affected_domains), data "In vigore: ", link "Fonte" (apre l'URL ufficiale in nuova scheda). Azioni: bottone "Prendi in visione" (solo se non ancora ACK) → apre la modale di presa visione (U-NORMATIVE.6); link "Fonte" → URL esterno. Dati da: GET /api/normative/list (o /api/normative/pending in modalità "Solo Pendenti"). Confine: #updates-container (riga 98); singole card generate via JS con id #update-<id> (riga 207 dello script inline).

• U-NORMATIVE.6 — Modale "Presa Visione" Mostra: testo esplicativo (documentare la presa visione, note opzionali sull'impatto per l'organizzazione); textarea "Note (opzionale)". Azioni: "Conferma presa visione" → confirmAck(id) → POST con le note, poi notifica "Presa visione registrata e documentata.", ricarica lista e statistiche; "Annulla" → chiude la modale. Dati da: POST /api/normative/{id}/ack (body: {notes}) — richiede ruolo org_admin o compliance_manager (super_admin bypassa); altri ruoli ricevono 403 INSUFFICIENT_ROLE. Confine: modale generata da showModal() di common.js; campo note #ack-notes (riga 249 dello script inline, esiste solo a modale aperta).

⟦ FINE · U-NORMATIVE ⟧

ID STABILI MANCANTI (da aggiungere)

Elemento Riga Id proposto
Bottone "Solo Pendenti" nell'header 41 nis2-normative-btn-pending
Bottone "Prendi in visione" su card (dinamico) 230 (template JS) nis2-normative-btn-ack-<id> (o data-attribute data-ack-id)
Card barra avanzamento ACK 54 nis2-normative-ack-card