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

40 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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` |