19a7ffb6a6
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.7 KiB
2.7 KiB
Requirements: ClientHub v2.3 Email & Accesso
Defined: 2026-06-21 Core Value: Il cliente apre il link e vede esattamente a che punto è il suo progetto, cosa deve ancora succedere e cosa ha già approvato — senza dover scrivere email per chiedere aggiornamenti.
v2.3 Requirements
Email OTP Gate (AUTH-OTP-01)
Portale cliente blindato da email OTP. Nuovo client_emails table (whitelist) + otp_codes table (codice, email, expires_at, consumed). Resend come provider email. Sessione 30gg con cookie dopo verifica.
- OTP-01: Admin può aggiungere e rimuovere email dalla whitelist di ogni cliente nell'admin UI
- OTP-02: Cliente senza sessione OTP vede una schermata "inserisci email" invece della dashboard
- OTP-03: Sistema invia OTP via Resend solo se l'email inserita è nella whitelist di quel cliente
- OTP-04: Cliente inserisce il codice OTP ricevuto e ottiene sessione autenticata (cookie 30 giorni)
- OTP-05: Codici OTP scadono dopo 15 minuti dall'invio
- OTP-06: Endpoint OTP è rate-limited per prevenire brute force
- OTP-07: Messaggi di errore OTP non rivelano se l'email è in whitelist o no (no enumeration)
Invio Link Preventivo via Email (PUB-03)
Admin invia link deck pubblico al lead direttamente dall'admin UI. Usa stessa infrastruttura Resend del OTP gate.
- SEND-01: Admin può inviare link
/preventivo/[slug]via email al lead con un'azione dall'admin UI - SEND-02: Email inviata via Resend include link deck + nome cliente, template minimale in italiano
v2.4+ Backlog
Conversione Commerciale
- PROP-03: Stripe Payment Link su deck pubblico
/preventivo/[slug] - PROP-04: Auto-provisioning cliente/progetto/fasi al "Vinto" nel CRM
Post-Vendita
- Phase 13: Gestione servizi attivi/ricorrenti post-vendita nel portale cliente (congelata da v2.1)
Out of Scope
| Feature | Reason |
|---|---|
| Self-registration cliente | Solo whitelist admin-gestita — nessun accesso senza approvazione esplicita |
| Magic link senza OTP | OTP è più sicuro e già deciso come design; magic link = scope creep |
| Email marketing / newsletter | Non pertinente al portale |
| Multi-admin | Ancora single admin per ora |
Traceability
| Requirement | Phase | Status |
|---|---|---|
| OTP-01 | — | Pending |
| OTP-02 | — | Pending |
| OTP-03 | — | Pending |
| OTP-04 | — | Pending |
| OTP-05 | — | Pending |
| OTP-06 | — | Pending |
| OTP-07 | — | Pending |
| SEND-01 | — | Pending |
| SEND-02 | — | Pending |
Coverage:
- v2.3 requirements: 9 total
- Mapped to phases: 0 (roadmap pending)
- Unmapped: 9 ⚠️
Requirements defined: 2026-06-21 Last updated: 2026-06-21 — initial definition