-- ============================================================================ -- Migration 045 — A4 Fase 4.5: Stakeholder estesi (GV.SC-02) -- ---------------------------------------------------------------------------- -- ADDITIVO: aggiunge la colonna suppliers.stakeholder_type per distinguere -- FORNITORI, CLIENTI e PARTNER. RIUSA la tabella suppliers esistente (NESSUNA -- nuova tabella, NESSUNA duplicazione del modulo Supply Chain): la pagina -- "Stakeholder" e' solo una vista di sintesi raggruppata per tipo. -- -- Ancoraggio normativo (docs/DESIGN_A4_RELATIONAL.md): -- - GV.SC-02 (NIST CSF 2.0): ruoli e responsabilita per fornitori, CLIENTI e -- PARTNER stabiliti, comunicati e coordinati internamente ed esternamente. -- - GV.SC-04/05/07: catalogazione, requisiti contrattuali e revisione periodica -- degli stakeholder della supply chain. -- - Gli OBBLIGHI fanno capo al D.Lgs. 138/2024 (governance art. 23, rischio -- art. 24): NON alla Direttiva. La tassonomia degli stakeholder e' buona prassi. -- -- Multi-tenancy: suppliers.organization_id resta il discriminante tenant. L'indice -- (organization_id, stakeholder_type) supporta la mappa raggruppata per tipo. -- -- IDEMPOTENZA / RUNNER: -- MySQL 8 Ubuntu NON supporta "ADD COLUMN IF NOT EXISTS". Questo file contiene -- SOLO statement nudi (niente DELIMITER, niente stored procedure, nessun ';' -- dentro i commenti) ed e' percio' RUNNER-SAFE: scripts/migrate-a4.php esegue un -- pre-check su information_schema PRIMA di questa ALTER (stesso pattern di -- mig.040_onboarding_classification.sql) e la salta se colonna/indice esistono -- gia'. Eseguire SEMPRE tramite il runner: -- docker exec nis2-app php /var/www/nis2-agile/scripts/migrate-a4.php -- NB: NON applicare questo file con un client che fa "split su ';'" SENZA il -- pre-check del runner, altrimenti una seconda esecuzione fallirebbe (colonna -- duplicata). Il runner garantisce l'idempotenza. -- ============================================================================ ALTER TABLE suppliers ADD COLUMN stakeholder_type ENUM('supplier','customer','partner') NOT NULL DEFAULT 'supplier' COMMENT 'GV.SC-02: tipo di stakeholder (fornitore/cliente/partner)' AFTER name; ALTER TABLE suppliers ADD INDEX idx_suppliers_stakeholder (organization_id, stakeholder_type); -- ROLLBACK (manuale): -- ALTER TABLE suppliers DROP INDEX idx_suppliers_stakeholder -- ALTER TABLE suppliers DROP COLUMN stakeholder_type