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>
50 lines
4.5 KiB
Markdown
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` |
|