[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.
This commit is contained in:
@@ -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).
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
## Punti di coordinamento da chiudere insieme (al collaudo)
|
## 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.
|
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**.
|
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à.
|
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à.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user