# MAPPA-LOGICA · Pannello Amministrazione ⟦ INIZIO · U-ADMIN-INDEX · Videata "Pannello Amministrazione" ⟧ File: public/admin/index.html · URL: /admin/index.html · Scopo: dashboard di amministrazione piattaforma — KPI globali su organizzazioni, utenti, assessment, incidenti, rischi e AI, distribuzione piani di abbonamento, collegamenti rapidi alle gestioni · Profili: solo `super_admin` (check `api.getMe()`: se `role !== 'super_admin'` notifica "Accesso non autorizzato..." e redirect a /dashboard.html dopo 1,5s, righe 327-339) • U-ADMIN-INDEX.1 — Header pagina Mostra: titolo "Pannello Amministrazione" + badge rosso "Super Admin" Azioni: nessuna Dati da: nessuna Confine: `header.content-header` (riga 191, senza id) • U-ADMIN-INDEX.2 — Riga statistiche 1 (organizzazioni e utenti) Mostra: 4 card KPI: "Totale Organizzazioni", "Organizzazioni Attive", "Totale Utenti", "Utenti Attivi" (valori "--" finché non caricati) Azioni: nessuna (solo lettura) Dati da: GET /api/admin/stats (campi `total_organizations`, `active_organizations`, `total_users`, `active_users`) Confine: `#stats-row-1` (riga 200); valori `#stat-total-orgs`, `#stat-active-orgs`, `#stat-total-users`, `#stat-active-users`; etichette `#lbl-total-orgs`, `#lbl-active-orgs`, `#lbl-total-users`, `#lbl-active-users` • U-ADMIN-INDEX.3 — Riga statistiche 2 (attività compliance) Mostra: 4 card KPI: "Assessment Completati", "Incidenti Aperti", "Totale Rischi", "Interazioni AI" Azioni: nessuna Dati da: GET /api/admin/stats (campi `completed_assessments`, `open_incidents`, `total_risks`, `ai_interactions`) Confine: `#stats-row-2` (riga 232); valori `#stat-assessments`, `#stat-incidents`, `#stat-risks`, `#stat-ai`; etichette `#lbl-assessments`, `#lbl-incidents`, `#lbl-risks`, `#lbl-ai` • U-ADMIN-INDEX.4 — Card "Distribuzione Piani" Mostra: grafico a barre verticali con conteggio organizzazioni per piano: Free (grigio), Professional (blu), Enterprise (viola); spinner durante il caricamento; `aria-label` descrittivo per accessibilità Azioni: nessuna (grafico statico renderizzato da `renderPlansChart`) Dati da: GET /api/admin/stats (campo `plans_distribution`: array di `{subscription_plan, count}`) Confine: `#plans-chart` (riga 269) • U-ADMIN-INDEX.5 — Card "Gestione Piattaforma" (collegamenti rapidi) Mostra: 2 card-link: "Gestisci Organizzazioni" ("Visualizza e gestisci tutte le organizzazioni registrate sulla piattaforma.") e "Gestisci Utenti" ("Visualizza e gestisci tutti gli utenti registrati sulla piattaforma.") Azioni: click → naviga a /admin/organizations.html oppure /admin/users.html Dati da: nessuna Confine: `nav.quick-links-grid[aria-label="Collegamenti rapidi gestione piattaforma"]` (riga 281, senza id); singole card `a.quick-link-card` (righe 282 e 291, senza id) • U-ADMIN-INDEX.6 — Sidebar di navigazione Mostra: sidebar Bootstrap Italia condivisa dell'app (iniettata da `loadSidebar()` di /js/common-bi.js) Azioni: navigazione app Dati da: nessuna Confine: `#sidebar` (riga 188) ⟦ FINE · U-ADMIN-INDEX ⟧ ## ID STABILI MANCANTI (da aggiungere) | Elemento | Riga | Id proposto | |---|---|---| | Header pagina con badge Super Admin | 191 | `nis2-admin-header` | | Nav collegamenti rapidi | 281 | `nis2-admin-quick-links` | | Card-link "Gestisci Organizzazioni" | 282 | `nis2-admin-link-organizations` | | Card-link "Gestisci Utenti" | 291 | `nis2-admin-link-users` | | Card "Distribuzione Piani" (contenitore card) | 264 | `nis2-admin-plans-card` |