[CLIENT] Nuova Agile: allineati i riferimenti incrociati post-consolidamento
Dopo la fusione 36->12, corretti i rinvii nei 12 documenti pubblicati: 'Politica per la Sicurezza delle Informazioni' -> 'Politica Generale...'; rinvii a 'Procedura di Controllo dei Documenti' -> 'Procedura di Governance del SGSI'; rinvio all'Istruzione Hardening (assorbita) -> regole di hardening nella Politica Uso Accettabile/Dispositivi/Remoto; riscritta la sez.8 'Struttura documentale' del Manuale sui 12 documenti. Aggiornati anche gli snapshot v2.0. Auto-referenze interne (minuscole) lasciate invariate. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
c05520c7da
commit
27bbed3ec9
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
/**
|
||||
* build_nuova_agile_p9_crossrefs.php — Allinea i riferimenti incrociati nei 12 documenti consolidati
|
||||
* (dopo il consolidamento 36->12). Aggiorna body_html + lo snapshot v2.0. IDEMPOTENTE.
|
||||
*/
|
||||
if (PHP_SAPI !== 'cli') { http_response_code(403); exit("CLI only\n"); }
|
||||
require_once __DIR__ . '/../config/env.php';
|
||||
require_once __DIR__ . '/../config/database.php';
|
||||
$pdo = Database::getInstance();
|
||||
$NOW='2026-06-20 16:30:00'; $modelId=3;
|
||||
|
||||
$manSec8Old = '/La documentazione è organizzata su livelli gerarchici:.*?qui esposti\./su';
|
||||
$manSec8New = 'La documentazione segue un approccio lean ed è organizzata su pochi livelli: (1) Manuale SGSI e Politica Generale per la Sicurezza delle Informazioni; '
|
||||
.'(2) cinque politiche tematiche consolidate — Controllo degli accessi, Crittografia e gestione delle chiavi, Uso accettabile/dispositivi/lavoro da remoto, '
|
||||
.'Sicurezza del cloud e protezione dei dati, Gestione dei fornitori; (3) cinque procedure operative consolidate — Gestione del rischio, Gestione degli incidenti e '
|
||||
.'notifica NIS2, Continuità/backup/ripristino, Gestione operativa e sviluppo sicuro, Governance del SGSI; (4) registrazioni ed evidenze raccolte automaticamente '
|
||||
.'dalla piattaforma. In totale 12 documenti vivi, soggetti a controllo di versione, approvazione e revisione periodica (A.5.37); le versioni precedenti restano '
|
||||
.'archiviate per tracciabilità.';
|
||||
|
||||
function fix(string $b): array {
|
||||
$log=[];
|
||||
$b2=str_replace('Politica per la Sicurezza delle Informazioni','Politica Generale per la Sicurezza delle Informazioni',$b,$c1);
|
||||
if($c1){$b=$b2;$log[]="rinomina Politica Generale ($c1)";}
|
||||
$b2=str_replace('Procedura di Controllo dei Documenti','Procedura di Governance del SGSI',$b,$c2);
|
||||
if($c2){$b=$b2;$log[]="rinvio->Governance del SGSI ($c2)";}
|
||||
$b2=preg_replace('/l[\x{2019}\x{0027}]Istruzione Hardening/u','le regole di hardening della Politica di Uso Accettabile, Dispositivi e Lavoro da Remoto',$b,-1,$c3);
|
||||
if($c3){$b=$b2;$log[]="istruzione hardening assorbita ($c3)";}
|
||||
return [$b,$log];
|
||||
}
|
||||
|
||||
$docs=$pdo->query("SELECT id,title,body_html FROM isms_documents WHERE isms_model_id=$modelId AND status='published' ORDER BY id")->fetchAll(PDO::FETCH_ASSOC);
|
||||
$tot=0;
|
||||
foreach($docs as $d){
|
||||
[$nb,$log]=fix($d['body_html']);
|
||||
// sezione 8 del Manuale
|
||||
if(strpos($d['title'],'approccio agile')!==false){
|
||||
$nb2=preg_replace($manSec8Old,$manSec8New,$nb,-1,$cm);
|
||||
if($cm){$nb=$nb2;$log[]="Manuale sez.8 struttura documentale ($cm)";}
|
||||
}
|
||||
if($nb!==$d['body_html']){
|
||||
$st=$pdo->prepare("UPDATE isms_documents SET body_html=?, updated_at=? WHERE id=?"); $st->execute([$nb,$NOW,$d['id']]);
|
||||
// aggiorna lo snapshot v2.0 più recente
|
||||
$v=$pdo->prepare("SELECT id FROM isms_document_versions WHERE document_id=? AND version='2.0' ORDER BY id DESC LIMIT 1"); $v->execute([$d['id']]); $vid=$v->fetchColumn();
|
||||
if($vid){ $u=$pdo->prepare("UPDATE isms_document_versions SET body_html=? WHERE id=?"); $u->execute([$nb,$vid]); }
|
||||
echo " ~ {$d['title']}: ".implode(', ',$log)."\n"; $tot++;
|
||||
}
|
||||
}
|
||||
echo "DOCUMENTI corretti: $tot / ".count($docs)."\n";
|
||||
|
||||
/* verifica residui */
|
||||
$res=$pdo->query("SELECT COUNT(*) FROM isms_documents WHERE isms_model_id=$modelId AND status='published' AND (body_html LIKE '%Politica per la Sicurezza delle Informazioni%' OR body_html LIKE '%Procedura di Controllo dei Documenti%' OR body_html LIKE '%Istruzione Hardening%')")->fetchColumn();
|
||||
echo "Riferimenti obsoleti residui nei pubblicati: $res (atteso 0)\n";
|
||||
echo "FASE 9 (riferimenti incrociati) OK\n";
|
||||
Reference in New Issue
Block a user