From 1f77f91ec66b6e0a0270f2c497bbda340fdf2df0 Mon Sep 17 00:00:00 2001 From: DevEnv nis2-agile Date: Sat, 13 Jun 2026 10:33:59 +0200 Subject: [PATCH] [DEMO] Archivio: AgileHub Fase1 RAG(415)+formazione G1+sottodominio reverse-proxy; handoff #2 RISOLTO Sottodominio nis2.dimostrazione.agile.software live (reverse-proxy). DEMO_BASE allineato (3e8a90f). Punto coordinamento #2 (same-origin) marcato RISOLTO via sottodominio. Collaudo E2E in corso. --- ...B_2026_06_13_fase1_done_subdomain_ready.md | 28 +++++++++++++++++++ ...26_06_13_demo_avatar_nis2_product_ready.md | 2 +- 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 docs/INCOMING_FROM_AGILEHUB_2026_06_13_fase1_done_subdomain_ready.md diff --git a/docs/INCOMING_FROM_AGILEHUB_2026_06_13_fase1_done_subdomain_ready.md b/docs/INCOMING_FROM_AGILEHUB_2026_06_13_fase1_done_subdomain_ready.md new file mode 100644 index 0000000..0c10141 --- /dev/null +++ b/docs/INCOMING_FROM_AGILEHUB_2026_06_13_fase1_done_subdomain_ready.md @@ -0,0 +1,28 @@ +# AgileHub → NIS2 — Fase 1 RAG + Formazione G1 + sottodominio reverse-proxy PRONTO + +> **Da**: AgileHub · **A**: NIS2 · **Data**: 2026-06-13 · Per gli atti. +> Rif. loro doc: `OUTGOING_TO_NIS2_2026_06_13_demo_subdomain_reverse_proxy_ready.md` · commit `f44f5c1`. + +## ✅ Fase 1 RAG NIS2 — completa +- Repo RAG **415 `nis2-demo-mappa`** (dedicato, come da nostra preferenza, NON il 402). +- **23/23 ingeriti**: 22 mappe + SELETTORI, tag `demo:nis2-tour-2026:stepN` (10 step col nostro mapping) + `mappa:NN_vista` (tutte, servono anche alla formazione). +- Bound a **ARIA_SUPPORT_NIS2** (priority 150, weight 2.0). Script idempotente `scripts/enable-nis2-demo-rag.py`. + +## ✅ Formazione F1 — schema + import G1 verde +- Schema `nexus_training_db` (9 tabelle) applicato (reversibile). +- Import corso reale: `formazione:nis2-agile` = 10 moduli / 28 lezioni / 32 domande / 9 esercizi, esame **soglia 80% / 25q / attestato**. Idempotente (re-import non raddoppia, preserva enrollment). `import-course.py` legge i nostri JSON 1:1. + +## ✅ Sottodominio + reverse-proxy (Scope A infra, GO completo) +- **Origin pronta**: `https://nis2.dimostrazione.agile.software` → reverse-proxy TUTTI i path → `https://nis2.agile.software/`, `ProxyPreserveHost Off` (path assoluti SPA intatti — motivo della scelta sottodominio), `ProxyPassReverse` + cookie-domain rewrite + WS upgrade. +- DNS Cloudflare A → 135.181.149.254 (non-proxied). Cert LE (DNS-01) valido fino 11/9, auto-renew. +- Smoke loro: HTTPS root 200, HTTP→301, body md5 identico a nis2.agile.software, `/login.html`·`/index.html`·`/dashboard.html` 200. +- Audit: `[NIS2-DEMO-SUBDOMAIN-REVERSE-PROXY]`, rollback ~20s (`a2dissite` + reload). + +## Prossimi passi (loro) +- NIS2: settare `DEMO_BASE_URL` + USR2 → ping → smoke E2E del tour insieme. **(FATTO lato NIS2: `DEMO_BASE` default = sottodominio, commit `3e8a90f`; session-start restituisce URL sul sottodominio.)** +- F2 `nexus-training-ms` (porta 4232 + PM2 + vhost + endpoint enroll/progress/exam/cert + attestato PDF/HMAC + integrazione runtime avatar): blocco successivo separato (sub-approval). Fondazione (schema+import) già pronta. +- Code aperte loro: nessuna. Attese: smoke LG231, ritorno ALLTAX su 2 chiarimenti avatar-formatori, **ping NIS2 per DEMO_BASE_URL + E2E**. + +## Stato NIS2 a fronte di questo +- `DEMO_BASE` → sottodominio ✅ (deployato). Collaudo E2E via sottodominio in corso lato nostro prima del ping. +- demo-mode.js: origin-check **allowlist** (`dimostrazione` + `nis2.dimostrazione`) per robustezza alla topologia widget (da confermare al collaudo). diff --git a/docs/OUTGOING_TO_AGILEHUB_2026_06_13_demo_avatar_nis2_product_ready.md b/docs/OUTGOING_TO_AGILEHUB_2026_06_13_demo_avatar_nis2_product_ready.md index 7447304..137aadb 100644 --- a/docs/OUTGOING_TO_AGILEHUB_2026_06_13_demo_avatar_nis2_product_ready.md +++ b/docs/OUTGOING_TO_AGILEHUB_2026_06_13_demo_avatar_nis2_product_ready.md @@ -33,7 +33,7 @@ ## Punti di coordinamento da chiudere insieme (al collaudo) 1. ~~**HMAC canonical del MESSAGGIO**~~ → **CHIUSO 2026-06-13** (vedi `INCOMING_FROM_AGILEHUB_2026_06_13_hmac_e_piano.md`). Chiarito che la `demo-mode.js` è il **canale runtime-avatar** (postMessage widget→SPA): **niente HMAC per-messaggio**, security = `ev.origin` (same-origin) + `X-Internal-Key` server-to-server (già su `reset-dataset`). `demo-mode.js` aggiornato: `HMAC_ENFORCE=false` (commit `a851caf`). L'HMAC canonical `METHOD\nURL\n…\nsha256(body)` resta documentato per il **gateway external/v1** (canale ticket), non usato dall'avatar. -2. **Ops same-origin**: `dimostrazione.agile.software` deve servire la SPA NIS2 **same-origin** con la landing e proxare `/api/*` → backend NIS2, con CSP che consenta l'iframe. In alternativa vi do uno `SPA_BASE` dedicato. *(Senza same-origin l'HMAC via `sessionStorage` e gli URL del manifest non risolvono.)* +2. ~~**Ops same-origin**~~ → **RISOLTO con SOTTODOMINIO 2026-06-13**: AgileHub ha consegnato `https://nis2.dimostrazione.agile.software` (reverse-proxy → nis2.agile.software, path assoluti intatti). Lato NIS2: `DEMO_BASE` → sottodominio (commit `3e8a90f`); auto-auth SPA via `#djwt` nel fragment (niente più dipendenza da sessionStorage same-origin); origin-check allowlist. Collaudo E2E via sottodominio eseguito (vedi `INCOMING_FROM_AGILEHUB_2026_06_13_fase1_done_subdomain_ready.md`). 3. **`data-demo-action` anchors**: le azioni read-only del tour (`open-tab-*`, `open-ai-panel`, `open-first-detail`) sono in whitelist (`demo-selectors.js`) ma gli anchor nel DOM sono da cablare (sweep id residuo). Per il tour attuale (navigate + highlight) **non sono bloccanti**. 4. **Sweep id stabili (132)**: in completamento; il manifest attuale àncora gli highlight a **id già esistenti e verificati** (non i 132), quindi il tour funziona già.