[DOCS] Contesto sessione 2026-06-16 (sera): Epic C COMPLETO — C5 Stakeholder LIVE (C5.1+C5.2+hardening, v1.21.1)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
b917d2da14
commit
f065d70dda
@@ -2,6 +2,32 @@
|
|||||||
|
|
||||||
> Il 2026-05-29 ci sono state DUE sessioni: **pomeriggio** e **mattina** (TRPG). Il 2026-05-30 sessione lunga: gap competitivi P1/P2/P3 + connettori + review multi-agente + fix.
|
> Il 2026-05-29 ci sono state DUE sessioni: **pomeriggio** e **mattina** (TRPG). Il 2026-05-30 sessione lunga: gap competitivi P1/P2/P3 + connettori + review multi-agente + fix.
|
||||||
|
|
||||||
|
## 2026-06-16 (sera) — 🟢 EPIC C COMPLETO: C5 Stakeholder LIVE (C5.1 + C5.2 + hardening) — commit `c782aa5`→`b917d2d`, v1.19.0→1.21.1
|
||||||
|
|
||||||
|
Chiuso l'ultimo punto di Simon. Memoria: [[project-epic-c-simon]]. Tutto deployato in prod, smoke verde, committato+pushato (push diretto dal devenv).
|
||||||
|
|
||||||
|
### C5.1 — Registro Stakeholder + matrice di Mendelow ✅ (commit `c782aa5`, mig.051, v1.19.0)
|
||||||
|
- **Decisione di design (si discosta dall'handoff)**: tabella **dedicata `stakeholders`** (NON colonna su `suppliers`): gli stakeholder interni non sono fornitori. Interni→`org_roles`; esterni→link opzionale a `suppliers` (no duplicazione).
|
||||||
|
- Config: `cfg_stakeholder_types` (30 Stak.01-30 + org-added da Stak.31, code=PK) + `cfg_stakeholder_quadrants` (4, **Q4 potere 0-2** = refuso corretto) + m2m `stakeholder_procedures`. `StakeholderController` (slug `stakeholders`); quadrante calcolato a read-time; anti-IDOR completo. `stakeholders.html` = registro + **matrice Mendelow SVG dependency-free**. 🐛 voce "Stakeholder" mancava in `common-bi.js` (sidebar V2) → aggiunta.
|
||||||
|
|
||||||
|
### C5.2 — Attività, questionari, calendario, portale esterno ✅
|
||||||
|
- **Decisioni utente**: portale esterno self-service ORA (magic-link, email off) + modello template dedicato leggero.
|
||||||
|
- **C5.2a** (`a5ff29e`, mig.052, v1.20.0): questionari tipo (`stk_questionnaire_templates`, kind questionnaire/read_ack) + m2m a procedure/misure/requisiti; `stk_activities`+`stk_activity_targets`+`stk_activity_procedures`; assegnazione by_code/individuale; calendario via **review_schedule esteso** (ENUM += 'stakeholder_activity'). `StakeholderActivityController` (slug `stakeholder-activities`); `stakeholder-activities.html`.
|
||||||
|
- **C5.2b** (`4f386fa`, mig.053, v1.21.0): **portale esterno** `StakeholderPortalController` (slug `stakeholder-portal`, **non-JWT, token magic-link**): access/respond/acknowledge/comment/attachment; `stk_activity_responses`+`stk_activity_comments`; allegati su `evidence_files`. `stk-portal.html` pubblica. Sotto-dashboard feedback nel dettaglio attività.
|
||||||
|
|
||||||
|
### Verifica finale + hardening ✅ (commit `b917d2d`, mig.054, v1.21.1)
|
||||||
|
- **Flotta di verifica** (Workflow, **40 agenti**, 4 dimensioni + verifica avversariale a 2 lenti): 18 finding (5 major/9 minor/4 info), tutti corretti.
|
||||||
|
- Fix principali: **XSS allegati chiuso** (blocklist→**ALLOWLIST** estensioni, no html/svg/js same-origin) + nome file random; **scadenza magic-link** (`token_expires_at`, 410) + rate-limit portale + guard scritture su attività chiuse; **send() non azzera i destinatari già responded/acknowledged**; assign individuale "replace"; update conserva assign_mode; editor opzioni domande a scelta; etichette stato i18n; risposte inline (no alert); ARIA; escAttr portale; voce sidebar in common.js.
|
||||||
|
- KB SYSTEM ingerita (uuid `2c7ec47b`). Cache-buster `?v=20260629`, SW `nis2-shell-v1.21.1`.
|
||||||
|
|
||||||
|
### 🐛 OPEN ITEM (ambientale, NON regressione C5)
|
||||||
|
- **Upload allegati → `UPLOAD_ERROR` in prod**: `move_uploaded_file`/`is_uploaded_file` fallisce nella topologia proxy→fastcgi. **Stesso problema dell'upload `evidence_files`/`AuditController`** (la dir `public/uploads/evidence` non è mai stata creata = mai funzionato). `rename`/`copy` come www-data funzionano. Da investigare lato infra (php-fpm/proxy upload). Il resto di C5 (questionari, firma-lettura, commenti, calendario, portale, registro, matrice) è pienamente operativo.
|
||||||
|
- 92 vs 87 requisiti importanti (file Simon vs All.1): da riconciliare con Simon. Determinazione 333017/2025: data esatta da verificare. E2E browser di C1–C5 da far esercitare ai tester.
|
||||||
|
|
||||||
|
**Prossima migrazione = 055.**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 2026-06-16 — 🟢 EPIC C (segnalazioni Simon C1–C5): C1, C2, C3, C4 LIVE — commit `d370479`→`30f4614`, v1.18.0→1.18.4
|
## 2026-06-16 — 🟢 EPIC C (segnalazioni Simon C1–C5): C1, C2, C3, C4 LIVE — commit `d370479`→`30f4614`, v1.18.0→1.18.4
|
||||||
|
|
||||||
Direttive vincolanti di **Simon Fattori** (C1–C5), validate con l'agente `nis2-expert`. File sorgente autoritativi in **`docs/simon/`** (`C1_Misure_Requisiti.xlsx`, `C1_Vista_MisureRequisiti.xlsx`, `C5_EleStakeH.xlsx`). 🔑 **Direttiva architetturale utente**: tutto **data-driven via tabelle di configurazione** (niente JSON hardcoded). Memoria: [[project-epic-c-simon]].
|
Direttive vincolanti di **Simon Fattori** (C1–C5), validate con l'agente `nis2-expert`. File sorgente autoritativi in **`docs/simon/`** (`C1_Misure_Requisiti.xlsx`, `C1_Vista_MisureRequisiti.xlsx`, `C5_EleStakeH.xlsx`). 🔑 **Direttiva architetturale utente**: tutto **data-driven via tabelle di configurazione** (niente JSON hardcoded). Memoria: [[project-epic-c-simon]].
|
||||||
|
|||||||
Reference in New Issue
Block a user