nis2-agile/docs/CONTEXT_LAST_SESSION.md
2026-03-10 12:04:01 +01:00

5.2 KiB

Contesto Ultima Sessione

Data: 2026-03-10 Durata: sessione lunga (continuazione da sessione precedente)


Cosa abbiamo fatto

1. Fix feedback.js — bottone FAB non visibile

  • common.js: aggiunto auto-inject di feedback.js su tutte le pagine autenticate
  • feedback.js: icona cambiata in fa-comment-medical, label testo "Segnala / Feedback"
  • style.css: FAB ridisegnato come pill cyan (#06B6D4) con animazione pulse, stile lg231
  • Commit: 4143dd3

2. Fix register.html — P.IVA e invite token

  • P.IVA: aggiunta validazione locale checksum IVA italiana (cifra di controllo)
  • Messaggio: se P.IVA valida → verde "✓ P.IVA valida" anche se CertiSource offline
  • Parametro URL: ora legge ?invite= (oltre a ?invite_token= e ?token=)
  • Placeholder campo invite aggiornato: inv_a1b2c3d4e5f6...
  • OnboardingController.php: lookup-piva con CertiSource fallisce → 404 graceful (non 500)
  • Commit: d603f35, 67560e1

3. Fix utente presidenza@agile.software

  • Email già esistente (cristiano.benassati@gmail.com, id=4) bloccava registrazione
  • Creato nuovo account: presidenza@agile.software / Silvia Garretto / org_admin (id=103)
  • Password resettata a: Presidenza2026!
  • Invite token inv_f25a41... (id=4) ancora pending (non usato — bisogna fare onboarding)

4. FEAT: invite con dati destinatario (pre-compilazione form)

  • InviteController.php: accetta recipient_first_name/last_name/email/vat, salva in metadata JSON
  • InviteController.php: show() parsa metadata e espone metadata_recipient
  • InviteController.php: invite_url ora punta a register.html?invite= (era onboarding.html)
  • AuthController.php validateInvite: ritorna recipient con dati del destinatario
  • register.html: dopo validazione invite, pre-compila nome/cognome/email/piva dal recipient
  • Commit: 7bb92b1

5. licenseExt.html — aggiornamento completo

  • Aggiunta sezione "Dati destinatario" con campi: Nome, Cognome, Email, P.IVA
  • generateLicense(): include recipient_* nel payload API
  • renderGenResult(): mostra link pronto da inviare + riga verde con dati destinatario
  • resetForm(): pulisce anche i campi recipient
  • showDetail(): mostra box verde con dati destinatario (metadata_recipient)
  • revokeInvite(): già funzionante via DELETE /api/invites/{id}
  • Commit: e02e0e2

File modificati in questa sessione

Backend

  • application/controllers/OnboardingController.php — lookup-piva: 500→404 graceful
  • application/controllers/InviteController.php — recipient data in metadata, invite_url fix, show() con metadata_recipient
  • application/controllers/AuthController.php — validateInvite ritorna recipient

Frontend

  • public/js/common.js — auto-inject feedback.js
  • public/js/feedback.js — icona + label pill button
  • public/css/style.css — FAB cyan pill con pulse animation
  • public/register.html — validazione P.IVA locale, ?invite= param, pre-fill da recipient
  • public/licenseExt.html — sezione dati destinatario, link pronto, modale aggiornato

Docs

  • docs/prompts/big-simulation-prompt.md — CREATO: prompt per simulate-nis2-big.php (10 aziende, 18 fasi, ✓200+)

Utenti demo attivi (dopo ultima simulazione)

Email Password Ruolo Org
admin@datacore-srl.demo NIS2Demo2026! org_admin DataCore S.r.l.
admin@medclinic-spa.demo NIS2Demo2026! org_admin MedClinic Italia S.p.A.
admin@enernet-srl.demo NIS2Demo2026! org_admin EnerNet Distribuzione S.r.l.
consultant@nis2agile.demo NIS2Demo2026! consultant tutte e 3
presidenza@agile.software Presidenza2026! org_admin nessuna org ancora

Problemi aperti / TODO

Urgenti

  • presidenza@agile.software: ha account ma nessuna org → deve fare onboarding su https://nis2.agile.software/onboarding.html
  • Invite token inv_f25a41... (id=4, label "Presidenza"): ancora pending, non applicato all'utente

Noti

  • POST /api/auth/validate-invite esiste ma non è nel router pubblico (solo via InviteController)
  • P.IVA lookup (CertiSource /api/company/enrich) risponde 404 — endpoint cambiato, da investigare
  • Rate limiter register: 3 tentativi/10min — causa problemi se si riprova velocemente
  • Content-Type: application/json da curl CLI esterno fallisce (body non letto) — solo via PHP curl o browser fetch funziona correttamente

Sprint futuri

  • simulate-nis2-big.php: da implementare seguendo docs/prompts/big-simulation-prompt.md
  • RAG su normativa NIS2, benchmark settoriale (Piano Adaptive Sprint 3)

Flusso licenze B2B (aggiornato)

mktg → licenseExt.html → genera licenza con dati destinatario
     → invite_url: register.html?invite=inv_xxx
     → cliente clicca link → form pre-compilato (nome/cognome/email/piva)
     → cliente inserisce password → Crea Account → onboarding

Pannello mktg: https://nis2.agile.software/licenseExt.html (accesso: super_admin)


Prossimi passi consigliati

  1. Fare onboarding con presidenza@agile.software per testare flusso completo
  2. Implementare simulate-nis2-big.php da docs/prompts/big-simulation-prompt.md
  3. Verificare/correggere endpoint CertiSource per P.IVA lookup
  4. Aggiungere POST /api/auth/validate-invite al router pubblico (è già implementato)