Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
43 lines
2.4 KiB
SQL
43 lines
2.4 KiB
SQL
-- ============================================================================
|
|
-- 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
|