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 @@
-
+