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>
59 lines
4.6 KiB
Markdown
59 lines
4.6 KiB
Markdown
# MAPPA-LOGICA · Dashboard
|
|
|
|
⟦ INIZIO · U-DASHBOARD · Videata "Dashboard" ⟧
|
|
File: public/dashboard.html · URL: /dashboard.html · Scopo: panoramica iniziale della compliance NIS2 dell'organizzazione (score, KPI, scadenze, attività) · Profili: tutti gli utenti autenticati con organizzazione (org_admin, compliance_manager, board_member, auditor, employee, consultant; super_admin)
|
|
|
|
• U-DASHBOARD.1 — Intestazione pagina
|
|
Mostra: titolo "Dashboard" e data corrente in italiano (es. "giovedì 12 giugno 2026"), valorizzata da JS.
|
|
Azioni: nessuna.
|
|
Dati da: data locale del browser (`new Date().toLocaleDateString('it-IT')`), nessuna API.
|
|
Confine: `#header-date` (riga ~23); header = `.content-header` (riga ~20).
|
|
|
|
• U-DASHBOARD.2 — Gauge "Avanzamento implementazione misure Art.21 NIS2"
|
|
Mostra: gauge circolare con percentuale di avanzamento implementazione delle misure Art.21 NIS2. Nota sotto il gauge: "Misura l'implementazione tecnica, non la conformita' legale". Il valore preferisce la % controlli implementati (`avg_implementation`); se assente ripiega sul punteggio assessment (`score`).
|
|
Azioni: nessuna (solo visualizzazione).
|
|
Dati da: `GET /api/dashboard/overview` (campo `compliance_score`) poi raffinato da `GET /api/dashboard/compliance-score` (campi `avg_implementation`, `score`).
|
|
Confine: `#compliance-gauge` (riga ~33).
|
|
|
|
• U-DASHBOARD.3 — Card statistiche (4 KPI)
|
|
Mostra: 4 stat-card con etichette reali: "Rischi Aperti" (totale rischi), "Incidenti Attivi", "Policy Approvate" (somma policy con status approved/published), "Formazione" (percentuale completamento corsi assegnati).
|
|
Azioni: nessuna (solo visualizzazione).
|
|
Dati da: `GET /api/dashboard/overview` — campi `risks.total`, `active_incidents`, `policies[]` (status+count), `training.total`/`training.completed`.
|
|
Confine: griglia `#stats-grid` (riga ~43); valori in `#stat-risks` (riga ~50), `#stat-incidents` (riga ~59), `#stat-policies` (riga ~68), `#stat-training` (riga ~77).
|
|
|
|
• U-DASHBOARD.4 — Azioni Rapide
|
|
Mostra: card "Azioni Rapide" con 3 bottoni: "Nuovo Assessment", "Registra Incidente", "Genera Policy AI".
|
|
Azioni: "Nuovo Assessment" → naviga a assessment.html; "Registra Incidente" → naviga a incidents.html; "Genera Policy AI" → apre la modale di generazione policy AI (vedi U-DASHBOARD.7).
|
|
Dati da: nessuna API in questa area (solo navigazione/apertura modale).
|
|
Confine: card alle righe ~85-105; bottoni con classe `.quick-action-btn` dentro `.quick-actions` (riga ~90). Nessun id stabile sui singoli bottoni (vedi sezione ID mancanti).
|
|
|
|
• U-DASHBOARD.5 — Prossime Scadenze
|
|
Mostra: lista delle prossime 5 scadenze con giorno/mese, titolo, categoria; badge "Urgente" se ≤3 giorni, "Prossima" se ≤7 giorni. Empty state: "Nessuna scadenza imminente".
|
|
Azioni: nessuna.
|
|
Dati da: `GET /api/dashboard/upcoming-deadlines` (campi `due_date`, `title`/`description`, `category`/`type`).
|
|
Confine: `#deadlines-list` (riga ~114).
|
|
|
|
• U-DASHBOARD.6 — Attività Recenti
|
|
Mostra: lista delle ultime 8 attività con descrizione e tempo relativo ("x minuti fa"). Empty state: "Nessuna attivita' recente".
|
|
Azioni: nessuna.
|
|
Dati da: `GET /api/dashboard/recent-activity` (campi `description`/`message`/`action`, `created_at`).
|
|
Confine: `#activity-list` (riga ~124).
|
|
|
|
• U-DASHBOARD.7 — Modale "Genera Policy con AI" (generata via JS)
|
|
Mostra: select "Categoria Policy" con 8 opzioni: Gestione del Rischio, Risposta agli Incidenti, Continuita' Operativa, Sicurezza Supply Chain, Controllo degli Accessi, Crittografia, Sicurezza del Personale, Gestione degli Asset.
|
|
Azioni: "Genera" → chiama l'AI, notifica "Generazione policy in corso...", a successo redirige a policies.html; "Annulla" → chiude la modale.
|
|
Dati da: `POST /api/policies/ai-generate` (body `{category}`).
|
|
Confine: modale iniettata da `showModal()` in `#modal-overlay` (creato da common.js); select `#ai-policy-category` (definito nel JS, riga ~310 dello script inline).
|
|
|
|
⟦ FINE · U-DASHBOARD ⟧
|
|
|
|
## ID STABILI MANCANTI (da aggiungere)
|
|
| Elemento | Riga | Id proposto |
|
|
|---|---|---|
|
|
| Bottone "Nuovo Assessment" (azioni rapide) | ~91 | `nis2-dashboard-qa-assessment` |
|
|
| Bottone "Registra Incidente" (azioni rapide) | ~95 | `nis2-dashboard-qa-incidente` |
|
|
| Bottone "Genera Policy AI" (azioni rapide) | ~99 | `nis2-dashboard-qa-policy-ai` |
|
|
| Card "Azioni Rapide" | ~85 | `nis2-dashboard-quick-actions` |
|
|
| Card "Prossime Scadenze" (wrapper card, il body ha già `#deadlines-list`) | ~110 | `nis2-dashboard-card-scadenze` |
|
|
| Card "Attivita' Recenti" (wrapper card, il body ha già `#activity-list`) | ~120 | `nis2-dashboard-card-attivita` |
|