Files
nis2-agile/docs/mappa-logica/21_admin-organizations.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

3.3 KiB
Raw Blame History

MAPPA-LOGICA · Gestione Organizzazioni (admin)

⟦ INIZIO · U-ADMIN-ORGS · Videata "Gestione Organizzazioni" (admin) ⟧ File: public/admin/organizations.html · URL: /admin/organizations.html · Scopo: elenco paginato in sola lettura di TUTTE le organizzazioni registrate sulla piattaforma con classificazione NIS2, membri, ultimo score, piano e stato · Profili: solo super_admin (check api.getMe(): se role !== 'super_admin' notifica "Accesso non autorizzato." e redirect a /dashboard.html dopo 1,5s, righe 159-171)

• U-ADMIN-ORGS.1 — Header pagina e breadcrumb Mostra: titolo "Gestione Organizzazioni" + badge rosso "Super Admin"; breadcrumb "Amministrazione › Organizzazioni" Azioni: click "Amministrazione" → torna a ../admin/index.html Dati da: nessuna Confine: header.content-header (riga 110) e nav.admin-breadcrumb[aria-label="Percorso di navigazione"] (riga 119), entrambi senza id

• U-ADMIN-ORGS.2 — Tabella organizzazioni Mostra: tabella con colonne: Nome, Settore (etichette italiane da mappa sectorLabels: Energia, Trasporti, Banche, Sanità, Acqua, Infrastrutture Digitali, Pubblica Amministrazione, Manifatturiero, Servizi Postali, Chimico, Alimentare, Rifiuti, Servizi ICT, Provider Digitali, Spazio, Ricerca, Altro), Tipo Entità (badge "Essenziale" rosso / "Importante" giallo / "N/A" grigio), Membri (conteggio), Ultimo Score (pallino colorato + percentuale arrotondata, "-" se assente), Piano (badge Free/Professional/Enterprise), Stato (pallino "Attiva" verde / "Inattiva" grigio), Data Creazione. Spinner durante il caricamento; stato vuoto "Nessuna organizzazione trovata / Le organizzazioni registrate appariranno qui."; in caso di errore "Errore nel caricamento" o "Errore di connessione". Azioni: nessuna azione per riga (vista in sola lettura, nessun bottone modifica/elimina) Dati da: GET /api/admin/organizations?page={n} (campi per riga: name, sector, entity_type, member_count, last_score, subscription_plan, is_active, created_at; pagination: total, per_page default 20, page) Confine: #orgs-container (riga 128); tabella e righe generate dinamicamente da renderOrganizations senza id

• U-ADMIN-ORGS.3 — Paginazione Mostra: se più pagine: "Visualizzati {start}-{end} di {total} organizzazioni" + bottoni "« Precedente" / "Successivo »" (disabilitati ai bordi); se una sola pagina: "Totale: {n} organizzazione/i" Azioni: "Precedente"/"Successivo" → loadOrganizations(page±1) ricarica la tabella Dati da: GET /api/admin/organizations?page={n} (stesso endpoint, parametro page) Confine: .pagination dentro #orgs-container (generata dinamicamente, righe 286-309 del sorgente; senza id)

• U-ADMIN-ORGS.4 — Sidebar di navigazione Mostra: sidebar Bootstrap Italia condivisa (iniettata da loadSidebar() di ../js/common-bi.js) Azioni: navigazione app Dati da: nessuna Confine: #sidebar (riga 107)

⟦ FINE · U-ADMIN-ORGS ⟧

ID STABILI MANCANTI (da aggiungere)

Elemento Riga Id proposto
Header pagina 110 nis2-admin-orgs-header
Breadcrumb 119 nis2-admin-orgs-breadcrumb
Tabella organizzazioni (generata in JS) 228-229 nis2-admin-orgs-table
Bottone paginazione "Precedente" 293 nis2-admin-orgs-prev
Bottone paginazione "Successivo" 296 nis2-admin-orgs-next