Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
81 lines
6.5 KiB
Markdown
81 lines
6.5 KiB
Markdown
# Piano — «Guida a percorsi guidati» per NIS2 (dal metodo TRPG)
|
|
|
|
> Origine: handover cross-prodotto scritto da Cristiano in `trpg-agile/docs/HANDOVER_GUIDA_PERCORSI_CROSS_PRODOTTO.md`
|
|
> (commit 696ce18). **Regola: partire da lì, non da zero.** Questo doc mappa il metodo TRPG
|
|
> sulla base che NIS2 ha GIÀ e definisce cosa copiare, le trappole da non ripetere e le fasi.
|
|
> ⚠️ Il repo trpg-agile NON è montato in questo devenv: per copiare i file serve montarlo RO,
|
|
> incollarli, o accesso host; la Guida live è su `trpg.agile.software` (5 min di prova valgono più di ogni spiegazione).
|
|
|
|
## 1. Che cos'è il metodo (TRPG)
|
|
Una **Guida a percorsi guidati**: l'AI **naviga le schermate vere** dentro una **palestra di dati sintetici**,
|
|
**narra capitolo per capitolo** con **evidenziazioni** e **dati live**, e **ogni capitolo ha un pulsante per
|
|
chiedere all'assistente**. Non è un video né un testo: è il prodotto reale, guidato.
|
|
|
|
Componenti TRPG (ordine di studio dall'handover):
|
|
1. **La Guida live** (`trpg.agile.software`) — riferimento esperienziale.
|
|
2. `copilot-catalog/analisi-gpg.js` — **formato canonico dei contenuti**: card con `title/narr/explain/ask`, **bilingue IT/EN**.
|
|
3. `copilot-selectors/` — **registro selettori per vista** (es. `organizzazione.js`, costruito da zero).
|
|
4. `screen-formazione.html` + `copilot-mode.js` — **hub + player immersivo + motore postMessage** (commenti = trappole).
|
|
5. `sql/104` — **la palestra**: seed **idempotente** su **range ID riservato** + **reset config**.
|
|
6. `scripts/guida-e2e-browser.py` — **harness di test browser** (da copiare pari pari).
|
|
7. Le due **SEG di agosto** — storia vera dei bug con cause esatte.
|
|
|
|
## 2. Cosa NIS2 ha GIÀ (non ripartire da zero) — vedi memoria `project_demo_avatar`
|
|
| Componente TRPG | Equivalente NIS2 esistente | Stato |
|
|
|---|---|---|
|
|
| Guida/copilot runtime + postMessage | `public/js/demo-mode.js` + `demo-selectors.js` | Costruito, E2E PASS (headless) |
|
|
| Manifest capitoli/step | manifest 10 step ARIA (`public/demo/nis2-tour-2026.json`) + `DemoController::buildManifest` | Esiste |
|
|
| `copilot-selectors/` (registro per vista) | `docs/mappa-logica/*` (22 viste) + `docs/mappa-logica/SELETTORI_DEMO.md` (131 vis. + 89 azioni) | Mappato; ~132 id stabili da iniettare |
|
|
| `copilot-catalog/analisi-gpg.js` (contenuti title/narr/explain/ask IT/EN) | **DA CREARE** — sorgente naturale = `public/js/help.js` (testi già validati) + `TASSONOMIA_CORSO_NIS2` | **Gap principale** |
|
|
| `screen-formazione.html` (hub+player) | **DA CREARE** (oggi `guida.html`/`workflow.html` sono statici) | Gap |
|
|
| `sql/104` palestra + reset | org **996001** (RO) + **996002** (sandbox), range **996xxx**, `scripts/seed-demo-dataset.php` + `/api/demo/reset-dataset`, guard `applyDemoGuard` | Esiste e collaudato |
|
|
| `scripts/guida-e2e-browser.py` | harness headless chrome già usato per il tour 10 step | Pattern già in casa |
|
|
| Persona narrante | **ARIA_SUPPORT_NIS2** (id=4) live + sottodominio `nis2.dimostrazione.agile.software` | Esiste |
|
|
| Formazione con esame | `TASSONOMIA_CORSO_NIS2` (10 moduli/28 lezioni, esame soglia 80%) | Progettata |
|
|
|
|
**Conclusione:** a NIS2 mancano soprattutto **il catalogo contenuti canonico** (le card `title/narr/explain/ask` per vista) e **l'hub/player** `screen-formazione`. Palestra, selettori, guard, persona e harness ci sono già.
|
|
|
|
## 3. Le 3 trappole (le hanno già pagate) — applicate al dominio NIS2
|
|
1. **Palestra pulita — nessuna lezione salva dati.** Rischio reale in TRPG: una lezione corrompeva la config di
|
|
calcolo, un'altra registrava near-miss veri ad ogni run. Per NIS2:
|
|
- le lezioni girano in **sola lettura** su 996001 (guard `applyDemoGuard` già 403 sui verbi di scrittura) e in
|
|
**sandbox** solo su 996002; **nessuna** lezione tocca config/valutazioni reali;
|
|
- **i cleanup "demo" DEVONO ESCLUDERE il range 996xxx** — verificare `docs/sql/reset-demo.sql` (memoria: «NON usare
|
|
reset-demo.sql» sul dataset golden) e il reset del supervisore/cron.
|
|
2. **Verdetto di dominio prima di pubblicare.** Le card entrano **spente** e si **accendono solo dopo validazione dei
|
|
contenuti**. Per NIS2 il validatore è l'**agente `nis2-expert`** (e `iso-27001-expert` dove serve): ogni card
|
|
normativa passa il verdetto prima di `enabled:true`; sui nodi non ratificati si scrive **neutro** (nessuna
|
|
affermazione d'obbligo). Coerente con la regola prodotto «fonti certe» (`AIService::authoritativeSourcesBlock`).
|
|
3. **Test solo nel browser reale.** La "pagina bianca" di TRPG era invisibile ai test API. Per NIS2:
|
|
**harness E2E headless chrome con screenshot** (già in uso), il DOM dump al timing reale è la verità
|
|
(i falsi NOT_FOUND da virtual-time sono documentati nella memoria demo).
|
|
|
|
## 4. Formato card canonico da adottare (da `analisi-gpg.js`)
|
|
Per ogni capitolo/step di ogni vista:
|
|
```
|
|
{ key, view, selector, order,
|
|
title: { it, en },
|
|
narr: { it, en }, // cosa dice la guida mentre evidenzia
|
|
explain: { it, en }, // approfondimento
|
|
ask: { it, en }, // domanda suggerita all'assistente ARIA
|
|
enabled: false, // OFF finché nis2-expert non ratifica
|
|
sources: [...] } // fonti certe (nis2_sources) per i nodi normativi
|
|
```
|
|
Sorgente contenuti NIS2: **`help.js`** (già validato) + `TASSONOMIA_CORSO_NIS2` + `mappa-logica`.
|
|
|
|
## 5. Fasi (stima onesta dall'handover: ~1 giornata impianto, poi poche ore a percorso)
|
|
- **F0 — Studio base TRPG (blocca finché non ho accesso):** provare la Guida live + copiare
|
|
`analisi-gpg.js`, `copilot-selectors/`, `screen-formazione.html`, `copilot-mode.js`, `sql/104`, `guida-e2e-browser.py`.
|
|
*Serve: montare trpg-agile RO qui, oppure incolli i file, oppure chiave SSH host.*
|
|
- **F1 — Impianto (~1 giorno):** hub `formazione.html` + player + motore (adatta `demo-mode.js`), catalogo card vuoto,
|
|
reset palestra con guardia range 996xxx, harness E2E screenshot.
|
|
- **F2 — Primo percorso pilota (poche ore):** una vista (proposta: **Gestione Rischi**, appena rifatta) →
|
|
card `title/narr/explain/ask` IT/EN da `help.js`, **validazione nis2-expert**, accensione, E2E in browser.
|
|
- **F3 — Estensione percorso-per-percorso** + collegamento formazione/esame (soglia 80%) su sandbox 996002.
|
|
|
|
## 6. Cosa mi serve per riprendere la costruzione
|
|
1. **Accesso a trpg-agile** (mount RO nel devenv, oppure i file incollati, oppure chiave SSH host per leggerlo/vedere la Guida live).
|
|
2. Per il collaudo autenticato e il deploy-check: **chiave SSH temporanea** rigenerata (il push da devenv funziona già).
|
|
|
|
*Nota: questo piano è additivo e non tocca codice di produzione; è il ponte tra l'handover TRPG e gli asset NIS2 esistenti.*
|