Files
nis2-agile/docs/sql/047_org_requisito_state.sql
T
DevEnv nis2-agileandClaude Opus 4.8 b34bf3f9f6 [FEAT] Epic C / C1 operativo — valutazione/stato di conformità per requisito (mig.047)
org_requisito_state (org x requisito -> stato + valutazione del rischio + note),
la valutazione 'parte vuota'. È da qui che emerge lo stato di conformità (sostituirà il Gap ACN, C3).
- FrameworkController: catalog ora include lo stato per-org di ogni requisito (risoluzione org
  OPZIONALE con verifica accesso = anti-IDOR); nuovo POST /framework/state (upsert, requireOrgRole
  org_admin/compliance_manager, validazione stato + requisito esistente).
- misure-requisiti.html: colonna Stato/Valutazione (se org) + modale di valutazione (stato,
  valutazione del rischio, note). api.frameworkSetState.
Smoke prod: catalog has_org/org_class OK; upsert non_conforme persistito e riletto; ISOLAMENTO
multi-tenant verificato (org 152 non visibile a org 151). Additivo.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 17:41:16 +02:00

31 lines
1.8 KiB
SQL

-- =====================================================================
-- 047 — Stato/valutazione per-org di ogni REQUISITO (Epic C / C1 operativo)
-- =====================================================================
-- Per ogni organizzazione e per ogni requisito del framework (cfg_nis2_requisiti)
-- conserva la VALUTAZIONE DEL RISCHIO (che "parte vuota") e lo STATO di conformita'.
-- È da qui che emerge lo stato di conformita' dell'azienda (sostituisce il modulo
-- "Analisi GAP ACN", C3). Org-scoped, additivo, reversibile (DROP TABLE).
--
-- Runner-safe: solo CREATE TABLE IF NOT EXISTS (no DELIMITER/stored-proc).
-- =====================================================================
CREATE TABLE IF NOT EXISTS org_requisito_state (
id INT NOT NULL AUTO_INCREMENT,
organization_id INT NOT NULL,
requisito_id INT NOT NULL,
stato ENUM('da_valutare','non_applicabile','non_conforme','parziale','conforme')
NOT NULL DEFAULT 'da_valutare',
valutazione_rischio TEXT NULL,
note TEXT NULL,
updated_by INT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE KEY uq_org_req (organization_id, requisito_id),
KEY idx_ors_org (organization_id),
KEY idx_ors_req (requisito_id),
CONSTRAINT fk_ors_org FOREIGN KEY (organization_id) REFERENCES organizations (id) ON DELETE CASCADE,
CONSTRAINT fk_ors_req FOREIGN KEY (requisito_id) REFERENCES cfg_nis2_requisiti (id) ON DELETE CASCADE,
CONSTRAINT fk_ors_user FOREIGN KEY (updated_by) REFERENCES users (id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;