From 7b8a604739ebb8c53d83d2034bd0d797e5720008 Mon Sep 17 00:00:00 2001 From: DevEnv nis2-agile Date: Sat, 20 Jun 2026 14:40:28 +0200 Subject: [PATCH] [DOCS+KB] Gestione documentale: help (Permessi documentali) + i18n matrice IT/EN + ingest KB AI (v1.24.3) - help.js: sezione 'Permessi documentali (ciclo di vita SGSI)' nel help Impostazioni - settings.html: matrice permessi bilingue IT/EN (azioni/ruoli/hint) + cache-buster help.js - KB AI: docs/kb/GESTIONE_DOCUMENTALE_SGSI.md + application/cli/ingest_doc_management_kb.php (ingerito in nis2_kb scope SYSTEM, ricercabilita verificata) Co-Authored-By: Claude Opus 4.8 (1M context) --- application/cli/ingest_doc_management_kb.php | 95 ++++++++++++++++++++ docs/kb/GESTIONE_DOCUMENTALE_SGSI.md | 28 ++++++ public/js/help.js | 9 ++ public/settings.html | 23 +++-- public/version.json | 2 +- 5 files changed, 149 insertions(+), 8 deletions(-) create mode 100644 application/cli/ingest_doc_management_kb.php create mode 100644 docs/kb/GESTIONE_DOCUMENTALE_SGSI.md diff --git a/application/cli/ingest_doc_management_kb.php b/application/cli/ingest_doc_management_kb.php new file mode 100644 index 0000000..1396576 --- /dev/null +++ b/application/cli/ingest_doc_management_kb.php @@ -0,0 +1,95 @@ +=$len) break; $s+=($size-$ov);} return $c; } + +$SOURCE = 'Documentazione prodotto NIS2 Agile — Gestione documentale SGSI'; +$TITLE = 'Gestione documentale SGSI (ciclo di vita, Word, editor, permessi)'; + +$TEXT = <<<'TXT' +DOCUMENTO: Gestione documentale del Modello SGSI in NIS2 Agile (ciclo di vita, export Word, editor, permessi). +USO: aiutare l'utente a gestire i documenti del Sistema di Gestione (Manuale, politiche, procedure, istruzioni operative). +NOTA: descrive funzioni dell'interfaccia; non e' contenuto normativo. ISO 27001/27017/27018 sono buone prassi; gli obblighi in Italia derivano da NIS2 / D.Lgs. 138/2024 / Determinazioni ACN. + +# Gestione documentale del Modello SGSI (Modello SGSI > Documenti) +I documenti del Modello SGSI (ISO 27001) — Manuale SGSI, politiche, procedure e istruzioni operative — si trovano nel modulo "Modello SGSI (ISO 27001)", passo 5 "Documenti". + +## Ciclo di vita del documento (ISO/IEC 27001 cl. 7.5) +Ogni documento attraversa gli stati: Bozza -> In revisione -> Approvato -> Pubblicato -> Archiviato. Lo stato e' mostrato con un badge colorato. +- "Invia in revisione": da Bozza a In revisione. +- "Approva": da In revisione ad Approvato (registra chi approva e quando). +- "Pubblica": da Approvato a Pubblicato — il documento entra in vigore; vengono impostate la data di entrata in vigore e la prossima data di riesame (a 1 anno). +- "Rimanda in bozza": riporta un documento in revisione alla Bozza, con una nota. +- "Archivia": ritira un documento pubblicato. +- "Nuova versione": riapre un documento pubblicato come nuova Bozza con numero di versione incrementato; la versione precedente resta nello storico. +Ad ogni pubblicazione viene salvato uno snapshot di versione, consultabile con il pulsante "Storico". + +## Scaricare in Word +- Pulsante "Word" su un documento: scarica quel singolo documento in formato .doc, modificabile in Word o LibreOffice (mantiene titoli, elenchi e tabelle). +- Pulsante "Scarica tutto (Word)": scarica l'intero set documentale in un unico file Word, con copertina e indice. +- Pulsante "Apri": mostra il documento in una nuova scheda del browser. + +## Modificare il contenuto +Il pulsante "Modifica" apre un editor con barra strumenti (grassetto, corsivo, titoli, elenchi) e una modalita' HTML. La modifica e' consentita solo sui documenti in stato Bozza o In revisione. Per modificare un documento gia' Pubblicato occorre prima creare una "Nuova versione". + +## Permessi documentali (chi puo' fare cosa) +I diritti sulle azioni del ciclo di vita sono configurabili per RUOLO in "Impostazioni > Permessi documentali", tramite una matrice Ruolo x Azione (modifica contenuto, invia in revisione, approva, pubblica, rimanda in bozza, archivia, nuova versione). Vale per la singola organizzazione. Di default sono abilitati Amministratore, Responsabile SGSI/Compliance e Direzione; il super amministratore ha sempre tutti i permessi. La matrice e' visibile a tutti i membri, ma solo Amministratore e Direzione possono modificarla. +TXT; + +$text = preg_replace('/\n{3,}/', "\n\n", trim($TEXT)); +$chunks = chunkText($text, 2000, 200); +logln('=== Ingest "Gestione documentale SGSI" (scope SYSTEM) ==='); +logln(' testo: ' . strlen($text) . ' char -> ' . count($chunks) . ' chunk'); +if ($dryRun) { logln('DRY-RUN: nessun upsert.'); exit(0); } + +$embed = new EmbedService(); +$vector = new VectorService(); +$vector->ensureCollection($embed->dims); +try { + $vector->deleteByFilter(['must' => [ + ['key' => 'scope', 'match' => ['value' => 'SYSTEM']], + ['key' => 'source', 'match' => ['value' => $SOURCE]], + ]]); + logln(' rimossi eventuali chunk precedenti per questa fonte'); +} catch (Throwable $e) { logln(' (warning) delete: ' . $e->getMessage()); } + +$docUuid = uuid(); $points = []; +foreach ($chunks as $i => $chunk) { + $vec = null; + for ($try = 1; $try <= 5; $try++) { + try { $vec = $embed->embed($chunk); break; } + catch (Throwable $e) { if ($try === 5) { logln(" ERRORE embed chunk {$i}: " . $e->getMessage()); throw $e; } logln(" retry embed chunk {$i} (tentativo {$try})"); sleep($try); } + } + $points[] = ['id' => uuid(), 'vector' => $vec, 'payload' => [ + 'doc_uuid' => $docUuid, + 'title' => $TITLE . ($i > 0 ? ' (parte ' . ($i + 1) . ')' : ''), + 'chunk' => $chunk, + 'entity_type' => 'guida_prodotto', + 'source' => $SOURCE, + 'lang' => 'it', + 'scope' => 'SYSTEM', + 'consulting_firm_id' => null, + 'organization_id' => null, + 'shared_with_orgs' => [], + 'uploaded_by' => 0, + ]]; +} +foreach (array_chunk($points, 64) as $batch) { $vector->upsertBatch($batch); } +logln(' upsert OK: ' . count($points) . ' chunk SYSTEM (source="' . $SOURCE . '")'); +logln('=== FATTO ==='); diff --git a/docs/kb/GESTIONE_DOCUMENTALE_SGSI.md b/docs/kb/GESTIONE_DOCUMENTALE_SGSI.md new file mode 100644 index 0000000..d09111c --- /dev/null +++ b/docs/kb/GESTIONE_DOCUMENTALE_SGSI.md @@ -0,0 +1,28 @@ +DOCUMENTO: Gestione documentale del Modello SGSI in NIS2 Agile (ciclo di vita, export Word, editor, permessi). +USO: aiutare l'utente a gestire i documenti del Sistema di Gestione (Manuale, politiche, procedure, istruzioni operative). +NOTA: descrive funzioni dell'interfaccia; non e' contenuto normativo. ISO 27001/27017/27018 sono buone prassi; gli obblighi in Italia derivano da NIS2 / D.Lgs. 138/2024 / Determinazioni ACN. + +# Gestione documentale del Modello SGSI (Modello SGSI > Documenti) + +I documenti del Modello SGSI (ISO 27001) — Manuale SGSI, politiche, procedure e istruzioni operative — si trovano nel modulo "Modello SGSI (ISO 27001)", passo 5 "Documenti". + +## Ciclo di vita del documento (ISO/IEC 27001 cl. 7.5) +Ogni documento attraversa gli stati: Bozza -> In revisione -> Approvato -> Pubblicato -> Archiviato. Lo stato e' mostrato con un badge colorato. +- "Invia in revisione": da Bozza a In revisione. +- "Approva": da In revisione ad Approvato (registra chi approva e quando). +- "Pubblica": da Approvato a Pubblicato — il documento entra IN VIGORE; vengono impostate la data di entrata in vigore e la prossima data di riesame (a 1 anno). +- "Rimanda in bozza": riporta un documento in revisione alla Bozza, con una nota. +- "Archivia": ritira un documento pubblicato. +- "Nuova versione": riapre un documento pubblicato come nuova Bozza con numero di versione incrementato; la versione precedente resta nello storico. +Ad ogni pubblicazione viene salvato uno snapshot di versione, consultabile con il pulsante "Storico". + +## Scaricare in Word +- Pulsante "Word" su un documento: scarica quel singolo documento in formato .doc, modificabile in Word o LibreOffice (mantiene titoli, elenchi e tabelle). +- Pulsante "Scarica tutto (Word)": scarica l'INTERO set documentale in un unico file Word, con copertina e indice. +- Pulsante "Apri": mostra il documento in una nuova scheda del browser. + +## Modificare il contenuto +Il pulsante "Modifica" apre un editor con barra strumenti (grassetto, corsivo, titoli, elenchi) e una modalita' HTML. La modifica e' consentita solo sui documenti in stato Bozza o In revisione. Per modificare un documento gia' Pubblicato occorre prima creare una "Nuova versione" (cosi' la versione in vigore resta tracciata e immutata). + +## Permessi documentali (chi puo' fare cosa) +I diritti sulle azioni del ciclo di vita sono configurabili per RUOLO in "Impostazioni > Permessi documentali", tramite una matrice Ruolo x Azione (modifica contenuto, invia in revisione, approva, pubblica, rimanda in bozza, archivia, nuova versione). La configurazione vale per la singola organizzazione. Di default sono abilitati Amministratore, Responsabile SGSI/Compliance e Direzione; il super amministratore ha sempre tutti i permessi. La matrice e' visibile a tutti i membri (trasparenza), ma solo Amministratore e Direzione possono modificarla e salvarla. diff --git a/public/js/help.js b/public/js/help.js index 18f653a..56906ac 100644 --- a/public/js/help.js +++ b/public/js/help.js @@ -1032,6 +1032,15 @@ const HelpSystem = (function () { 'Il settore e la dimensione influenzano la classificazione NIS2.' ] }, + { + heading: 'Permessi documentali (ciclo di vita SGSI)', + items: [ + 'Nel tab Permessi documentali definisci, con una matrice Ruolo x Azione, quali ruoli possono compiere ogni passo del ciclo di vita dei documenti del Modello SGSI: modifica del contenuto, invio in revisione, approvazione, pubblicazione, rinvio in bozza, archiviazione, nuova versione.', + 'La configurazione vale per la singola organizzazione; di default sono abilitati Amministratore, Responsabile SGSI/Compliance e Direzione. Il super amministratore ha sempre tutti i permessi.', + 'La matrice è visibile a tutti i membri (trasparenza), ma solo Amministratore e Direzione possono modificarla e salvarla.', + 'Lascia sempre almeno un ruolo abilitato per le azioni critiche (Approva, Pubblica), altrimenti nessuno potrebbe far avanzare i documenti.' + ] + }, { heading: 'Classificazione NIS2', items: [ diff --git a/public/settings.html b/public/settings.html index a093d63..2c8d925 100644 --- a/public/settings.html +++ b/public/settings.html @@ -701,7 +701,7 @@ - +