[DOCS] #384 p.6 — help contestuale Matrice RACI su Policy + link Misure/Requisiti; cache-buster help.js; v1.23.9

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
DevEnv nis2-agile
2026-06-18 19:46:38 +02:00
co-authored by Claude Opus 4.8
parent 99bd293745
commit 726a2a80ef
30 changed files with 45 additions and 29 deletions
+1 -1
View File
@@ -1091,7 +1091,7 @@
<script src="js/api.js?v=20260631"></script>
<script src="js/common.js?v=20260631"></script>
<script src="js/i18n.js?v=20260631"></script>
<script src="js/help.js?v=20260618p1"></script>
<script src="js/help.js?v=20260618p2"></script>
<script>
if (!checkAuth()) throw new Error('Not authenticated');
loadSidebar();
+1 -1
View File
@@ -167,7 +167,7 @@
</script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script>
// ── Auth check ───────────────────────────────────────────
if (!checkAuth()) throw new Error('Not authenticated');
+1 -1
View File
@@ -374,7 +374,7 @@
</script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script>
// ── Auth & Init ─────────────────────────────────────────
if (!checkAuth()) throw new Error('Not authenticated');
+1 -1
View File
@@ -156,7 +156,7 @@
<script src="/vendor/bootstrap-italia/dist/js/bootstrap-italia.bundle.min.js"></script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script>
'use strict';
/*
+1 -1
View File
@@ -356,7 +356,7 @@
<script>if (window.bootstrap && bootstrap.loadFonts) { bootstrap.loadFonts('vendor/bootstrap-italia/dist/fonts'); }</script>
<script src="js/common-bi.js?v=20260631"></script>
<script src="js/i18n.js?v=20260631"></script>
<script src="js/help.js?v=20260618p1"></script>
<script src="js/help.js?v=20260618p2"></script>
<script>
if (!checkAuth()) throw new Error('Not authenticated');
+1 -1
View File
@@ -188,7 +188,7 @@
<script src="/vendor/bootstrap-italia/dist/js/bootstrap-italia.bundle.min.js"></script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script src="/js/competenze.js?v=20260617"></script>
</body>
</html>
+1 -1
View File
@@ -141,7 +141,7 @@
<script src="/vendor/bootstrap-italia/dist/js/bootstrap-italia.bundle.min.js"></script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script>
'use strict';
/* Controlli periodici (control monitoring §9.1/A.8.16): controlli ricorrenti + esecuzioni (evidenza) + NC/AC. */
+1 -1
View File
@@ -156,7 +156,7 @@
</script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script>
// ── Auth check ───────────────────────────────────────────
if (!checkAuth()) throw new Error('Not authenticated');
+1 -1
View File
@@ -1154,7 +1154,7 @@
</script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script>
// La guida è accessibile anche da non autenticati (utile per onboarding)
// ma se sei loggato carichi sidebar + i18n normalmente. Stessa logica
+1 -1
View File
@@ -364,7 +364,7 @@
</script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script>
// ── Auth & Init ──────────────────────────────────────────────
if (!checkAuth()) throw new Error('Not authenticated');
+1 -1
View File
@@ -144,7 +144,7 @@
<script src="/vendor/bootstrap-italia/dist/js/bootstrap-italia.bundle.min.js"></script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script>
'use strict';
/*
+1 -1
View File
@@ -197,7 +197,7 @@
</script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script src="/js/isms.js"></script>
</body>
</html>
+16
View File
@@ -736,6 +736,22 @@ const HelpSystem = (function () {
'Le policy scadute o non aggiornate vengono evidenziate automaticamente.'
]
},
{
heading: 'Matrice RACI sulla policy',
items: [
'Nel dettaglio di ogni policy la sezione <strong>Matrice RACI</strong> collega i ruoli dell\'organigramma alla policy: <strong>R</strong> (Responsible, chi la esegue), <strong>A</strong> (Accountable, chi la approva e ne risponde), <strong>C</strong> (Consulted, chi va consultato), <strong>I</strong> (Informed, chi va informato).',
'In stato <strong>Bozza</strong> l\'assegnazione e\' libera. Per <strong>approvare</strong> la policy sono richiesti almeno un ruolo <strong>R</strong> e un ruolo <strong>A</strong>: e\' una regola organizzativa del prodotto (non un obbligo normativo) che evita policy prive di un responsabile e di un approvatore chiari.',
'I ruoli si definiscono nell\'<strong>Organigramma</strong>; se non vedi alcun ruolo, aggiungilo prima li\'. La modifica della matrice e\' riservata ad Amministratore e Compliance Manager.',
'La matrice RACI e\' uno strumento di supporto organizzativo, non un parere legale.'
]
},
{
heading: 'Collegamento con Misure e Requisiti',
items: [
'Le voci che in passato erano chiamate "Procedure" sono ora gestite qui come <strong>Policy</strong>: i due archivi sono stati unificati in un unico elenco.',
'Nella colonna <strong>Requisito NIS2</strong> dell\'elenco policy trovi i requisiti collegati a ciascuna policy; il link apre la pagina <strong>Misure e Requisiti</strong> posizionandosi sul requisito. Viceversa, la colonna "Policy" di quella pagina riporta alla policy collegata.'
]
},
{
heading: 'Gestione Versioni',
items: [
+1 -1
View File
@@ -163,7 +163,7 @@
</script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script src="/js/kb.js"></script>
<script>
// Gate auth + chrome come le altre pagine -bi.
+1 -1
View File
@@ -131,7 +131,7 @@
<script src="/vendor/bootstrap-italia/dist/js/bootstrap-italia.bundle.min.js"></script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script>
'use strict';
/*
+1 -1
View File
@@ -172,7 +172,7 @@
<script src="/vendor/bootstrap-italia/dist/js/bootstrap-italia.bundle.min.js"></script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script>
'use strict';
/*
+1 -1
View File
@@ -125,7 +125,7 @@
</script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script>
if (!checkAuth()) throw new Error('Not authenticated');
loadSidebar();
+1 -1
View File
@@ -143,7 +143,7 @@
<script src="/vendor/bootstrap-italia/dist/js/bootstrap-italia.bundle.min.js"></script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script src="/js/organigramma.js?v=20260617"></script>
</body>
</html>
+1 -1
View File
@@ -346,7 +346,7 @@
</script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script>
// ── Auth & Init ─────────────────────────────────────────
if (!checkAuth()) throw new Error('Not authenticated');
+1 -1
View File
@@ -136,7 +136,7 @@
<script src="/vendor/bootstrap-italia/dist/js/bootstrap-italia.bundle.min.js"></script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script src="/js/raci.js?v=20260619"></script>
</body>
</html>
+1 -1
View File
@@ -456,7 +456,7 @@
</script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script>
// ── Auth & Init ─────────────────────────────────────────
if (!checkAuth()) throw new Error('Not authenticated');
+1 -1
View File
@@ -146,7 +146,7 @@
<script src="/vendor/bootstrap-italia/dist/js/bootstrap-italia.bundle.min.js"></script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script>
'use strict';
/*
+1 -1
View File
@@ -507,7 +507,7 @@
</script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script>
// ── Auth & Init ──────────────────────────────────────────────
if (!checkAuth()) throw new Error('Not authenticated');
+1 -1
View File
@@ -685,7 +685,7 @@
</script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script>
// ── Auth check ───────────────────────────────────────────
if (!checkAuth()) throw new Error('Not authenticated');
+1 -1
View File
@@ -199,7 +199,7 @@
<script src="/vendor/bootstrap-italia/dist/js/bootstrap-italia.bundle.min.js"></script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script>
'use strict';
/*
+1 -1
View File
@@ -196,7 +196,7 @@
<script src="/vendor/bootstrap-italia/dist/js/bootstrap-italia.bundle.min.js"></script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script>
'use strict';
/*
+1 -1
View File
@@ -490,7 +490,7 @@
</script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script>
// ── Auth & Init ─────────────────────────────────────────
if (!checkAuth()) throw new Error('Not authenticated');
+1 -1
View File
@@ -305,7 +305,7 @@
</script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script>
// ── Auth & Init ─────────────────────────────────────────
if (!checkAuth()) throw new Error('Not authenticated');
+1 -1
View File
@@ -1 +1 @@
{"version": "1.23.8", "build": "2026-06-18-v1.23.8", "date": "2026-06-18", "changelog": "Ticket #384 punto 6 - Matrice RACI sulle policy. Nel dettaglio di ogni policy compare la sezione 'Matrice RACI': si assegnano i ruoli dell'organigramma alle responsabilita R (esegue), A (approva/risponde), C (consultato), I (informato). In bozza l'assegnazione e' libera; in fase di APPROVAZIONE sono ora obbligatori almeno un ruolo R e uno A (altrimenti l'approvazione viene bloccata con un messaggio che invita a completare la matrice). La A resta coerente con lo stato di approvazione gia' presente. Poggia sull'infrastruttura RACI esistente (org_roles + raci_assignments, object_type='procedure'), nessuna migrazione. Resta da rifinire help contestuale/traduzioni del nuovo pannello RACI."}
{"version": "1.23.9", "build": "2026-06-18-v1.23.9", "date": "2026-06-18", "changelog": "Ticket #384 - rifinitura help contestuale. Aggiunta alla guida della pagina Policy la sezione 'Matrice RACI sulla policy' (significato di R/A/C/I, regola di prodotto che richiede almeno una R e una A per approvare - non un obbligo normativo, ruoli definiti nell'Organigramma) e la sezione 'Collegamento con Misure e Requisiti' (Procedure e Policy unificate, link bidirezionali tra le due pagine). Completa la coda di polish del punto 6. I testi dinamici del pannello RACI seguono la convenzione italiana della pagina. Nessuna migrazione."}
+1 -1
View File
@@ -220,7 +220,7 @@
</script>
<script src="/js/common-bi.js?v=20260631"></script>
<script src="/js/i18n.js?v=20260631"></script>
<script src="/js/help.js?v=20260618p1"></script>
<script src="/js/help.js?v=20260618p2"></script>
<script>
if (!checkAuth()) throw new Error('Not authenticated');
loadSidebar();