[FEAT] A2 migration 040: organizations += classificazione NIS2 (bilancio, autonomia, size-independent c.5, criteri c.9 b/c/d, mission, designation_basis, self_assessment preliminary) — applicata+verificata prod

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
DevEnv nis2-agile
2026-06-15 16:56:56 +02:00
co-authored by Claude Opus 4.8
parent 37071e1d77
commit b2f47c0a47
@@ -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.