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

50 lines
4.5 KiB
Markdown

# 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 <nome>" 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: <data>", 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` |