/** * NIS2 Agile - Contextual Help System * * Sistema di guida contestuale per pagina. * - Rileva automaticamente la pagina corrente dall'URL * - Mostra help contestuale tramite showModal() * - Inietta un pulsante "?" nell'header della pagina * - Fornisce tooltip inline riutilizzabili */ const HelpSystem = (function () { 'use strict'; // ── Icona SVG del punto interrogativo ──────────────────────────── var HELP_ICON = ''; var HELP_ICON_SMALL = ''; // ── Contenuti di help per ogni pagina (in italiano) ────────────── var _helpContent = { // ─── Dashboard ─────────────────────────────────────────────── 'dashboard': { title: 'Guida - Dashboard', intro: 'La Dashboard fornisce una panoramica in tempo reale dello stato di conformita\' NIS2 della tua organizzazione. Da qui puoi monitorare i principali indicatori, le attivita\' recenti e le scadenze imminenti.', sections: [ { heading: 'Punteggio di Compliance', items: [ 'Il gauge circolare mostra il punteggio complessivo di conformita\' NIS2 (0-100%), calcolato sulla base dell\'ultimo assessment completato.', 'I colori indicano il livello: rosso (critico, <20%), arancione (basso, 20-39%), giallo (medio, 40-59%), verde chiaro (buono, 60-79%), verde (eccellente, ≥80%).', 'Il punteggio si aggiorna automaticamente ad ogni nuovo assessment.' ] }, { heading: 'Statistiche Principali', items: [ 'Rischi Aperti - numero di rischi attivi nel registro dei rischi.', 'Incidenti Attivi - incidenti di sicurezza attualmente in gestione.', 'Scadenze Superate - attivita\' o task il cui termine e\' gia\' passato.', 'Clicca su ciascuna card per accedere direttamente alla sezione corrispondente.' ] }, { heading: 'Attivita\' Recente e Scadenze', items: [ 'Il feed Attivita\' Recente mostra le ultime operazioni effettuate sulla piattaforma (assessment, rischi, incidenti, policy).', 'Le Prossime Scadenze elencano i task e le attivita\' in scadenza, evidenziando in rosso quelle urgenti.', 'La Mappa Rischi visualizza la distribuzione dei rischi per livello di gravita\'.' ] }, { heading: 'Azioni Rapide', items: [ 'Utilizza le Azioni Rapide per avviare operazioni comuni senza navigare nel menu.', 'La funzione Genera Policy con AI permette di creare bozze di policy conformi NIS2 tramite intelligenza artificiale.', 'Puoi avviare un nuovo assessment, registrare un incidente o aggiungere un rischio con un solo clic.' ] } ], references: [ 'Direttiva (UE) 2022/2555 (NIS2) - Considerando generale sulla gestione del rischio', 'Art. 24 D.Lgs. 138/2024 - Misure di gestione dei rischi di cibersicurezza (recepisce l\'art. 21 della Direttiva (UE) 2022/2555)', 'Art. 25 D.Lgs. 138/2024 - Obblighi di segnalazione degli incidenti significativi (recepisce l\'art. 23 della Direttiva (UE) 2022/2555)' ] }, // ─── Assessment / Gap Analysis ─────────────────────────────── 'assessment': { title: 'Guida - Gap Analysis NIS2', intro: 'La Gap Analysis NIS2 ti permette di valutare il livello di conformita\' della tua organizzazione rispetto ai requisiti dell\'art. 24 del D.Lgs. 138/2024 (che recepisce l\'art. 21 della Direttiva (UE) 2022/2555). Il wizard guida l\'utente attraverso 10 categorie di misure di sicurezza.', sections: [ { heading: 'Wizard di Assessment', items: [ 'L\'assessment e\' strutturato in 10 categorie derivate dall\'art. 24 del D.Lgs. 138/2024 (che recepisce l\'art. 21, par. 2, della Direttiva (UE) 2022/2555).', 'Ogni categoria contiene domande specifiche sulle misure di sicurezza implementate.', 'Puoi compilare l\'assessment in piu\' sessioni: il progresso viene salvato automaticamente.', 'Utilizza la barra di avanzamento in alto per monitorare il completamento.' ] }, { heading: 'Sistema di Valutazione', items: [ 'Non Implementato (0%) - la misura non e\' presente.', 'Parzialmente Implementato (50%) - la misura e\' presente ma incompleta o non formalizzata.', 'Implementato (100%) - la misura e\' completamente implementata e documentata.', 'Non Applicabile - la misura non si applica al contesto dell\'organizzazione.' ] }, { heading: 'Analisi AI', items: [ 'Al completamento dell\'assessment, puoi richiedere un\'analisi basata su AI dei risultati.', 'L\'AI identifica le aree critiche, suggerisce priorita\' di intervento e fornisce raccomandazioni specifiche.', 'L\'analisi tiene conto del settore e della classificazione NIS2 dell\'organizzazione.' ] }, { heading: 'Generazione Non Conformita\' (NCR)', items: [ 'Dalla pagina dei risultati, puoi generare automaticamente NCR (Non Conformity Reports) dai gap individuati.', 'Ogni NCR viene creata con priorita\', descrizione e suggerimenti di rimedio.', 'Le NCR generate possono essere esportate o collegate al registro dei rischi.' ] } ], references: [ 'Art. 24 D.Lgs. 138/2024 - Obbligo di adottare misure tecniche, operative e organizzative adeguate e proporzionate (recepisce l\'art. 21, par. 1, della Direttiva (UE) 2022/2555)', 'Art. 24 D.Lgs. 138/2024 - Le 10 categorie di misure di sicurezza minime (recepisce l\'art. 21, par. 2, lett. a-j, della Direttiva (UE) 2022/2555)', 'Art. 24 D.Lgs. 138/2024 - Valutazione della proporzionalita\' delle misure (recepisce l\'art. 21, par. 3, della Direttiva (UE) 2022/2555)', 'Art. 24 D.Lgs. 138/2024 - Conformita\' con norme europee e internazionali (recepisce l\'art. 21, par. 4, della Direttiva (UE) 2022/2555)' ] }, 'isms': { title: 'Guida - Modello Organizzativo SGSI (ISO 27001)', intro: 'Il modulo Modello Organizzativo ti guida nella costruzione di un Sistema di Gestione della Sicurezza delle Informazioni (SGSI / ISMS) secondo ISO/IEC 27001:2022 (clausole 4-10) + lo Statement of Applicability (SoA) sui controlli Annex A. E\' uno strumento di SUPPORTO e PRE-AUDIT: non sostituisce l\'auditor ne costituisce una certificazione.', sections: [ { heading: 'Il wizard in 6 passi (clausole ISO 27001:2022)', items: [ '1. Contesto e Ambito (cl. 4): definisci lo scope del SGSI, contesto interno/esterno, parti interessate, confini ed esclusioni motivate. Qui attivi anche le estensioni cloud.', '2. Leadership (cl. 5): ruoli e responsabilita del SGSI con matrice RACI (Responsible, Accountable, Consulted, Informed).', '3. Risk (cl. 6): dichiari la metodologia di risk assessment (es. ISO 27005) e gli obiettivi. Il registro dei rischi resta nel modulo Rischi.', '4. Statement of Applicability: i 93 controlli Annex A con applicabilita, stato e motivazione.', '5. Documented Information (cl. 7-8): policy e procedure, con bozze generabili dall\'AI (revisione umana obbligatoria).', '6. Monitoraggio e Miglioramento (cl. 9-10): audit interni e non conformita si gestiscono nei moduli Audit & Report e NCR/CAPA. Una checklist mostra il completamento del SGSI.' ] }, { heading: 'SoA pre-popolato dal NIS2', items: [ 'Ogni domanda della Gap Analysis NIS2 Art.21 e gia collegata a un controllo ISO 27001 (es. A.5.1): lo Statement of Applicability viene quindi pre-compilato a partire dalle tue risposte NIS2 (badge "da NIS2").', 'Lo stato derivato e una proposta da confermare: implemented=100%, partial=50%, not_implemented=0%; not_applicable esclude il controllo dalla derivazione.', 'I controlli senza corrispondenza NIS2 (es. parte dei controlli fisici A.7) restano da compilare manualmente.', 'Il pulsante "Ri-deriva dal NIS2" aggiunge solo i controlli mancanti: non sovrascrive le tue modifiche manuali.' ] }, { heading: 'Estensioni cloud ISO 27017 / 27018', items: [ 'Se usi servizi cloud pubblici o sei un fornitore cloud, attiva ISO/IEC 27017:2015: aggiunge 7 controlli cloud (CLD.*) al SoA.', 'Se tratti dati personali (PII) in cloud pubblico come responsabile, attiva ISO/IEC 27018:2019: aggiunge i controlli privacy (PII.*) allineati ai principi ISO 29100, sinergici con il GDPR.', 'Le sezioni cloud/PII compaiono nel SoA solo se attivi i relativi flag nel passo 1.' ] } ], references: [ 'ISO/IEC 27001:2022 - Requisiti del SGSI (clausole 4-10 + Annex A, 93 controlli)', 'ISO/IEC 27002:2022 - Guida implementativa dei controlli Annex A', 'ISO/IEC 27017:2015 - Controlli di sicurezza per i servizi cloud (CLD.*)', 'ISO/IEC 27018:2019 - Protezione dei PII nel cloud pubblico (PII processor)', 'NOTA: ISO e best practice non vincolante; gli obblighi italiani derivano da NIS2 / D.Lgs. 138/2024 / Determinazioni ACN.' ] }, // ─── Organigramma (A4 Fase 4.1) ────────────────────────────── 'org': { title: 'Guida - Organigramma', intro: 'L\'Organigramma mappa chi e responsabile di cosa: i ruoli dell\'organizzazione, la loro gerarchia, il titolare di ciascun ruolo e — distinto — il nodo degli organi di amministrazione e direttivi. E\' la base del modello relazionale: nelle fasi successive i ruoli verranno collegati a competenze, procedure, inventario e rischi tramite la matrice RACI. E\' uno strumento di supporto organizzativo, non un parere legale.', sections: [ { heading: 'Cosa rappresenta', items: [ 'Ruolo: una posizione organizzativa (es. CISO, Responsabile IT, DPO). Puo avere un titolare (un utente dell\'organizzazione) oppure restare vacante.', 'Gerarchia: ogni ruolo puo avere un ruolo "padre" (a chi riporta). I ruoli senza padre sono i nodi radice dell\'organigramma.', 'Responsabilita e poteri: il campo descrizione documenta cosa fa il ruolo, coerentemente con la buona prassi GV.RR-02 (ruoli, responsabilita e poteri stabiliti e comunicati).' ] }, { heading: 'Il nodo "Organi di amministrazione e direttivi" (Art. 23)', items: [ 'Marca come organo di governance il ruolo che rappresenta gli organi di amministrazione e direttivi: l\'art. 23 del D.Lgs. 138/2024 ne stabilisce la responsabilita nell\'approvare le misure di gestione del rischio e nel sovrintendere alla loro attuazione.', 'Tenere questo nodo distinto rende dimostrabile in audit "chi approva" le misure e su chi ricade la responsabilita di vigilanza.', 'Gli organi di gestione sono inoltre tenuti a seguire una formazione specifica in materia di sicurezza informatica (gestita nel modulo Formazione).' ] }, { heading: 'Come si usa', items: [ 'Nuovo ruolo: indica il nome, l\'eventuale ruolo padre, il titolare e — se pertinente — la spunta "organo di governance".', 'Puoi modificare un ruolo o spostarlo nella gerarchia cambiandone il padre (il sistema impedisce di creare cicli).', 'Un ruolo non puo essere eliminato se ha ruoli subordinati: riassegna prima i figli a un altro ruolo.' ] } ], references: [ 'D.Lgs. 138/2024, art. 23 - Responsabilita degli organi di amministrazione e direttivi (governance)', 'NIST CSF 2.0 / GV.RR-02 (best practice) - Ruoli, responsabilita e poteri stabiliti e comunicati', 'NOTA: gli obblighi normativi in Italia derivano da NIS2 (Dir. UE 2022/2555) e dal D.Lgs. 138/2024; framework e organigrammi sono strumenti di supporto, non un parere legale.' ] }, // ─── Competenze (A4 Fase 4.2) ──────────────────────────────── 'competences': { title: 'Guida - Competenze', intro: 'Il modulo Competenze collega le persone ai ruoli dell\'organigramma attraverso le competenze: quelle richieste da ciascun ruolo e quelle effettivamente possedute. Confrontandole, individua i divari (gap) e ti aiuta a colmarli con la formazione o aprendo un\'azione correttiva. E\' uno strumento di supporto, non un parere legale.', sections: [ { heading: 'Le quattro schede', items: [ 'Catalogo competenze: l\'elenco delle competenze (con area e descrizione). Puoi mappare a ciascuna i corsi che la erogano. Le competenze "globali" sono fornite dal sistema e sono in sola lettura.', 'Requisiti per ruolo: per ogni ruolo dell\'organigramma indichi quali competenze servono e a quale livello (scala 1-5).', 'Competenze persone: registri le competenze possedute da ciascun membro, con il livello, l\'eventuale corso che le ha fornite e un\'evidenza.', 'Gap & azioni: confronta, per ogni ruolo con titolare, il livello richiesto con quello posseduto e mostra i gap.' ] }, { heading: 'Come si calcola il gap e cosa farne', items: [ 'Il gap di una competenza = livello richiesto dal ruolo − livello posseduto dal titolare. Se è maggiore di zero, c\'è un divario da colmare.', 'Assegna corso: assegna al titolare uno dei corsi mappati alla competenza (gestito nel modulo Formazione).', 'Apri non conformità: genera una Non Conformità (NCR) con un\'azione correttiva collegata, riusando il modulo NCR/CAPA. L\'azione resta tracciata fino alla chiusura; il sistema evita doppioni sullo stesso gap.' ] }, { heading: 'Riferimenti normativi', items: [ 'PR.AT-01: formazione e consapevolezza per tutto il personale (vale per tutti i soggetti).', 'PR.AT-02: formazione mirata per i ruoli a maggior rischio (richiesto in particolare ai soggetti essenziali).', 'GV.RR-04: la cybersicurezza è inclusa nelle pratiche di gestione del personale (HR).' ] } ], references: [ 'D.Lgs. 138/2024, art. 24 - Obblighi in materia di misure di gestione del rischio (include la formazione)', 'Misure di base ACN (Determinazione n. 164179/2025), funzione Protect: PR.AT-01 (tutti), PR.AT-02 (essenziali); GV.RR-04', 'NOTA: gli obblighi normativi in Italia derivano da NIS2 (Dir. UE 2022/2555) e dal D.Lgs. 138/2024; i livelli di competenza e i framework sono strumenti di supporto, non un parere legale.' ] }, // ─── Matrice RACI (A4 Fase 4.3) ────────────────────────────── 'raci': { title: 'Guida - Matrice RACI', intro: 'La Matrice RACI è l\'hub del modello relazionale: collega i ruoli dell\'organigramma agli oggetti del sistema (inventario, procedure, rischi, fornitori) indicando chi è Responsabile (R), chi è Approvatore/responsabile finale (A), chi va Consultato (C) e chi va Informato (I). In più gestisce i collegamenti molti-a-molti fra procedure, inventario, rischi e misure, così da tracciare la rete delle dipendenze. E\' uno strumento di supporto, non un parere legale.', sections: [ { heading: 'Cos\'è la RACI', items: [ 'Per ogni coppia ruolo × oggetto assegni una lettera: Responsible (esegue), Accountable (risponde del risultato, di norma uno solo), Consulted (consultato prima), Informed (informato dopo).', 'Gli oggetti collegabili sono: Inventario (gli asset), Procedure (le policy), Rischi (il registro rischi) e Fornitori (la supply chain).', 'Lasciando vuota una cella, il ruolo non ha responsabilità formalizzate su quell\'oggetto.' ] }, { heading: 'I collegamenti (link)', items: [ 'Procedura ↔ Inventario: quali asset sono coperti/governati da una procedura.', 'Procedura ↔ Rischio: quali rischi una procedura contribuisce a trattare.', 'Inventario ↔ Rischio: quali rischi insistono su un determinato asset.', 'Rischio ↔ Misura: a quali misure ACN (per codice, es. GV.OC-04) un rischio è ricondotto.' ] }, { heading: 'Riferimenti normativi', items: [ 'GV.RR-02: ruoli, responsabilità e poteri per la cybersicurezza sono stabiliti e comunicati (base della RACI).', 'Inventario: famiglia ID.AM (asset management) — censimento e responsabilità sugli asset.', 'Procedure: GV.PO (policy/governance) — le procedure attuano le politiche.', 'Rischi: art. 24 D.Lgs. 138/2024 e famiglia ID.RA (risk assessment).' ] } ], references: [ 'NIST CSF 2.0 / GV.RR-02 - Ruoli, responsabilità e poteri stabiliti e comunicati', 'Inventario: famiglia ID.AM (asset management)', 'Procedure: GV.PO (policy/governance)', 'Rischi: art. 24 D.Lgs. 138/2024 + famiglia ID.RA (risk assessment)', 'NOTA: gli obblighi normativi in Italia derivano da NIS2 (Dir. UE 2022/2555) e dal D.Lgs. 138/2024; la matrice RACI e i framework NIST CSF/ACN sono strumenti di supporto, non un parere legale.' ] }, // ─── Scadenziario centralizzato (A4 Fase 4.4) ───────────────── 'review-schedule': { title: 'Guida - Scadenziario', intro: 'Lo Scadenziario raccoglie in un unico posto le revisioni periodiche di policy, controlli, trattamenti del rischio, ruoli, competenze, inventario, fornitori e misure. Per ciascuna voce indica chi è il responsabile (ruolo), ogni quanto va rivista e quando scade la prossima revisione, segnalandone lo stato. È uno strumento di supporto organizzativo, non un parere legale.', sections: [ { heading: 'Stati e badge', items: [ 'OK (verde): la prossima revisione è oltre i 30 giorni.', 'In scadenza (arancione): la prossima revisione cade entro 30 giorni.', 'Scaduto (rosso): la data di prossima revisione è già passata.', 'Lo stato è ricalcolato automaticamente in base alla data odierna: non serve aggiornarlo a mano.' ] }, { heading: 'Come si usa', items: [ 'Nuova scadenza: crei una voce indicando titolo, tipo di entità, ruolo responsabile, frequenza (in mesi) e data della prossima revisione.', 'Segna revisionato: registra la revisione di oggi; se è impostata una frequenza, la prossima data avanza automaticamente.', 'Sincronizza scadenze esistenti: importa (senza duplicare) le scadenze già presenti nel sistema — riesami delle policy, dei controlli e le date dei trattamenti del rischio della tua organizzazione.' ] }, { heading: 'Riferimenti normativi', items: [ 'GV.PO-02: le politiche di cybersicurezza sono riviste periodicamente e aggiornate.', 'GV.SC-07: i rischi e i rapporti con i fornitori sono monitorati e rivisti nel tempo.', 'PR.AT: la formazione e consapevolezza è mantenuta e ripetuta nel tempo.', 'DE.CM: il monitoraggio continuo presuppone controlli rivisti con regolarità.', 'In Italia gli obblighi fanno capo al D.Lgs. 138/2024 (in particolare l\'art. 24 sulla gestione del rischio). La periodicità puntuale, dove non fissata dalla norma, è buona prassi.' ] } ], references: [ 'NIST CSF 2.0 / GV.PO-02 - Politiche riviste e aggiornate periodicamente', 'NIST CSF 2.0 / GV.SC-07 - Monitoraggio e revisione dei fornitori', 'NIST CSF 2.0 / PR.AT - Formazione e consapevolezza mantenute nel tempo', 'NIST CSF 2.0 / DE.CM - Monitoraggio continuo', 'Obblighi: art. 24 D.Lgs. 138/2024 (gestione del rischio)', 'NOTA: gli obblighi normativi in Italia derivano dal D.Lgs. 138/2024; lo scadenziario e i framework NIST CSF/ACN sono strumenti di supporto. La periodicità puntuale, dove non fissata, è buona prassi, non un parere legale.' ] }, // ─── Misure e Requisiti — elenco canonico (Epic C / C1) ─────── 'misure-requisiti': { title: 'Guida - Misure e Requisiti', intro: 'Questa pagina mostra l\'elenco canonico delle misure di sicurezza di base e dei relativi requisiti previsti dalla Determinazione ACN n. 164179 del 14 aprile 2025. Per ogni requisito sono indicati la procedura di default che lo soddisfa e il rischio di default associato. È un elenco di riferimento in sola lettura: la codifica e l\'ordine non sono modificabili. È uno strumento di supporto, non un parere legale.', sections: [ { heading: 'Come è organizzato', items: [ 'Le misure sono 43 in totale; ogni misura è descritta da uno o più requisiti (i singoli punti/commi).', 'A ogni requisito è abbinata una procedura di default (che lo risolve) e un rischio di default: queste alimentano, come contenuto iniziale modificabile, i moduli Procedure e Rischi.', 'La valutazione del rischio parte vuota: la compili tu nel modulo Rischi. È da lì, e dall\'analisi degli stakeholder, che emerge lo stato di conformità dell\'azienda.' ] }, { heading: 'Importanti ed essenziali', items: [ 'Alcuni requisiti, e alcune intere misure, riguardano solo i soggetti essenziali: per un soggetto importante quelle righe si "spengono" (appaiono in grigio).', 'Soggetti importanti: 37 misure / 92 requisiti. Soggetti essenziali: 43 misure / 116 requisiti.', 'Con il selettore "Soggetto" scegli quale profilo applicare; con "nascondi non applicabili" mostri solo le righe pertinenti. Le viste "per misura" e "per area politica" mostrano gli stessi dati in due modi.' ] }, { heading: 'Valutazione e stato di conformità', items: [ 'Quando lavori nel contesto di un\'organizzazione, ogni requisito mostra una colonna Stato / Valutazione: ci clicchi sopra per registrare lo stato (da valutare, non applicabile, non conforme, parziale, conforme) e la valutazione del rischio (che parte vuota).', 'È da questa valutazione, requisito per requisito, e dall\'analisi degli stakeholder che emerge lo stato di conformità dell\'azienda: non serve un modulo "gap analysis" separato.', 'La valutazione è un dato della tua organizzazione (modificabile); la codifica del requisito, invece, resta intatta.', 'Le procedure di default associate ai requisiti vengono caricate automaticamente, al primo accesso, nel modulo Policy/Procedure, dove puoi personalizzarle o eliminarle.' ] }, { heading: 'Riferimenti normativi', items: [ 'Misure di base: Determinazione ACN n. 164179 del 14 aprile 2025 (Allegato 1 = importanti, Allegato 2 = essenziali).', 'Gli obblighi di gestione del rischio fanno capo all\'art. 24 del D.Lgs. 138/2024; la governance all\'art. 23.', 'L\'elenco non è modificabile dall\'utente: rappresenta la codifica ufficiale e va mantenuto fedele alla fonte.' ] } ], references: [ 'Determinazione ACN n. 164179 del 14 aprile 2025 - misure di sicurezza di base (Allegati 1-2)', 'Obblighi: art. 24 D.Lgs. 138/2024 (gestione del rischio), art. 23 (governance)', 'NOTA: l\'elenco è uno strumento di supporto; la classificazione del soggetto e la conformità formale restano valutazione di Direzione/Legale e verifica ACN.' ] }, // ─── Stakeholder estesi (A4 Fase 4.5) ───────────────────────── 'stakeholders': { title: 'Guida - Stakeholder', intro: 'La Mappa Stakeholder è una vista di sintesi delle parti interessate dell\'organizzazione, raggruppate in fornitori, clienti e partner. Riusa i dati del modulo Supply Chain (nessuna duplicazione): il dettaglio e la valutazione dei fornitori restano lì, mentre qui puoi avere il quadro d\'insieme e aggiungere o etichettare clienti e partner. È uno strumento di supporto organizzativo, non un parere legale.', sections: [ { heading: 'I tre gruppi', items: [ 'Fornitori: chi fornisce beni o servizi (inclusi i fornitori ICT). Il loro dettaglio e la valutazione di sicurezza si gestiscono nel modulo Supply Chain.', 'Clienti: le parti a cui l\'organizzazione eroga servizi rilevanti per la continuità.', 'Partner: soggetti con cui esistono accordi o collaborazioni rilevanti per la sicurezza.' ] }, { heading: 'Come si usa', items: [ 'Aggiungi stakeholder: registri nome, tipo (fornitore/cliente/partner), tipo di servizio o relazione, contatto e criticità.', 'Per i fornitori, usa il modulo Supply Chain per il dettaglio completo, i questionari e la valutazione del rischio (qui niente duplicati).', 'La vista raggruppata aiuta a documentare ruoli e responsabilità verso tutte le parti interessate, non solo i fornitori.' ] }, { heading: 'Riferimenti normativi', items: [ 'GV.SC-02: ruoli e responsabilità per la sicurezza della catena di fornitura sono stabiliti verso fornitori, clienti e partner.', 'GV.SC-04: i fornitori sono noti e prioritizzati in base alla criticità (l\'estensione a clienti e partner è coperta da GV.SC-02).', 'GV.SC-05: i requisiti di sicurezza sono integrati nei contratti e negli accordi con i fornitori e le altre terze parti rilevanti.', 'GV.SC-07: i rischi e i rapporti con le parti interessate sono monitorati e rivisti nel tempo.' ] } ], references: [ 'NIST CSF 2.0 / GV.SC-02 - Ruoli e responsabilità verso fornitori, clienti e partner', 'NIST CSF 2.0 / GV.SC-04 - Fornitori noti e prioritizzati per criticità (clienti/partner: GV.SC-02)', 'NIST CSF 2.0 / GV.SC-05 - Requisiti di sicurezza negli accordi', 'NIST CSF 2.0 / GV.SC-07 - Monitoraggio e revisione delle parti interessate', 'Obblighi: la gestione della supply chain è prevista dall\'art. 24 del D.Lgs. 138/2024.', 'NOTA: gli obblighi normativi in Italia derivano dal D.Lgs. 138/2024; la mappa stakeholder e i framework NIST CSF/ACN sono strumenti di supporto, non un parere legale.' ] }, // ─── Risk Management ───────────────────────────────────────── 'risks': { title: 'Guida - Gestione Rischi', intro: 'Il modulo di Gestione Rischi consente di identificare, valutare e trattare i rischi di sicurezza informatica in conformita\' con l\'art. 24 del D.Lgs. 138/2024 (che recepisce l\'art. 21 della Direttiva (UE) 2022/2555). Include una matrice di rischio interattiva e strumenti per il monitoraggio continuo.', sections: [ { heading: 'Matrice di Rischio', items: [ 'La matrice Probabilita\' x Impatto (5x5) classifica automaticamente i rischi in base alla loro gravita\'.', 'I livelli di probabilita\' vanno da Molto Bassa a Molto Alta.', 'I livelli di impatto vanno da Trascurabile a Critico.', 'Il punteggio di rischio risultante determina il colore e la priorita\' del rischio.' ] }, { heading: 'Livelli di Gravita\'', items: [ 'Basso - rischio accettabile, monitoraggio periodico.', 'Medio - richiede attenzione, pianificare azioni di mitigazione.', 'Alto - richiede intervento prioritario.', 'Critico - richiede intervento immediato, escalation al management.' ] }, { heading: 'Opzioni di Trattamento', items: [ 'Mitigare - implementare controlli per ridurre probabilita\' o impatto.', 'Accettare - accettare consapevolmente il rischio (documentando la decisione).', 'Trasferire - trasferire il rischio a terzi (es. assicurazione, outsourcing).', 'Evitare - eliminare l\'attivita\' o la condizione che genera il rischio.' ] }, { heading: 'Registro e Monitoraggio', items: [ 'Ogni rischio registrato include: descrizione, categoria, beni coinvolti, owner e piano di trattamento.', 'Lo stato di ogni rischio e\' tracciato nel tempo con lo storico delle modifiche.', 'I rischi possono essere collegati a beni (inventario), incidenti e controlli di compliance.', 'La Matrice Rischi si aggiorna in tempo reale: eliminando un rischio dalla vista dettaglio, la matrice si ricalcola automaticamente senza richiedere un refresh manuale.' ] }, { heading: 'Analisi Quantitativa FAIR (vista "Quantitativo")', items: [ 'Affianca alla matrice qualitativa la stima economica della Perdita Annua Attesa (ALE) in EUR.', 'Inserisci la frequenza eventi minaccia (TEF min/probabile/max), la vulnerabilita\' (0-1) e la magnitudo di perdita (min/probabile/max).', 'Il motore esegue una simulazione Monte Carlo e restituisce i percentili P10/P50/P90 + l\'istogramma della distribuzione delle perdite.', 'Il Registro Quantitativo aggrega l\'ALE di portafoglio per prioritizzare gli investimenti di sicurezza sul ritorno economico.' ] }, { heading: 'Key Risk Indicators - KRI (vista "KRI")', items: [ 'Definisci indicatori misurabili (es. % endpoint senza MFA, n. vulnerabilita\' critiche aperte) con soglie di warning e critica.', 'Lo stato semaforo (verde/ambra/rosso) e\' calcolato automaticamente confrontando il valore corrente con le soglie e la direzione (valori alti o bassi = peggio).', 'La dashboard KRI offre alla Direzione una vista sintetica dell\'esposizione al rischio in tempo reale.' ] } ], references: [ 'Art. 24 D.Lgs. 138/2024 - Approccio basato sulla valutazione dei rischi (risk-based approach) (recepisce l\'art. 21, par. 1, della Direttiva (UE) 2022/2555)', 'FAIR (Factor Analysis of Information Risk) - The Open Group, standard O-RA per il rischio quantitativo', 'Art. 24 D.Lgs. 138/2024 - Politiche di analisi dei rischi e di sicurezza dei sistemi informatici (recepisce l\'art. 21, par. 2, lett. a, della Direttiva (UE) 2022/2555)', 'Art. 24 D.Lgs. 138/2024 - Politiche e procedure per valutare l\'efficacia delle misure (recepisce l\'art. 21, par. 2, lett. f, della Direttiva (UE) 2022/2555)', 'Considerando 79 - Proporzionalita\' delle misure rispetto ai rischi' ] }, // ─── Incident Management ───────────────────────────────────── 'incidents': { title: 'Guida - Gestione Incidenti', intro: 'Il modulo di Gestione Incidenti supporta l\'intero ciclo di vita degli incidenti di sicurezza, dalla rilevazione alla chiusura, nel rispetto dei tempi di notifica previsti dall\'art. 25 del D.Lgs. 138/2024 (che recepisce l\'art. 23 della Direttiva (UE) 2022/2555).', sections: [ { heading: 'Timeline di Notifica NIS2', items: [ 'Early Warning (24 ore) - preallarme al CSIRT/autorita\' competente entro 24 ore dalla conoscenza dell\'incidente significativo (obbligo art. 25 D.Lgs. 138/2024, recepisce l\'art. 23 della Direttiva (UE) 2022/2555).', 'Notifica (72 ore) - notifica completa entro 72 ore con valutazione iniziale, gravita\', impatto e indicatori di compromissione.', 'Report Finale (un mese) - relazione finale dettagliata entro un mese dalla notifica, con descrizione, causa, misure adottate e impatto transfrontaliero.', 'La piattaforma traccia automaticamente le scadenze e invia promemoria per ciascuna fase.' ] }, { heading: 'Livelli di Gravita\'', items: [ 'Bassa - impatto limitato, nessuna interruzione di servizio significativa.', 'Media - impatto moderato su operazioni o dati, richiede intervento pianificato.', 'Alta - impatto significativo su servizi essenziali o dati sensibili.', 'Critica - interruzione grave di servizi essenziali, compromissione massiva di dati, impatto transfrontaliero.' ] }, { heading: 'Ciclo di Vita dell\'Incidente', items: [ 'Rilevazione - identificazione e registrazione iniziale dell\'incidente.', 'Analisi - valutazione di gravita\', impatto e perimetro.', 'Contenimento - azioni immediate per limitare il danno.', 'Risoluzione - eliminazione della causa e ripristino dei servizi.', 'Chiusura - documentazione delle lezioni apprese e miglioramenti.' ] }, { heading: 'Funzionalita\' Avanzate', items: [ 'Collegamento automatico con il registro dei rischi e gli beni coinvolti.', 'Timeline visuale con tutti gli aggiornamenti e le comunicazioni.', 'Esportazione del report per la notifica alle autorita\' competenti.' ] } ], references: [ 'Art. 25 D.Lgs. 138/2024 - Obbligo di notifica degli incidenti significativi (recepisce l\'art. 23, par. 1, della Direttiva (UE) 2022/2555)', 'Art. 25 D.Lgs. 138/2024 - Early warning entro 24 ore (recepisce l\'art. 23, par. 4, lett. a, della Direttiva (UE) 2022/2555)', 'Art. 25 D.Lgs. 138/2024 - Notifica entro 72 ore (recepisce l\'art. 23, par. 4, lett. b, della Direttiva (UE) 2022/2555)', 'Art. 25 D.Lgs. 138/2024 - Relazione finale entro un mese (recepisce l\'art. 23, par. 4, lett. d, della Direttiva (UE) 2022/2555)', 'Determinazione ACN n. 164179 del 14/04/2025 - Classificazione incidenti significativi (Allegato 3 soggetti importanti, Allegato 4 soggetti essenziali) e tipologie IS-1/IS-2/IS-3/IS-4', 'Determinazione ACN n. 333017/2025 - Piattaforma digitale ACN per le notifiche' ] }, // ─── Policy Management ─────────────────────────────────────── 'policies': { title: 'Guida - Gestione Policy', intro: 'Il modulo di Gestione Policy consente di creare, gestire e mantenere aggiornate le policy di sicurezza informatica richieste dalla Direttiva NIS2. Include un generatore di policy basato su intelligenza artificiale.', sections: [ { heading: 'Ciclo di Vita delle Policy', items: [ 'Bozza - la policy e\' in fase di stesura, modificabile liberamente.', 'In Revisione - la policy e\' stata sottoposta a revisione da parte dei responsabili.', 'Approvata - la policy e\' stata approvata dal management.', 'Pubblicata - la policy e\' attiva e comunicata a tutto il personale.' ] }, { heading: 'Generazione con AI', items: [ 'La funzione Genera con AI crea automaticamente bozze di policy conformi NIS2.', 'L\'AI utilizza il contesto della tua organizzazione (settore, dimensione, classificazione) per personalizzare il contenuto.', 'Le policy generate includono: obiettivo, ambito di applicazione, responsabilita\', procedure e riferimenti normativi.', 'Le bozze AI sono contrassegnate da un banner arancione di avviso che ricorda l\'obbligo di revisione prima dell\'approvazione. Il banner puo\' essere chiuso premendo la X.' ] }, { heading: 'Framework di Compliance NIS2', items: [ 'Ogni policy e\' collegata a una o piu\' categorie dell\'art. 24 del D.Lgs. 138/2024 (che recepisce l\'art. 21, par. 2, della Direttiva (UE) 2022/2555).', 'Il sistema tiene traccia della copertura delle policy rispetto ai requisiti normativi.', 'Le policy scadute o non aggiornate vengono evidenziate automaticamente.' ] }, { heading: 'Gestione Versioni', items: [ 'Ogni modifica crea una nuova versione della policy con data e autore.', 'E\' possibile confrontare versioni e ripristinare versioni precedenti.', 'Lo storico completo e\' disponibile per finalita\' di audit.' ] } ], references: [ 'Art. 24 D.Lgs. 138/2024 - Politiche di analisi dei rischi e di sicurezza dei sistemi informatici (recepisce l\'art. 21, par. 2, lett. a, della Direttiva (UE) 2022/2555)', 'Art. 24 D.Lgs. 138/2024 - Sicurezza nell\'acquisizione, sviluppo e manutenzione dei sistemi (recepisce l\'art. 21, par. 2, lett. e, della Direttiva (UE) 2022/2555)', 'Art. 24 D.Lgs. 138/2024 - Uso di crittografia e cifratura (recepisce l\'art. 21, par. 2, lett. j, della Direttiva (UE) 2022/2555)', 'Art. 23 D.Lgs. 138/2024 - Governance - Responsabilita\' degli organi di gestione (recepisce l\'art. 20 della Direttiva (UE) 2022/2555)' ] }, // ─── Supply Chain Security ─────────────────────────────────── 'supply-chain': { title: 'Guida - Sicurezza Supply Chain', intro: 'Il modulo di Sicurezza della Supply Chain consente di gestire e valutare i rischi legati a fornitori e terze parti, in conformita\' con l\'art. 24 del D.Lgs. 138/2024 (che recepisce l\'art. 21, par. 2, lett. d, della Direttiva (UE) 2022/2555).', sections: [ { heading: 'Registro Fornitori', items: [ 'Il registro fornitori centralizza tutte le informazioni sui fornitori critici.', 'Per ogni fornitore sono registrati: servizi forniti, dati di contatto, contratti attivi e livello di criticita\'.', 'I fornitori possono essere classificati per tipologia (ICT, servizi, consulenza, etc.).' ] }, { heading: 'Valutazione del Rischio Fornitore', items: [ 'Ogni fornitore puo\' essere sottoposto a una valutazione del rischio strutturata.', 'La valutazione copre: sicurezza informatica, continuita\' operativa, conformita\' normativa e dipendenza.', 'Il punteggio di rischio viene calcolato automaticamente sulla base delle risposte.', 'I fornitori ad alto rischio vengono evidenziati per un monitoraggio rafforzato.' ] }, { heading: 'Monitoraggio Continuo', items: [ 'La piattaforma traccia scadenze contrattuali e revisioni periodiche.', 'Le variazioni di rischio vengono segnalate automaticamente.', 'E\' possibile associare requisiti di sicurezza specifici a ciascun contratto.' ] }, { heading: 'Panoramica Rischi', items: [ 'La Panoramica Rischi mostra la distribuzione dei fornitori per livello di rischio.', 'Statistiche aggregate su: numero di fornitori, valutazioni scadute, fornitori ad alto rischio.', 'Esportazione dei dati per reporting e audit.' ] }, { heading: 'Importazione fornitori (CSV / API)', items: [ 'Puoi caricare i fornitori in tre modi: manualmente, via importazione CSV (pulsante "Importa") o tramite API key dell\'azienda per l\'integrazione con gestionali/ERP.', 'Colonne CSV riconosciute: name (obbligatoria), vat_number, contact_email, contact_name, service_type, criticality, category_slug, external_ref.', 'I record con lo stesso external_ref vengono aggiornati (upsert): puoi reimportare senza creare duplicati.' ] }, { heading: 'Categorie e questionari configurabili', items: [ 'I fornitori possono essere classificati per categoria (set predefinito personalizzabile: Cloud, MSSP, Telco, Data center, Software/TIC, ecc.).', 'Il template "NIS2 base" copre i requisiti ACN GV.SC: i 5 fattori di rischio di GV.SC-07, gli ambiti di GV.SC-01, i ruoli di GV.SC-02 e la conformita\' contrattuale di GV.SC-05.', 'I template sono versionabili e le domande estensibili, anche per esigenze di procedure interne (privacy, 231, ESG, qualita\').', 'Nota interpretativa: l\'elenco dei fornitori "critici" e la profondita\' del questionario dipendono dalla criticita\' che assegni. Lo strumento supporta la valutazione, ma la decisione finale di perimetro resta una scelta documentata dell\'organizzazione e non costituisce parere legale.' ] } ], references: [ 'Art. 24 D.Lgs. 138/2024 - Sicurezza della catena di approvvigionamento (recepisce l\'art. 21, par. 2, lett. d, della Direttiva (UE) 2022/2555)', 'Art. 24 D.Lgs. 138/2024 - Valutazione dei rischi specifici per ciascun fornitore diretto (recepisce l\'art. 21, par. 3, della Direttiva (UE) 2022/2555)', 'Determinazione ACN n. 164179 del 14/04/2025, Allegati 1 e 2 - Misure GV.SC-01, GV.SC-02, GV.SC-04, GV.SC-05, GV.SC-07 (Art.21.2(d) Dir. 2022/2555)', 'Considerando 85 - Qualita\' e resilienza dei prodotti e servizi ICT', 'Considerando 86 - Gestione dei rischi della supply chain' ] }, // ─── Training & Awareness ──────────────────────────────────── 'training': { title: 'Guida - Formazione e Awareness', intro: 'Il modulo di Formazione gestisce i programmi di sensibilizzazione e formazione sulla sicurezza informatica, come richiesto dall\'art. 23 del D.Lgs. 138/2024 (che recepisce l\'art. 20 della Direttiva (UE) 2022/2555) che impone la formazione obbligatoria per gli organi di gestione.', sections: [ { heading: 'Formazione Obbligatoria NIS2', items: [ 'L\'art. 23 del D.Lgs. 138/2024 (che recepisce l\'art. 20 della Direttiva (UE) 2022/2555) richiede che i membri degli organi di gestione seguano una formazione specifica.', 'La formazione deve consentire di individuare i rischi e valutare le pratiche di gestione del rischio.', 'La piattaforma traccia la conformita\' a questo obbligo per ciascun membro del management.' ] }, { heading: 'Gestione Corsi', items: [ 'Crea e gestisci corsi di formazione su tematiche NIS2 e sicurezza informatica.', 'Ogni corso include: titolo, descrizione, durata stimata, contenuti e materiali.', 'I corsi possono essere categorizzati per argomento e livello di difficolta\'.', 'Supporto per corsi interni ed esterni con tracciamento unificato.' ] }, { heading: 'Assegnazione e Tracciamento', items: [ 'Assegna corsi a singoli utenti o gruppi con scadenze personalizzate.', 'La dashboard mostra lo stato di completamento per ciascun assegnatario.', 'I corsi scaduti vengono evidenziati e possono generare notifiche automatiche.', 'Lo storico di completamento e\' disponibile per audit e compliance.' ] }, { heading: 'Report di Compliance', items: [ 'Visualizza il tasso di completamento complessivo della formazione.', 'Identifica gli utenti con formazione scaduta o mancante.', 'Genera report per dimostrare la conformita\' all\'art. 23 del D.Lgs. 138/2024 (recepisce l\'art. 20, par. 2, della Direttiva (UE) 2022/2555) in sede di audit.' ] } ], references: [ 'Art. 23 D.Lgs. 138/2024 - Formazione obbligatoria per gli organi di gestione (recepisce l\'art. 20, par. 2, della Direttiva (UE) 2022/2555)', 'Art. 23 D.Lgs. 138/2024 - Responsabilita\' degli organi di gestione nell\'approvazione delle misure (recepisce l\'art. 20, par. 1, della Direttiva (UE) 2022/2555)', 'Art. 24 D.Lgs. 138/2024 - Pratiche di igiene informatica di base e formazione in materia di cibersicurezza (recepisce l\'art. 21, par. 2, lett. g, della Direttiva (UE) 2022/2555)', 'Considerando 89 - Formazione regolare per dipendenti e management' ] }, // ─── Inventario ───────────────────────────────────────── 'assets': { title: 'Guida - Inventario', intro: 'Il modulo Inventario consente di catalogare e gestire i beni ICT (hardware e software) dell\'organizzazione, fondamentale per la gestione dei rischi e la sicurezza delle reti e dei sistemi informativi ai sensi dell\'art. 24 del D.Lgs. 138/2024 (che recepisce l\'art. 21 della Direttiva (UE) 2022/2555).', sections: [ { heading: 'Categorizzazione dei beni', items: [ 'Hardware - server, workstation, dispositivi di rete, dispositivi mobili, apparati di sicurezza.', 'Software - applicativi, sistemi operativi, database, middleware, servizi cloud.', 'Rete - reti LAN/WAN, collegamenti internet, VPN, segmenti di rete.', 'Dati - archivi, database, backup, dati personali, dati critici per il business.' ] }, { heading: 'Livelli di Criticita\'', items: [ 'Ogni bene ha un livello di criticita\' che ne determina la priorita\' nella gestione del rischio.', 'La criticita\' viene valutata in base a: impatto sulla continuita\' operativa, dati trattati, esposizione esterna.', 'I beni critici sono soggetti a controlli di sicurezza rafforzati.', 'Il livello di criticita\' influenza la valutazione dei rischi associati.' ] }, { heading: 'Rilevanza NIS2 (scoring 0-100)', items: [ 'Il pulsante Valuta Rilevanza NIS2 applica una metodologia di scoring documentata a 6 criteri pesati: Criticita Operativa (0-25), Impatto Interruzione (0-25), Dati Trattati (0-20), Dipendenze (0-15), Esposizione (0-10), Obblighi Normativi (0-5).', 'Un sistema e considerato rilevante NIS2 quando il punteggio ≥ 40. Classi: ≥80 Critico, 60-79 Alto, 40-59 Medio, 20-39 Basso, <20 Trascurabile.', 'Il punteggio aggiorna automaticamente anche la criticita del bene e alimenta il registro formale dei Sistemi Rilevanti.', 'La metodologia supporta il requisito di censimento e classificazione dei sistemi informativi e di rete rilevanti, da approvare a livello di Direzione.' ] }, { heading: 'Mappa delle Dipendenze', items: [ 'La Mappa Dipendenze visualizza le relazioni tra i beni.', 'Identifica le dipendenze critiche e i singoli punti di guasto (SPOF).', 'Utile per la valutazione dell\'impatto in caso di incidente o indisponibilita\'.' ] }, { heading: 'Gestione del Ciclo di Vita', items: [ 'Tracciamento dello stato del bene: attivo, in manutenzione, dismesso.', 'Registrazione di proprietario, ubicazione, fornitore e contratti di supporto.', 'Alert automatici per beni con supporto in scadenza o fine vita.' ] }, { heading: 'Import da CMDB / Cloud (pulsante "Importa")', items: [ 'Importa beni in blocco da un file CSV o da un export CMDB/cloud, invece di inserirli manualmente.', 'Colonne riconosciute: name, asset_type, criticality, data_classification, internet_facing, dependencies_count, regulated, external_ref, vendor, location.', 'Lo scoring di rilevanza NIS2 (GV.OC-04) viene calcolato automaticamente per ogni bene importato, classificandolo critico/alto/medio/basso.', 'Il campo external_ref abilita la deduplica: re-importare lo stesso ID aggiorna il bene invece di duplicarlo.', 'Gli stessi dati possono arrivare via connettore automatico (API POST /api/services/assets-ingest, scope ingest:assets).' ] } ], references: [ 'Art. 24 D.Lgs. 138/2024 - Sicurezza delle risorse umane, controllo degli accessi e gestione degli attivi (recepisce l\'art. 21, par. 2, lett. i, della Direttiva (UE) 2022/2555)', 'Art. 24 D.Lgs. 138/2024 - Politiche di analisi dei rischi e di sicurezza dei sistemi informatici (recepisce l\'art. 21, par. 2, lett. a, della Direttiva (UE) 2022/2555)', 'Art. 24 D.Lgs. 138/2024 - Continuita\' operativa, gestione dei backup e ripristino (recepisce l\'art. 21, par. 2, lett. c, della Direttiva (UE) 2022/2555)', 'D.Lgs. 4 settembre 2024, n. 138 - Art. 24 - Obblighi in materia di misure di gestione del rischio', 'Identificazione e classificazione dei sistemi rilevanti - metodologia di scoring 0-100 approvata dalla Direzione' ] }, // ─── Reports / Audit ───────────────────────────────────────── 'reports': { title: 'Guida - Audit & Report', intro: 'Il modulo Audit & Report fornisce strumenti per monitorare lo stato dei controlli di compliance, gestire le evidenze e generare report per le autorita\' competenti e per gli audit interni.', sections: [ { heading: 'Controlli di Compliance', items: [ 'Ogni controllo rappresenta un requisito specifico del D.Lgs. 138/2024 (recepimento NIS2).', 'Lo stato di ciascun controllo e\' tracciato: Conforme, Parzialmente Conforme, Non Conforme, Non Valutato.', 'I controlli sono organizzati per categoria secondo l\'art. 24 del D.Lgs. 138/2024 (art. 21, par. 2, Direttiva).', 'La percentuale di conformita\' complessiva e\' calcolata automaticamente.' ] }, { heading: 'Gestione Evidenze', items: [ 'Per ogni controllo e\' possibile allegare evidenze (documenti, screenshot, log).', 'Le evidenze supportano la dimostrazione di conformita\' in sede di audit.', 'Il sistema traccia la data di caricamento e la validita\' di ogni evidenza.', 'Le evidenze scadute o mancanti vengono segnalate automaticamente.' ] }, { heading: 'Log di Audit', items: [ 'Il log di audit registra automaticamente tutte le operazioni effettuate sulla piattaforma.', 'Ogni voce include: utente, azione, data/ora, oggetto e dettagli.', 'I log sono immutabili e disponibili per verifiche ispettive.', 'Supporto per filtri avanzati e ricerca nei log.' ] }, { heading: 'Esportazione Report', items: [ 'Genera report completi in formato esportabile per audit e autorita\'.', 'Report disponibili: stato di compliance, registro rischi, incidenti, formazione.', 'I report possono essere personalizzati per periodo e ambito.' ] }, { heading: 'Monitoraggio Continuo dei Controlli (tab "Monitoraggio Continuo")', items: [ 'Mostra lo stato di freschezza di ogni controllo alimentato dalle evidenze raccolte automaticamente dai connettori (Evidence Automation).', 'Semafori: Sano (evidenza valida), Attenzione, Evidenza scaduta (oltre la soglia di freschezza), Non conforme (ultimo check fallito), Non monitorato.', 'La copertura indica la quota di controlli alimentati da evidenze automatiche: avvicina il modello alla compliance continua (vs assessment puntuale).', 'Le evidenze arrivano via API POST /api/services/evidence-ingest (scope ingest:evidence) dai collector M365/AWS/EDR/SIEM.' ] } ], references: [ 'Art. 24 D.Lgs. 138/2024 - Misure di gestione dei rischi di cibersicurezza (recepisce l\'art. 21 della Direttiva (UE) 2022/2555)', 'Art. 32 - Misure di vigilanza e di esecuzione per i soggetti essenziali', 'Art. 33 - Misure di vigilanza e di esecuzione per i soggetti importanti', 'Art. 34 - Condizioni generali per l\'imposizione di sanzioni amministrative pecuniarie' ] }, // ─── Settings ──────────────────────────────────────────────── 'settings': { title: 'Guida - Impostazioni', intro: 'La sezione Impostazioni consente di configurare il profilo dell\'organizzazione, la classificazione NIS2, gestire il team e le impostazioni di sicurezza dell\'account.', sections: [ { heading: 'Profilo Organizzazione', items: [ 'Configura i dati della tua organizzazione: nome, settore, dimensione, codice fiscale/P.IVA.', 'Questi dati vengono utilizzati per personalizzare i report e le analisi AI.', 'Il settore e la dimensione influenzano la classificazione NIS2.' ] }, { heading: 'Classificazione NIS2', items: [ 'L\'esito nel prodotto è un\'autovalutazione preliminare non vincolante: la qualifica formale e la registrazione spettano all\'ACN (Determinazione ACN 333017/2025, dichiarazione ex DPR 445/2000, finestra 1 gennaio - 28 febbraio).', 'Soggetto Essenziale - settore ad alta criticità (Allegato I) + grande impresa (≥250 dip. o >50M€ fatturato o >43M€ bilancio). Vigilanza proattiva.', 'Soggetto Importante - media impresa in Allegato I, oppure soggetto medio/grande in Allegato II. Vigilanza reattiva.', 'A prescindere dalla dimensione (art. 3, comma 5, D.Lgs. 138/2024): fornitori DNS, registri TLD, servizi fiduciari, reti/servizi di comunicazione elettronica pubblici, registrar di domini, PA.', 'Sotto-soglia: anche un soggetto sotto le soglie può essere individuato dall\'Autorità se ricorre un criterio dell\'art. 3, comma 9, lett. b/c/d (unico fornitore nazionale; impatto su sicurezza/incolumità/salute pubblica; rischio sistemico) — in tal caso il prodotto segnala una possibile individuazione (rinvio ad ACN), senza assegnare automaticamente una classe.', 'Non Applicabile / Adesione Volontaria - fuori dall\'ambito obbligatorio; puoi comunque aderire volontariamente adottando il framework NIS2.' ] }, { heading: 'Gestione Team', items: [ 'Aggiungi e gestisci i membri del team con ruoli e permessi differenziati.', 'Ruoli disponibili: Amministratore (accesso completo) e Utente (accesso limitato).', 'Ogni membro puo\' essere associato a specifiche responsabilita\' (risk owner, incident manager, etc.).' ] }, { heading: 'Sicurezza Account', items: [ 'Modifica la password del tuo account in qualsiasi momento dal pulsante "Cambia password".', 'La piattaforma applica un timeout di sessione automatico dopo 30 minuti di inattivita\'. Un avviso con countdown appare 5 minuti prima del logout per permetterti di rimanere connesso.', 'Il logout automatico protegge le informazioni sensibili in caso di postazione incustodita.', 'La sezione Sessioni Attive elenca tutti i dispositivi attualmente loggati al tuo account (browser, sistema operativo, indirizzo IP, ultimo accesso). Puoi disconnettere un singolo dispositivo con "Disconnetti" oppure tutti tranne questo con "Disconnetti gli altri" — utile se sospetti accessi non autorizzati.' ] }, { heading: 'Preferenze utente', items: [ 'Nel tab Preferenze puoi personalizzare la tua esperienza individuale (non condivisa con altri membri dell\'organizzazione).', 'Lingua: italiano, inglese, francese o tedesco — applicata a tutti i menu e messaggi.', 'Tema: chiaro, scuro o automatico (segue le impostazioni del sistema operativo).', 'Timezone: usata per visualizzare date e ore. Default Europe/Rome (CET/CEST). Cambia se lavori da un altro fuso.', 'Notifiche email: ricevi via email gli avvisi per incidenti, scadenze e training.', 'Notifiche in-app: mostra badge contatori nella sidebar per nuove notifiche.' ] }, { heading: 'Password dimenticata', items: [ 'Dalla pagina di login clicca su "Password dimenticata?" per richiedere un link di reset.', 'Inserisci la tua email: se registrata riceverai un messaggio con un link valido 30 minuti.', 'Il link è single-use: una volta cliccato e impostata la nuova password, non potra\' essere riusato.', 'Per motivi di sicurezza, la pagina mostra sempre lo stesso messaggio sia che l\'email sia registrata sia che non lo sia (anti-enumeration).', 'Dopo il reset, tutte le sessioni attive precedenti vengono disconnesse automaticamente.' ] }, { heading: 'Cambio organizzazione (multi-tenant)', items: [ 'Se sei membro di piu\' organizzazioni (es. consulente), nella sidebar appare un dropdown azienda in alto.', 'Click sul dropdown per vedere tutte le organizzazioni a cui hai accesso e quale è quella attualmente attiva (✓).', 'Selezionando un\'altra organizzazione il sistema emette un nuovo token con il contesto aggiornato e ricarica la pagina.', 'Il cambio è registrato nell\'audit log come context_switch.' ] }, { heading: 'Branding white-label (solo consulenti / super admin)', items: [ 'Il tab Branding consente a uno studio di consulenza di personalizzare l\'interfaccia che vedranno i suoi clienti.', 'Nome prodotto custom: sostituisce "NIS2 Agile" con il branding dello studio (es. "Studio Rossi NIS2 Suite").', 'URL Logo: link assoluto al logo dello studio (es. https://www.tuosito.it/logo.svg). Verra\' mostrato nella sidebar e nelle pagine di login.', 'Colori: il primario sostituisce il blu di default (intestazioni, pulsanti principali); il secondario sostituisce il ciano (badge, accenti).', 'Le modifiche vengono applicate automaticamente a tutti gli utenti del firm al ricaricamento della pagina.' ] } ], references: [ 'Art. 2 - Ambito di applicazione', 'Art. 3 - Soggetti essenziali e soggetti importanti', 'Allegato I - Settori ad alta criticita\'', 'Allegato II - Altri settori critici', 'Art. 23 D.Lgs. 138/2024 - Governance e organi di amministrazione e direttivi (recepisce l\'art. 20 della Direttiva (UE) 2022/2555)' ] }, // ─── Compliance Journey / Workflow ─────────────────────────── 'workflow': { title: 'Guida - Compliance Journey', intro: 'La pagina Compliance Journey visualizza l\'intero percorso di conformita\' NIS2 come una roadmap interattiva a 6 fasi. Mostra lo stato reale di ogni modulo con dati live, guida verso la prossima azione da completare e permette di navigare direttamente a ciascun modulo.', sections: [ { heading: 'Roadmap a 6 Fasi', items: [ 'Fase 1 - Preparazione: onboarding, configurazione organizzazione, definizione team e ruoli.', 'Fase 2 - Valutazione: gap assessment Art.21 (80 domande), inventario dei beni, valutazione supply chain.', 'Fase 3 - Rischi: risk register, piano di trattamento, suggerimenti AI per settore.', 'Fase 4 - Implementazione: policy approvate, formazione completata, controlli ISO 27001 implementati.', 'Fase 5 - Monitoraggio: gestione incidenti Art.23, NCR/CAPA, aggiornamenti normativi, whistleblowing.', 'Fase 6 - Reportistica: report esecutivo, audit chain SHA-256, export certificato.' ] }, { heading: 'Come Leggere il Percorso', items: [ 'Completato - la fase ha raggiunto gli obiettivi minimi di compliance.', 'In corso - la fase e\' stata avviata ma non ancora completata.', 'Attivo - fase di monitoraggio continuo, sempre attiva una volta avviata.', 'Da iniziare - fase non ancora avviata.', 'La percentuale su ogni fase mostra il livello di completamento basato sui dati reali della piattaforma.' ] }, { heading: 'Prossima Azione Consigliata', items: [ 'Il banner blu in cima alla pagina indica sempre la prossima azione piu\' urgente da completare.', 'Il suggerimento si aggiorna automaticamente in base allo stato reale dei moduli.', 'Clicca sul link nel banner per navigare direttamente al modulo corrispondente.' ] }, { heading: 'Card di Dettaglio Fase', items: [ 'Clicca su una fase nella roadmap per espandere il dettaglio degli step.', 'Ogni card mostra: stato badge (Completato/In corso/Da iniziare), metrica numerica reale, link diretto al modulo.', 'Le metriche sono calcolate in tempo reale interrogando tutti i moduli della piattaforma.', 'Clicca direttamente sulla card per accedere al modulo corrispondente.' ] }, { heading: 'Differenza con la Dashboard', items: [ 'La Dashboard mostra KPI numerici e attivita\' recenti — risponde a "come sto?".', 'Il Compliance Journey mostra il processo sequenziale — risponde a "dove sono nel percorso?" e "cosa devo fare dopo?".', 'Usa il Journey per pianificare le priorita\' di intervento e comunicare lo stato al board.' ] } ], references: [ 'Art. 24 D.Lgs. 138/2024 - Misure di gestione dei rischi di cibersicurezza (10 categorie) (recepisce l\'art. 21 della Direttiva (UE) 2022/2555)', 'Art. 23 D.Lgs. 138/2024 - Governance e responsabilita\' degli organi di gestione (recepisce l\'art. 20 della Direttiva (UE) 2022/2555)', 'Art. 25 D.Lgs. 138/2024 - Obblighi di segnalazione degli incidenti significativi (recepisce l\'art. 23 della Direttiva (UE) 2022/2555)', 'D.Lgs. 138/2024 - Recepimento NIS2 in Italia', 'ACN - Linee guida attuative per i soggetti NIS2' ] }, // ─── Segnalazioni (Feedback) ───────────────────────────────── 'feedback': { title: 'Guida - Segnalazioni & Feedback', intro: 'Il sistema di segnalazioni ti permette di comunicare direttamente con il team tecnico di NIS2 Agile. Puoi segnalare bug, proporre miglioramenti, fare domande o richiedere nuove funzionalita\'. L\'intelligenza artificiale analizza ogni segnalazione in tempo reale e tenta la risoluzione autonoma.', sections: [ { heading: 'Come aprire una segnalazione', items: [ 'Clicca il pulsante rosso in basso a destra — visibile su tutte le pagine quando sei autenticato.', 'Scegli il tipo: Bug/Errore, Miglioramento interfaccia, Nuova funzionalita\', Domanda o Altro.', 'Indica la priorita\' percepita: Alta (blocca il lavoro), Media (workaround disponibile) o Bassa (miglioria).', 'Descrivi il problema in modo dettagliato: cosa hai fatto, cosa ti aspettavi, cosa e\' successo invece.', 'Puoi allegare uno screenshot trascinandolo nell\'area dedicata (max 1.5 MB).', 'L\'URL della pagina viene catturato automaticamente — non devi copiarlo.' ] }, { heading: 'Risposta AI immediata', items: [ 'Dopo l\'invio, l\'AI analizza la segnalazione entro pochi secondi e mostra una risposta personalizzata.', 'La risposta AI include suggerimenti su come procedere o conferma che il problema e\' stato registrato.', 'L\'AI assegna automaticamente la categoria (es. rischi, incidenti, interfaccia) e la priorita\' tecnica.', 'Se il suggerimento AI ha gia\' risolto il tuo problema, puoi confermarlo con "Si\', problema risolto".' ] }, { heading: 'Conferma risoluzione (Password Gate)', items: [ 'Quando clicchi "Si\', problema risolto" viene richiesta una password di conferma.', 'La password previene chiusure accidentali dei ticket — assicurandosi che la risoluzione sia intenzionale.', 'Se la segnalazione non e\' risolta, scegli "No, il problema persiste": il ticket rimane aperto e il team lo prende in carico.', 'Puoi monitorare lo stato nella tab "Le mie segnalazioni".' ] }, { heading: 'Le mie segnalazioni', items: [ 'La tab "Le mie segnalazioni" mostra le ultime 20 segnalazioni inviate per questa organizzazione.', 'I badge colorati indicano lo stato: Aperto, In lavorazione, Risolto, Chiuso.', 'La risposta AI e\' sempre visibile sotto ogni segnalazione.' ] }, { heading: 'Risoluzione autonoma AI (Worker)', items: [ 'I ticket marcati "In lavorazione" vengono processati automaticamente ogni 30 minuti da un worker AI.', 'Il worker utilizza Claude Code CLI per analizzare il codice e applicare correzioni in autonomia.', 'Se la correzione ha successo, il ticket viene marcato come Risolto e tutti i membri dell\'organizzazione ricevono una notifica email.', 'I ticket non risolvibili automaticamente rimangono in lavorazione per l\'intervento manuale del team.' ] }, { heading: 'Consigli per segnalazioni efficaci', items: [ 'Sii specifico: "Il bottone Salva nella pagina Rischi non risponde" e\' meglio di "qualcosa non funziona".', 'Includi i passi: "1. Apro la pagina Rischi, 2. Clicco Nuovo Rischio, 3. Compilo il modulo, 4. Il salvataggio da\' errore 500".', 'Allega screenshot quando possibile: accelera enormemente la diagnosi.', 'Usa il tipo Domanda per richieste di chiarimento sull\'utilizzo della piattaforma.' ] } ], references: [ 'Sistema ispirato a alltax.it/docs/sistema-segnalazioni-standard.html', 'Risoluzione autonoma tramite Anthropic Claude Code CLI' ] }, // ─── Whistleblowing (segnalazioni interne) ─────────────────── 'whistleblowing': { title: 'Guida - Segnalazioni (Whistleblowing)', intro: 'Il modulo Whistleblowing gestisce le segnalazioni interne in forma riservata o anonima, in coerenza con la cultura di sicurezza richiesta dalla NIS2 e con la disciplina italiana del whistleblowing (D.Lgs. 24/2023).', sections: [ { heading: 'Invio di una segnalazione', items: [ 'Compila categoria e descrizione del problema o dell\'illecito che vuoi segnalare.', 'Puoi inviare la segnalazione in modo anonimo: in tal caso ricevi un codice di tracciamento da conservare per seguirne lo stato.', 'Le segnalazioni sono trattate con riservatezza: l\'identità del segnalante (se fornita) è protetta.' ] }, { heading: 'Tracciamento e gestione', items: [ 'Con il codice di tracciamento puoi verificare lo stato della tua segnalazione anonima senza autenticarti.', 'Gli incaricati assegnano e lavorano le segnalazioni: stati Aperta, In gestione, Chiusa.', 'La piattaforma tiene traccia della cronologia (timeline) di ogni segnalazione a fini di audit.' ] }, { heading: 'Nota interpretativa', items: [ 'Il canale di whistleblowing interno e la divulgazione coordinata delle vulnerabilità (NIS2) sono ambiti distinti: questo modulo copre le segnalazioni di illeciti/problemi, non la notifica incidenti Art.23.', 'L\'attivazione e le modalità del canale vanno definite dall\'organizzazione secondo il D.Lgs. 24/2023; lo strumento supporta il processo ma non sostituisce le procedure aziendali né un parere legale.' ] } ], references: [ 'D.Lgs. 10 marzo 2023, n. 24 - Protezione delle persone che segnalano violazioni (whistleblowing)', 'Direttiva (UE) 2022/2555 - cultura della sicurezza e segnalazione interna' ] }, // ─── Aggiornamenti Normativi ───────────────────────────────── 'normative': { title: 'Guida - Aggiornamenti Normativi', intro: 'Il modulo Aggiornamenti Normativi raccoglie le novità su NIS2, ACN e normativa collegata, con tracciamento della presa visione (acknowledgement) per dimostrare il monitoraggio continuo del quadro normativo.', sections: [ { heading: 'Consultazione', items: [ 'Visualizzi gli aggiornamenti normativi pubblicati, con fonte e data.', 'Gli aggiornamenti da prendere in carico sono evidenziati: richiedono una presa visione esplicita.' ] }, { heading: 'Presa visione (ACK)', items: [ 'Clicca "Presa visione" per registrare che hai letto e valutato l\'aggiornamento: viene tracciata data e utente.', 'La presa visione costituisce evidenza, in sede di audit, del monitoraggio continuo degli obblighi (governance NIS2).' ] } ], references: [ 'Art. 23-24 D.Lgs. 138/2024 - governance e monitoraggio del rischio (recepiscono gli artt. 20-21 della Direttiva (UE) 2022/2555)', 'Determinazioni ACN (aggiornamenti tecnico-operativi)' ] }, // ─── Knowledge Base ────────────────────────────────────────── 'kb': { title: 'Guida - Knowledge Base', intro: 'La Knowledge Base è il repository documentale che alimenta l\'assistente AI: i documenti caricati vengono indicizzati e usati per fornire risposte ancorate alle fonti (RAG), con visibilità a più livelli.', sections: [ { heading: 'Caricamento documenti', items: [ 'Carichi un documento indicando titolo, tipo e contenuto.', 'Scegli la visibilità: Sistema (tutti), Studio/Firm (collaboratori dello studio + organizzazioni condivise) o solo l\'organizzazione corrente.', 'Il documento viene suddiviso in parti e indicizzato vettorialmente per la ricerca semantica.' ] }, { heading: 'Ricerca e uso da parte dell\'AI', items: [ 'La ricerca semantica trova i passaggi più pertinenti a una domanda, anche senza parole esatte.', 'L\'assistente AI (ARIA) usa questi documenti come contesto per rispondere citando le fonti, senza inventare riferimenti.', 'L\'isolamento per visibilità garantisce che i documenti di un\'organizzazione non siano accessibili ad altre.' ] } ], references: [ 'Pattern RAG (Retrieval-Augmented Generation) con embeddings e database vettoriale', 'Visibilità multi-livello SYSTEM / FIRM / ORG' ] }, // ─── Aziende (consulente) ──────────────────────────────────── 'companies': { title: 'Guida - Aziende Gestite', intro: 'Il modulo Aziende è dedicato a consulenti e studi: permette di gestire più organizzazioni clienti e passare rapidamente dall\'una all\'altra mantenendo i dati separati.', sections: [ { heading: 'Gestione del portafoglio clienti', items: [ 'Visualizzi l\'elenco delle aziende che gestisci con il relativo livello di compliance.', 'Puoi aggiungere una nuova azienda cliente e accedere ai suoi moduli.', 'Il pulsante "Entra" imposta l\'organizzazione attiva: tutti i moduli (rischi, incidenti, policy, fornitori...) mostrano i dati di quell\'azienda.' ] }, { heading: 'Separazione dei dati', items: [ 'Ogni azienda è un\'organizzazione isolata: i dati non si mescolano mai tra clienti diversi (multi-tenancy).', 'Il cambio di contesto è tracciato a fini di audit.' ] } ], references: [ 'Architettura multi-tenant: ogni organizzazione ha dati isolati', 'Ruolo consulente con accesso a più organizzazioni' ] }, // ─── AI Cross-Analysis (portfolio consulente) ──────────────── 'cross-analysis': { title: 'Guida - AI Cross-Analysis Portfolio', intro: 'La Cross-Analysis è uno strumento riservato a Consulenti e Super Admin: aggrega in forma anonimizzata i dati di compliance di tutte le organizzazioni del portfolio per individuare pattern comuni, gap ricorrenti e benchmark. Serve a orientare le priorità di intervento, NON sostituisce l\'analisi puntuale di ciascuna organizzazione né costituisce parere legale.', sections: [ { heading: 'A chi è riservata', items: [ 'L\'accesso richiede il ruolo Consultant oppure Super Admin: gli altri utenti vedono un messaggio di accesso negato.', 'I dati delle organizzazioni vengono mostrati in forma aggregata e anonimizzata, coerentemente con il principio di minimizzazione del trattamento.' ] }, { heading: 'Metriche di portfolio', items: [ 'Compliance medio, Rischi aperti, Formazione media e numero di Organizzazioni: una sintesi quantitativa del portfolio gestito.', 'Distribuzione settoriale e distribuzione degli score di compliance: aiutano a capire dove si concentra il lavoro.', 'Lo Score medio per categoria NIS2 (dal più basso) evidenzia le famiglie di misure dell\'art. 24 D.Lgs. 138/2024 (art. 21, par. 2, Direttiva) più deboli trasversalmente ai clienti.' ] }, { heading: 'Analisi AI del portfolio', items: [ 'L\'analisi AI elabora i dati aggregati per indicare i gap più frequenti, il livello di rischio medio, le categorie NIS2 deboli e dove serve un intervento urgente.', 'Il benchmark NIS2 confronta le organizzazioni tra loro su base anonimizzata, per posizionare ciascun cliente rispetto al portfolio.', 'Le analisi precedenti sono consultabili nello storico, così da osservare l\'evoluzione nel tempo.', 'Nota interpretativa: i suggerimenti AI sono un supporto decisionale; la valutazione di conformità e le scelte di perimetro restano responsabilità documentata del consulente e dell\'organizzazione.' ] } ], references: [ 'Art. 24 D.Lgs. 138/2024 - le 10 famiglie di misure usate come dimensioni di benchmark (recepisce l\'art. 21, par. 2, lett. a-j, della Direttiva (UE) 2022/2555)', 'Art. 23 D.Lgs. 138/2024 - governance: la vista di portfolio supporta il monitoraggio del consulente (recepisce l\'art. 20 della Direttiva (UE) 2022/2555)', 'D.Lgs. 4 settembre 2024, n. 138 - recepimento NIS2 in Italia', 'Architettura multi-tenant: aggregazione anonimizzata, dati delle singole organizzazioni mai mescolati', 'Lo strumento è di supporto e benchmark, non sostituisce l\'autovalutazione ACN né un parere legale.' ] }, // ─── Standard Continuità di Servizio (operativo) ───────────── 'service-continuity': { title: 'Guida - Standard di Continuità del Servizio', intro: 'Questa pagina documenta lo standard operativo con cui la piattaforma NIS2 Agile garantisce la continuità del proprio servizio (architettura, healthcheck, ripristino, manutenzione, rate limiting). È una pagina tecnico-informativa sull\'affidabilità del prodotto SaaS; NON descrive gli obblighi di continuità operativa della TUA organizzazione, che si gestiscono nei moduli Rischi, Inventario e nel Modello Organizzativo SGSI.', sections: [ { heading: 'Architettura e healthcheck', items: [ 'I servizi (applicazione PHP+MySQL+Qdrant, database, vector DB) espongono endpoint di healthcheck monitorati: un\'anomalia genera un alert prima che l\'utente la percepisca.', 'Il deploy a caldo applica gli aggiornamenti senza interruzione percepibile del servizio.' ] }, { heading: 'Resilienza e degradazione graceful', items: [ 'Le chiamate critiche adottano retry con backoff esponenziale e riconnessione automatica per assorbire indisponibilità transitorie.', 'In caso di componente non disponibile, la piattaforma applica una degradazione graceful: il frontend mostra un fallback invece di bloccarsi.', 'Sono definiti tempi di recovery attesi per ciascun servizio.' ] }, { heading: 'Manutenzione automatica', items: [ 'Job pianificati garantiscono igiene operativa: monitoraggio disco (alert se > 85%), cleanup periodico, rinnovo automatico dei certificati SSL (Let\'s Encrypt).', 'Il rate limiting (per IP, per chiave/utente, per email, sui webhook) protegge la disponibilità del servizio da abusi e picchi.' ] }, { heading: 'Relazione con la TUA continuità operativa', items: [ 'Questa pagina riguarda l\'affidabilità del fornitore (NIS2 Agile). I tuoi obblighi di continuità operativa e gestione dei backup ai sensi della NIS2 vanno valutati e documentati nei tuoi moduli (Rischi, Inventario, Audit & Report, SGSI).', 'Puoi usare le informazioni qui presenti come elemento nella valutazione del rischio del fornitore (supply chain) NIS2 Agile.' ] } ], references: [ 'Art. 24 D.Lgs. 138/2024 - continuità operativa, gestione dei backup, ripristino in caso di disastro e gestione delle crisi (recepisce l\'art. 21, par. 2, lett. c, della Direttiva (UE) 2022/2555)', 'Art. 24 D.Lgs. 138/2024 - sicurezza della catena di approvvigionamento - valutazione del fornitore SaaS (recepisce l\'art. 21, par. 2, lett. d, della Direttiva (UE) 2022/2555)', 'D.Lgs. 4 settembre 2024, n. 138 - Art. 24 - misure di gestione del rischio', 'Determinazione ACN n. 164179 del 14/04/2025 - requisiti funzione Ripristino (RC) [da verificare il mapping puntuale con gli SLA del fornitore]', 'NOTA: pagina informativa sull\'affidabilità del prodotto; gli obblighi NIS2 di continuità restano in capo all\'organizzazione utente.' ] } }; // ── Mappa tra filename nell'URL e chiave di help ───────────────── var _pageMap = { 'dashboard.html': 'dashboard', 'dashboard': 'dashboard', 'assessment.html': 'assessment', 'assessment': 'assessment', 'isms.html': 'isms', 'isms': 'isms', 'organigramma.html': 'org', 'organigramma': 'org', 'competenze.html': 'competences', 'competenze': 'competences', 'raci.html': 'raci', 'raci': 'raci', 'review-schedule.html': 'review-schedule', 'review-schedule': 'review-schedule', 'misure-requisiti.html': 'misure-requisiti', 'misure-requisiti': 'misure-requisiti', 'stakeholders.html': 'stakeholders', 'stakeholders': 'stakeholders', 'risks.html': 'risks', 'risks': 'risks', 'incidents.html': 'incidents', 'incidents': 'incidents', 'policies.html': 'policies', 'policies': 'policies', 'supply-chain.html': 'supply-chain', 'supply-chain': 'supply-chain', 'training.html': 'training', 'training': 'training', 'assets.html': 'assets', 'assets': 'assets', 'reports.html': 'reports', 'audit.html': 'reports', 'reports': 'reports', 'audit': 'reports', 'settings.html': 'settings', 'settings': 'settings', 'workflow.html': 'workflow', 'workflow': 'workflow', 'feedback': 'feedback', 'whistleblowing.html': 'whistleblowing', 'whistleblowing': 'whistleblowing', 'normative.html': 'normative', 'normative': 'normative', 'kb.html': 'kb', 'kb': 'kb', 'companies.html': 'companies', 'companies': 'companies', 'cross-analysis.html': 'cross-analysis', 'cross-analysis': 'cross-analysis', 'service-continuity.html': 'service-continuity', 'service-continuity': 'service-continuity' }; // ── Stili CSS (iniettati una sola volta) ───────────────────────── var _stylesInjected = false; function _injectStyles() { if (_stylesInjected) return; _stylesInjected = true; var style = document.createElement('style'); style.textContent = [ /* Pulsante help nell'header */ '.help-btn {', ' display: inline-flex;', ' align-items: center;', ' justify-content: center;', ' width: 36px;', ' height: 36px;', ' padding: 0;', ' background: var(--gray-100);', ' border: 1px solid var(--gray-300);', ' border-radius: 50%;', ' cursor: pointer;', ' color: var(--gray-500);', ' transition: all var(--transition-fast);', '}', '.help-btn:hover {', ' background: var(--primary-bg);', ' border-color: var(--primary);', ' color: var(--primary);', '}', '.help-btn:focus-visible {', ' box-shadow: 0 0 0 3px rgba(26, 115, 232, 0.3);', ' outline: none;', '}', '.help-btn svg {', ' width: 18px;', ' height: 18px;', '}', /* Contenuto del modale help */ '.help-content {', ' font-size: 0.875rem;', ' color: var(--gray-700);', ' line-height: 1.7;', '}', '.help-content .help-intro {', ' margin-bottom: 20px;', ' padding: 14px 18px;', ' background: var(--primary-bg);', ' border-radius: var(--border-radius);', ' border-left: 4px solid var(--primary);', ' color: var(--gray-700);', '}', '.help-content h4 {', ' font-size: 0.9375rem;', ' font-weight: 700;', ' color: var(--gray-900);', ' margin: 20px 0 10px 0;', ' padding-bottom: 6px;', ' border-bottom: 1px solid var(--gray-100);', '}', '.help-content h4:first-of-type {', ' margin-top: 0;', '}', '.help-content ul {', ' list-style: none;', ' padding: 0;', ' margin: 0 0 8px 0;', '}', '.help-content ul li {', ' position: relative;', ' padding: 5px 0 5px 20px;', ' line-height: 1.6;', '}', '.help-content ul li::before {', ' content: "";', ' position: absolute;', ' left: 0;', ' top: 13px;', ' width: 6px;', ' height: 6px;', ' background: var(--primary);', ' border-radius: 50%;', '}', '.help-content .help-references {', ' margin-top: 24px;', ' padding: 14px 18px;', ' background: var(--gray-50);', ' border-radius: var(--border-radius);', ' border: 1px solid var(--gray-200);', '}', '.help-content .help-references h4 {', ' font-size: 0.8125rem;', ' color: var(--gray-600);', ' text-transform: uppercase;', ' letter-spacing: 0.04em;', ' margin: 0 0 10px 0;', ' padding-bottom: 6px;', ' border-bottom: 1px solid var(--gray-200);', '}', '.help-content .help-references ul li {', ' font-size: 0.8125rem;', ' color: var(--gray-600);', ' padding: 3px 0 3px 20px;', '}', '.help-content .help-references ul li::before {', ' width: 5px;', ' height: 5px;', ' background: var(--gray-400);', ' top: 11px;', '}', /* Inline help tooltip */ '.inline-help {', ' display: inline-flex;', ' align-items: center;', ' justify-content: center;', ' width: 16px;', ' height: 16px;', ' margin-left: 4px;', ' vertical-align: middle;', ' color: var(--gray-400);', ' cursor: help;', ' position: relative;', '}', '.inline-help:hover {', ' color: var(--primary);', '}', '.inline-help .inline-help-text {', ' position: absolute;', ' bottom: calc(100% + 8px);', ' left: 50%;', ' transform: translateX(-50%) scale(0.95);', ' background: var(--gray-800);', ' color: #fff;', ' padding: 8px 12px;', ' border-radius: var(--border-radius-sm);', ' font-size: 0.75rem;', ' font-weight: 500;', ' line-height: 1.5;', ' white-space: normal;', ' width: max-content;', ' max-width: 260px;', ' pointer-events: none;', ' opacity: 0;', ' transition: opacity var(--transition-fast), transform var(--transition-fast);', ' z-index: 60;', ' box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);', '}', '.inline-help .inline-help-text::after {', ' content: "";', ' position: absolute;', ' top: 100%;', ' left: 50%;', ' transform: translateX(-50%);', ' border: 5px solid transparent;', ' border-top-color: var(--gray-800);', '}', '.inline-help:hover .inline-help-text {', ' opacity: 1;', ' transform: translateX(-50%) scale(1);', '}' ].join('\n'); document.head.appendChild(style); } // ── Rilevamento pagina corrente dall'URL ───────────────────────── function _detectPage() { var pathname = window.location.pathname; var filename = pathname.split('/').pop() || ''; // Rimuovi eventuale query string filename = filename.split('?')[0]; // Rimuovi eventuale hash filename = filename.split('#')[0]; // Prova match diretto if (_pageMap[filename]) { return _pageMap[filename]; } // Prova senza estensione var withoutExt = filename.replace(/\.html?$/, ''); if (_pageMap[withoutExt]) { return _pageMap[withoutExt]; } // Fallback: prova a cercare nel pathname var segments = pathname.replace(/\.html?$/, '').split('/').filter(Boolean); for (var i = segments.length - 1; i >= 0; i--) { if (_pageMap[segments[i]]) { return _pageMap[segments[i]]; } } return null; } // ── Rendering del contenuto HTML di help ───────────────────────── // Mapping pageId -> ancora capitolo nella Guida completa (guida.html) var _guideAnchor = { 'dashboard': 'cap-4', 'assessment': 'cap-5', 'risks': 'cap-6', 'incidents': 'cap-7', 'policies': 'cap-8', 'supply-chain': 'cap-9', 'training': 'cap-10', 'assets': 'cap-11', 'reports': 'cap-12', 'feedback': 'cap-13', 'workflow': 'cap-4', 'settings': 'cap-3' }; function _renderHelpContent(pageId) { var data = _helpContent[pageId]; if (!data) return null; var html = '
'; // Intro html += '
' + data.intro + '
'; // Sezioni for (var i = 0; i < data.sections.length; i++) { var section = data.sections[i]; html += '

' + section.heading + '

'; html += ''; } // Riferimenti NIS2 if (data.references && data.references.length > 0) { html += '
'; html += '

Riferimenti NIS2

'; html += ''; html += '
'; } // Link alla guida completa (per utenti che vogliono approfondire) var anchor = _guideAnchor[pageId] || ''; var guideHref = 'guida.html' + (anchor ? '#' + anchor : ''); html += '
'; html += 'Sei nuovo? '; html += 'Apri la Guida all\'uso completa '; html += 'con spiegazioni in parole semplici, esempi pratici e cosa dice la norma.'; html += '
'; html += '
'; return { title: data.title, content: html }; } // ── API Pubblica ───────────────────────────────────────────────── /** * Mostra il modale di help per una pagina specifica. * Se pageId non e' fornito, rileva automaticamente la pagina corrente. * @param {string} [pageId] - Identificativo della pagina (es. 'dashboard', 'risks') */ function showHelp(pageId) { _injectStyles(); if (!pageId) { pageId = _detectPage(); } if (!pageId || !_helpContent[pageId]) { if (typeof showNotification === 'function') { showNotification('Nessuna guida disponibile per questa pagina.', 'info'); } return; } var rendered = _renderHelpContent(pageId); if (!rendered) return; var footer = ''; showModal(rendered.title, rendered.content, { footer: footer, size: 'lg' }); } /** * Inietta un pulsante "?" nell'header della pagina (.content-header-actions). * Se l'header non esiste o il pulsante e' gia' presente, non fa nulla. */ function addHelpButton() { _injectStyles(); var pageId = _detectPage(); if (!pageId || !_helpContent[pageId]) return; var container = document.querySelector('.content-header-actions'); if (!container) return; // Evita duplicati if (container.querySelector('.help-btn')) return; var btn = document.createElement('button'); btn.className = 'help-btn'; btn.setAttribute('type', 'button'); btn.setAttribute('aria-label', 'Apri guida contestuale'); btn.setAttribute('title', 'Guida'); btn.innerHTML = HELP_ICON; btn.addEventListener('click', function () { showHelp(pageId); }); container.appendChild(btn); } /** * Restituisce una stringa HTML per un'icona "?" con tooltip inline. * Puo' essere inserita accanto a qualsiasi elemento. * @param {string} text - Testo del tooltip * @returns {string} HTML string */ function inlineHelp(text) { _injectStyles(); // Escape delle virgolette nel testo per sicurezza nell'attributo var safeText = text .replace(/&/g, '&') .replace(//g, '>'); return '' + HELP_ICON_SMALL + '' + safeText + '' + ''; } /** * Inizializza il sistema di help: inietta gli stili e aggiunge il pulsante help * nell'header della pagina corrente (se applicabile). */ function init() { _injectStyles(); addHelpButton(); } /** * Restituisce la lista degli ID di pagina supportati dal sistema di help. * @returns {string[]} */ function getAvailablePages() { return Object.keys(_helpContent); } // ── Esposizione API ────────────────────────────────────────────── return { init: init, showHelp: showHelp, addHelpButton: addHelpButton, inlineHelp: inlineHelp, getAvailablePages: getAvailablePages }; })();