From 64866be2ce8287229576c70dacc6da9da9cd2242 Mon Sep 17 00:00:00 2001 From: DevEnv nis2-agile Date: Mon, 15 Jun 2026 23:12:24 +0200 Subject: [PATCH] =?UTF-8?q?[DOCS]=20A4=20design:=20Fasi=204.4=20(scadenzia?= =?UTF-8?q?rio)=20e=204.5=20(stakeholder)=20segnate=20LIVE=20=E2=80=94=20A?= =?UTF-8?q?4=20COMPLETA=205/5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/DESIGN_A4_RELATIONAL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DESIGN_A4_RELATIONAL.md b/docs/DESIGN_A4_RELATIONAL.md index 405978a..8ab7844 100644 --- a/docs/DESIGN_A4_RELATIONAL.md +++ b/docs/DESIGN_A4_RELATIONAL.md @@ -3,7 +3,7 @@ > Stato: **IN CORSO**. Contesto: segnalazioni Simon Fattori, punti **2, 3, 4, 5, 6, 7** (accolti in A4). Data: 2026-06-15. > È l'epic più grande → da realizzare a **FASI**. Ancoraggio normativo verificato (Det. ACN 164179/2025 + D.Lgs. 138/2024). Vedi `reference-dlgs-articles`, `DESIGN_A2_ONBOARDING.md`. > -> **AVANZAMENTO**: ✅ **4.1 Organigramma** (`041_org_roles.sql`, `OrgRoleController`, `organigramma.html`) — LIVE. ✅ **4.2 Competenze** (`042_competences.sql`: `skills`/`role_skills`/`user_skills`/`skill_course_map`; `CompetenceController`; `competenze.html`) — LIVE. ✅ **4.3 Matrice RACI** (`043_raci.sql`: `raci_assignments` + `procedure_inventory`/`procedure_risk`/`inventory_risk`/`risk_measure`; `RaciController`; `raci.html`+`raci.js`; object_id polimorfico anti-IDOR app-layer) — LIVE (commit `b4d47d5`). ⏳ 4.4 scadenziario · 4.5 stakeholder. +> **AVANZAMENTO**: ✅ **4.1 Organigramma** (`041_org_roles.sql`, `OrgRoleController`, `organigramma.html`) — LIVE. ✅ **4.2 Competenze** (`042_competences.sql`: `skills`/`role_skills`/`user_skills`/`skill_course_map`; `CompetenceController`; `competenze.html`) — LIVE. ✅ **4.3 Matrice RACI** (`043_raci.sql`: `raci_assignments` + `procedure_inventory`/`procedure_risk`/`inventory_risk`/`risk_measure`; `RaciController`; `raci.html`+`raci.js`; object_id polimorfico anti-IDOR app-layer) — LIVE (commit `b4d47d5`). ✅ **4.4 Scadenziario** (`044_review_schedule.sql`; `ReviewScheduleController` list/complete/sync; `review-schedule.html`) — LIVE. ✅ **4.5 Stakeholder estesi** (`045_stakeholders.sql` suppliers.stakeholder_type; `SupplyChainController::stakeholderMap`; `stakeholders.html`) — LIVE (commit `c5b00cc`). **🎉 A4 COMPLETA (5/5).** > > 🔴 **RETTIFICA NOMI REALI (verificata sul codice)**: questo design parlava di una tabella **`corrective_actions`** che **NON ESISTE**. La tabella delle azioni reale è **`capa_actions`** (mig.004), **figlia obbligatoria** di **`non_conformities`** (NCR) via `ncr_id NOT NULL`, e **non ha** una colonna `source_type`. L'alert "gap → azione" (impl. in 4.2) quindi **NON** crea `corrective_actions`/`source_type`: crea una **`non_conformities`** ancorata al gap (`source='management_review'`, `source_entity_type='competence_gap'`, `source_entity_id=role_skills.id`) + una **`capa_actions`** figlia. Le menzioni di `corrective_actions`/`source_type` qui sotto vanno lette in questo senso.