From b2f47c0a47b28c9b45d784b8c3e6fc21e3b1fe8b Mon Sep 17 00:00:00 2001 From: DevEnv nis2-agile Date: Mon, 15 Jun 2026 16:56:56 +0200 Subject: [PATCH] =?UTF-8?q?[FEAT]=20A2=20migration=20040:=20organizations?= =?UTF-8?q?=20+=3D=20classificazione=20NIS2=20(bilancio,=20autonomia,=20si?= =?UTF-8?q?ze-independent=20c.5,=20criteri=20c.9=20b/c/d,=20mission,=20des?= =?UTF-8?q?ignation=5Fbasis,=20self=5Fassessment=20preliminary)=20?= =?UTF-8?q?=E2=80=94=20applicata+verificata=20prod?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/sql/040_onboarding_classification.sql | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 docs/sql/040_onboarding_classification.sql diff --git a/docs/sql/040_onboarding_classification.sql b/docs/sql/040_onboarding_classification.sql new file mode 100644 index 0000000..31c9e2f --- /dev/null +++ b/docs/sql/040_onboarding_classification.sql @@ -0,0 +1,22 @@ +-- Migration 040 — A2 Onboarding: classificazione NIS2 (autovalutazione preliminare) +-- Additiva su `organizations`. Applicata in modo IDEMPOTENTE (pre-check information_schema) +-- via runner PHP dentro nis2-app (MySQL non supporta ADD COLUMN IF NOT EXISTS standard). +-- Contesto: segnalazione Fattori A2. Design: docs/DESIGN_A2_ONBOARDING.md. +-- Riferimenti normativi: D.Lgs. 138/2024 art. 3 (c.2 dimensionale, c.5 size-independent, +-- c.9 lett. b/c/d criteri qualitativi, c.13 individuazione Autorita) — docs/nis2/Dlgs138_art3_ambito.md. + +ALTER TABLE organizations + ADD COLUMN total_balance_eur DECIMAL(15,2) NULL COMMENT 'Totale di bilancio (3o criterio dimensionale, Racc.2003/361/CE)', + ADD COLUMN is_autonomous TINYINT(1) NOT NULL DEFAULT 1 COMMENT 'Impresa autonoma? se 0 il calcolo dimensionale va consolidato (gruppo/collegate, art.6 Racc.2003/361/CE)', + ADD COLUMN size_independent_category ENUM('none','dns','tld','ixp','trust_qualified','trust_unqualified','ecomm_public_network','ecomm_public_service','domain_registrar','pa_central','pa_regional_local') NOT NULL DEFAULT 'none' COMMENT 'Categoria in ambito a prescindere dalla dimensione (art.3 c.5 D.Lgs.138/2024)', + ADD COLUMN crit_sole_supplier TINYINT(1) NULL COMMENT 'art.3 c.9 lett.b: unico fornitore nazionale servizio essenziale', + ADD COLUMN crit_public_impact TINYINT(1) NULL COMMENT 'art.3 c.9 lett.c: impatto su sicurezza/incolumita/salute pubblica', + ADD COLUMN crit_systemic_risk TINYINT(1) NULL COMMENT 'art.3 c.9 lett.d: rischio sistemico significativo', + ADD COLUMN mission TEXT NULL COMMENT 'Contesto organizzativo (input GV.OC / registro sistemi rilevanti)', + ADD COLUMN has_code_of_ethics TINYINT(1) NOT NULL DEFAULT 0 COMMENT 'Codice etico presente (facoltativo, best practice, NON obbligo NIS2)', + ADD COLUMN code_of_ethics_note VARCHAR(255) NULL COMMENT 'Nota/URL codice etico (facoltativo)', + ADD COLUMN designation_basis ENUM('dimensional','size_independent','sub_threshold_candidate','voluntary','out_of_scope') NULL COMMENT 'Base dell autovalutazione preliminare', + ADD COLUMN self_assessment_status ENUM('preliminary','acn_confirmed') NOT NULL DEFAULT 'preliminary' COMMENT 'Esito = preliminare non vincolante finche non confermato da ACN (Det.333017/2025)'; + +-- entity_type ENUM('essential','important','not_applicable') INVARIATO (compatibilita). +-- voluntary_compliance INVARIATO.