Files
nis2-agile/docs/sql/040_onboarding_classification.sql

23 lines
2.3 KiB
SQL

-- 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.