[FEAT] Epic C / C1 — Elenco Misure/Requisiti consultabile (read-only) + FrameworkController

UI data-driven sulle tabelle di config cfg_nis2_* (mig.046):
- FrameworkController::catalog (GET /api/framework/catalog): 43 misure / 116 requisiti,
  procedura+rischio di default per requisito, flag importanti/essenziali, classe org.
- public/misure-requisiti.html (Bootstrap Italia/AGID): vista per misura / per area politica,
  selettore soggetto (auto/importante/essenziale/tutti), righe che si 'spengono' per classe,
  ricerca, sola lettura (codifica non modificabile). Voce sidebar in sezione Compliance.
- api.js frameworkCatalog(); routing index.php; i18n nav.framework IT/EN.
- help.js: guida 'misure-requisiti' (struttura, importanti/essenziali, riferimenti art.23/24 D.Lgs.).
- KB AI: doc SYSTEM ingestato (uuid 7871c1ea).
- Cache-buster ?v=20260621 (35 pagine), version 1.18.0, SW cache nis2-shell-v1.18.0.
- docs/simon/: file sorgente autoritativi (provenienza seed, codifica Simon non variata).

Smoke prod: /framework/catalog 200 (43/116, 6 misure solo-essenziali, GV.OC-04->Proc.01/Risk.01),
pagina 200, USR2 applicato. Additivo, nessuna modifica a dati esistenti.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
DevEnv nis2-agile
2026-06-16 17:29:08 +02:00
co-authored by Claude Opus 4.8
parent d37047987f
commit 92d101b6f4
46 changed files with 511 additions and 115 deletions
+6
View File
@@ -289,6 +289,12 @@ class NIS2API {
rsComplete(id) { return this.revComplete(id); }
rsSync() { return this.revSync(); }
// ═══════════════════════════════════════════════════════════════════
// Framework canonico Misure/Requisiti (Epic C / C1) — SOLA LETTURA.
// Catalogo cfg_nis2_* (43 misure / 116 requisiti + procedura+rischio default).
// ═══════════════════════════════════════════════════════════════════
frameworkCatalog() { return this._acn(this.get('/framework/catalog')); }
// ═══════════════════════════════════════════════════════════════════
// Stakeholder estesi (A4 Fase 4.5) — riusa suppliers (GV.SC-02).
// stakeholderMap = vista di sintesi raggruppata (supplier/customer/partner). _acn.
+1
View File
@@ -189,6 +189,7 @@ function loadSidebar() {
{ name: 'Compliance Journey', href: 'workflow.html', icon: `<svg viewBox="0 0 20 20" fill="currentColor"><path d="M10.707 2.293a1 1 0 00-1.414 0l-7 7a1 1 0 001.414 1.414L4 10.414V17a1 1 0 001 1h2a1 1 0 001-1v-2a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 001 1h2a1 1 0 001-1v-6.586l.293.293a1 1 0 001.414-1.414l-7-7z"/></svg>` },
{ name: 'Gap Analysis', href: 'assessment.html', icon: iconClipboardCheck(), i18nKey: 'nav.gap_analysis' },
{ name: 'Gap Analysis ACN', href: 'acn-gap.html', icon: iconClipboardCheck(), i18nKey: 'nav.acn_gap' },
{ name: 'Misure e Requisiti', href: 'misure-requisiti.html', icon: `<svg viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M3 4a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zm0 4a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zm0 4a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zm0 4a1 1 0 011-1h8a1 1 0 110 2H4a1 1 0 01-1-1z" clip-rule="evenodd"/></svg>`, i18nKey: 'nav.framework' },
{ name: 'Modello SGSI (ISO 27001)', href: 'isms.html', icon: `<svg viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M2.166 4.999A11.954 11.954 0 0010 1.944 11.954 11.954 0 0017.834 5c.11.65.166 1.32.166 2.001 0 5.225-3.34 9.67-8 11.317C5.34 16.67 2 12.225 2 7c0-.682.057-1.35.166-2.001zm11.541 3.708a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/></svg>`, i18nKey: 'nav.isms' },
]
},
+39
View File
@@ -360,6 +360,43 @@ const HelpSystem = (function () {
]
},
// ─── 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 <strong>misure</strong> sono 43 in totale; ogni misura è descritta da uno o più <strong>requisiti</strong> (i singoli punti/commi).',
'A ogni requisito è abbinata una <strong>procedura di default</strong> (che lo risolve) e un <strong>rischio di default</strong>: queste alimentano, come contenuto iniziale modificabile, i moduli Procedure e Rischi.',
'La <strong>valutazione del rischio</strong> 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 <strong>soggetti essenziali</strong>: per un soggetto <strong>importante</strong> quelle righe si "spengono" (appaiono in grigio).',
'Soggetti <strong>importanti</strong>: 37 misure / 92 requisiti. Soggetti <strong>essenziali</strong>: 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: 'Riferimenti normativi',
items: [
'Misure di base: <strong>Determinazione ACN n. 164179 del 14 aprile 2025</strong> (Allegato 1 = importanti, Allegato 2 = essenziali).',
'Gli obblighi di gestione del rischio fanno capo all\'<strong>art. 24 del D.Lgs. 138/2024</strong>; la governance all\'<strong>art. 23</strong>.',
'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',
@@ -1247,6 +1284,8 @@ const HelpSystem = (function () {
'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',
+1
View File
@@ -20,6 +20,7 @@ const I18n = (function () {
'nav.dashboard': { it: 'Dashboard', en: 'Dashboard' },
'nav.gap_analysis': { it: 'Gap Analysis', en: 'Gap Analysis' },
'nav.acn_gap': { it: 'Gap Analysis ACN', en: 'ACN Gap Analysis' },
'nav.framework': { it: 'Misure e Requisiti', en: 'Measures & Requirements' },
// Gap Analysis ACN (Determinazione 164179/2025)
'acn.title': { it: 'Gap Analysis ACN (misure di base)', en: 'ACN Gap Analysis (baseline measures)' },
'acn.ai': { it: 'Analisi AI dei gap', en: 'AI gap analysis' },