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