3 Commits
Author SHA1 Message Date
DevEnv nis2-agileandClaude Opus 4.8 05a1436d8c [I18N] Modulo Fornitori bilingue IT/EN (#8b) — v1.24.5
- supplier-portal.html (portale esterno OTP): i18n self-contained (dizionario inline + toggle IT/EN, ~79 stringhe), flusso OTP/token/ID/API invariato; domande questionario restano dati (non tradotte).
- supply-chain.html (interno): i18n estesa (5->25 data-i18n + 97 I18n.t).
- i18n.js: +82 chiavi sp.* (38->120). Cache-buster i18n.js su supply-chain.html. node --check OK, pagine 200, parita IT/EN.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 10:32:18 +02:00
DevEnv nis2-agileandClaude Opus 4.8 36513fa722 [FEAT] PWA installabile Android/iOS conforme AGID (v1.15.0)
- manifest.webmanifest + service worker (offline shell, /api network-only, asset stale-while-revalidate)
- set icone (192/512 + maskable + apple-touch + favicon), generate zero-deps (pure Node+zlib)
- tag PWA + viewport viewport-fit=cover (zoom mantenuto, WCAG 1.4.4) in 77 pagine HTML
- AGID/WCAG 2.1 AA: touch target >=44px, orientamento/zoom liberi, safe-area standalone
- generatori riproducibili: scripts/gen-pwa-icons.mjs + scripts/inject-pwa-head.mjs
- bump version 1.14.1 -> 1.15.0

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 21:09:54 +02:00
DevEnv nis2-agileandClaude Opus 4.8 78dcb412ad [FEAT] Fase 3+4 frontend: supplier-portal.html (OTP/magic-link + compilazione)
Portale fornitore pubblico self-contained (CSS+JS inline, noindex):
- Auth: richiesta OTP (risposta opaca), verifica codice con errori specifici +
  countdown reinvio 60s, magic-link da ?magic= (consumo su click), sessione
  JWT supplier in sessionStorage (4h).
- Dashboard: 1 questionario aperto -> diretto, multi -> lista con badge scadenza.
- Compilazione (Fase 4): tutti i tipi domanda (yes_no_partial, single/multi_choice,
  scale_1_5 con etichette estremi, number, text, file) + "Non applicabile";
  progress bar, badge scadenza sticky, help_text + nis2_ref visibili.
- Autosave PATCH debounce 800ms + "bozza salvata"; salva bozza vs invia definitivo
  con conferma + validazione obbligatorie client.
- Ricevuta: conferma + score solo se show_score. Footer GDPR Art.28.
- a11y: input nativi, OTP autocomplete=one-time-code inputmode=numeric, target >=44px.

Inline JS validato (node --check). File statico -> live via nginx.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 17:42:23 +02:00