-- ═══════════════════════════════════════════════════════════════════════════ -- NIS2 Agile — Migration 056: Riesame di Direzione (ISO 27001 §9.3) -- ---------------------------------------------------------------------------- -- Modulo B del design docs/DESIGN_AUDIT_INTERNI_RIESAME_DIREZIONE.md. -- Produce il VERBALE del riesame periodico del SGSI con INPUT aggregati dai -- moduli esistenti (snapshot congelato all'approvazione) e OUTPUT = decisioni. -- -- RUNNER-SAFE: SOLO CREATE TABLE IF NOT EXISTS con TUTTE le FK inline. -- Niente ALTER ADD CONSTRAINT, niente DELIMITER o stored-proc, niente -- separatori statement nei commenti. Idempotente (re-eseguibile). Charset utf8mb4. -- Applicare con il seeder CLI application/cli/seed_management_reviews.php -- (stessa connessione PDO dell'app — vedi nota mig.052/053). -- ═══════════════════════════════════════════════════════════════════════════ CREATE TABLE IF NOT EXISTS management_reviews ( id INT NOT NULL AUTO_INCREMENT, organization_id INT NOT NULL, code VARCHAR(20) NULL, review_date DATE NULL, period_label VARCHAR(100) NULL, chair_user_id INT NULL, attendees JSON NULL, status ENUM('draft','approved') NOT NULL DEFAULT 'draft', approved_by INT NULL, approved_at DATETIME NULL, snapshot JSON NULL, conclusions TEXT NULL, created_by INT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_mgr_org (organization_id), CONSTRAINT fk_mgr_org FOREIGN KEY (organization_id) REFERENCES organizations (id) ON DELETE CASCADE, CONSTRAINT fk_mgr_chair FOREIGN KEY (chair_user_id) REFERENCES users (id) ON DELETE SET NULL, CONSTRAINT fk_mgr_approved FOREIGN KEY (approved_by) REFERENCES users (id) ON DELETE SET NULL, CONSTRAINT fk_mgr_creator FOREIGN KEY (created_by) REFERENCES users (id) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS management_review_decisions ( id INT NOT NULL AUTO_INCREMENT, review_id INT NOT NULL, decision TEXT NOT NULL, owner_role_id INT NULL, due_date DATE NULL, status ENUM('open','in_progress','done') NOT NULL DEFAULT 'open', capa_id INT NULL, ord INT NOT NULL DEFAULT 0, PRIMARY KEY (id), KEY idx_mrd_review (review_id), CONSTRAINT fk_mrd_review FOREIGN KEY (review_id) REFERENCES management_reviews (id) ON DELETE CASCADE, CONSTRAINT fk_mrd_owner FOREIGN KEY (owner_role_id) REFERENCES org_roles (id) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;