Files
nis2-agile/docs/mappa-logica/02_assessment.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

5.6 KiB

MAPPA-LOGICA · Gap Analysis NIS2 (Assessment)

⟦ INIZIO · U-ASSESSMENT · Videata "Gap Analysis NIS2" ⟧ File: public/assessment.html · URL: /assessment.html · Scopo: condurre l'assessment di conformità NIS2 (80 domande, 10 categorie Art.21), vedere i risultati per categoria, lanciare l'analisi AI e generare NCR dai gap · Profili: tutti gli utenti autenticati con organizzazione (org_admin, compliance_manager, board_member, auditor, employee, consultant; super_admin)

• U-ASSESSMENT.1 — Intestazione con bottone "Analisi AI" Mostra: titolo "Gap Analysis NIS2"; bottone "Analisi AI" nascosto finché non si è nella vista risultati. Azioni: "Analisi AI" → lancia l'analisi AI sull'assessment corrente (vedi U-ASSESSMENT.6). Dati da: POST /api/assessments/{id}/ai-analyze. Confine: #btn-ai-analyze (riga ~23).

• U-ASSESSMENT.2 — Schermata iniziale "Assessment di Conformita' NIS2" Mostra: card introduttiva con testo "Valuta il livello di conformita' della tua organizzazione rispetto ai requisiti della direttiva NIS2"; tabella "Assessment Esistenti" (colonne: Data, Stato, Punteggio, Azioni) con badge "Completato"/"In Corso"; bottone primario "Nuovo Assessment". Azioni: "Nuovo Assessment" → crea un assessment e apre il wizard; per riga esistente: "Risultati" (se completato) → vista risultati; "Riprendi" (se in corso) → riapre il wizard. Dati da: lista: GET /api/assessments/list; creazione: POST /api/assessments/create (body {title}). Confine: #assessment-start (riga ~32); tabella in #existing-assessments (riga ~37); bottone #btn-new-assessment (riga ~39).

• U-ASSESSMENT.3 — Wizard: indicatore step e barra avanzamento Mostra: step cliccabili numerati per categoria (10 categorie Art.21, generati via JS con classe .step); barra "Avanzamento risposta domande" con percentuale e contatore "N di M domande con risposta". Azioni: click su uno step → salta alla categoria (consentito solo verso categorie già visitate o la successiva). Dati da: GET /api/assessments/{id}/questions (struttura: array di {category_id, category_title, questions[]}). Confine: wizard #assessment-wizard (riga ~47); step #steps-indicator (riga ~49); barra #progress-bar-fill (riga ~58), percentuale #progress-pct (riga ~55), contatori #progress-answered / #progress-total (riga ~61).

• U-ASSESSMENT.4 — Wizard: card domanda corrente Mostra: titolo categoria, contatore "n/totale"; testo domanda con eventuale guida (guidance_it) e tag "Art. " e "ISO <controllo 27001>"; 4 radio "Livello di Conformita'": Non Implementato, Parziale, Implementato, Non Applicabile; slider "Livello di Maturita' (0-5)" da "0 - Inesistente" a "5 - Ottimizzato"; campo "Note"; campo "Descrizione Evidenza". Azioni: "Precedente" → domanda precedente; "Salva Progresso" → salva la risposta corrente con notifica; "Successiva" → salva in background e avanza; sull'ultima domanda il bottone diventa "Completa Assessment" e chiude l'assessment. Dati da: salvataggio risposta: POST /api/assessments/{id}/respond (body {question_code, response_value, maturity_level, notes, evidence_description}); completamento: POST /api/assessments/{id}/complete. Confine: header categoria #category-title (riga ~68), contatore #question-counter (riga ~69), area domanda #question-area (riga ~71); bottoni #btn-prev (riga ~76) e #btn-next (riga ~83). Campi generati via JS dentro #question-area: #maturity-slider, #maturity-value, #question-notes, #question-evidence. Il bottone "Salva Progresso" non ha id (vedi ID mancanti).

• U-ASSESSMENT.5 — Risultati: punteggio complessivo e per categoria Mostra: gauge con punteggio complessivo (overall_score); sezione "Punteggio per Categoria" con barre percentuali colorate (verde ≥60%, giallo ≥40%, rosso <40%) per ciascuna delle categorie Art.21. Azioni: bottone "Analisi AI" nell'header della card (stesso flusso di U-ASSESSMENT.6). Dati da: GET /api/assessments/{id}/report (campi overall_score, category_scores). Confine: contenitore #assessment-results (riga ~93); gauge #results-gauge (riga ~104); barre #category-scores (riga ~108).

• U-ASSESSMENT.6 — Card "Analisi AI" Mostra: (visibile dopo l'analisi) sezioni Riepilogo, Punti di Forza, Aree di Miglioramento, Raccomandazioni generate dall'AI; badge "Intelligenza Artificiale". Azioni: nessuna interna; viene popolata dai bottoni "Analisi AI". Dati da: POST /api/assessments/{id}/ai-analyze (risposta con summary, strengths[], weaknesses[], recommendations[]). Confine: card #ai-analysis-card (riga ~113); contenuto #ai-analysis-content (riga ~118).

• U-ASSESSMENT.7 — Card "Non Conformita'" (generazione NCR dai gap) Mostra: testo esplicativo: i controlli "Non Implementato" generano NCR major, quelli "Parzialmente Implementato" generano NCR minor; dopo la generazione mostra il riepilogo "N non conformita' generate" con conteggio major/minor. Azioni: "Genera Non Conformita' dai Gap" → crea le NCR dall'assessment; il bottone si nasconde a successo. Dati da: POST /api/ncr/from-assessment (body {assessment_id}). Confine: card #ncr-generation-card (riga ~122); bottone #btn-generate-ncr (riga ~132); esito #ncr-generation-result (riga ~136).

⟦ FINE · U-ASSESSMENT ⟧

ID STABILI MANCANTI (da aggiungere)

Elemento Riga Id proposto
Bottone "Salva Progresso" (footer card domanda) ~80 nis2-assessment-btn-salva
Bottone "Analisi AI" nell'header della card Risultati (duplicato di #btn-ai-analyze, senza id) ~97 nis2-assessment-btn-ai-risultati