
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
..
2026-05-29 13:28:57 +02:00
2026-03-10 11:27:19 +01:00
2026-03-10 09:40:27 +01:00
2026-03-07 14:07:10 +01:00
2026-05-31 17:14:24 +02:00
2026-02-17 18:08:43 +01:00
2026-02-17 17:50:18 +01:00
2026-02-18 08:34:37 +01:00
2026-02-20 12:01:33 +01:00
2026-05-31 08:51:30 +02:00
2026-05-31 16:42:08 +02:00
2026-03-09 08:17:53 +01:00
2026-05-31 14:56:10 +02:00
2026-05-29 13:18:35 +02:00
2026-05-31 16:13:21 +02:00
2026-05-31 11:12:03 +02:00
2026-05-29 15:42:00 +02:00
2026-05-29 15:42:00 +02:00
2026-05-31 17:40:20 +02:00
2026-05-31 16:16:53 +02:00
2026-05-31 16:40:57 +02:00
2026-03-10 12:00:26 +01:00
2026-05-29 13:18:35 +02:00
2026-05-31 16:16:53 +02:00
2026-05-29 15:42:00 +02:00
2026-05-29 15:42:00 +02:00
2026-03-07 16:05:49 +01:00
2026-05-31 16:42:08 +02:00
2026-03-07 17:11:25 +01:00
2026-02-20 12:25:52 +01:00
2026-03-09 15:31:07 +01:00
2026-03-10 15:26:23 +01:00
2026-05-31 08:51:30 +02:00
2026-05-29 13:18:35 +02:00
2026-05-31 14:56:10 +02:00
2026-05-29 15:42:00 +02:00
2026-05-29 13:28:57 +02:00
2026-02-17 19:49:57 +01:00
2026-03-10 15:26:23 +01:00
2026-03-17 15:16:00 +01:00
2026-03-10 10:51:48 +01:00
2026-03-17 15:32:02 +01:00
2026-05-30 10:19:01 +02:00
2026-05-31 17:42:23 +02:00
2026-05-31 14:40:03 +02:00
2026-03-09 10:03:14 +01:00
2026-02-20 11:17:04 +01:00
2026-05-31 16:40:57 +02:00
2026-05-31 16:40:57 +02:00
2026-03-09 07:54:15 +01:00