Files
clienthub/.planning/REQUIREMENTS.md
T
simone 640f986967 docs(12): create phase plan
Re-scoped Offer Editor (Tier A/B/C, Tag & Prezzo Pubblico) per 2026-06-14
user decision: 5-plan wave structure (schema migration -> prod apply
checkpoint -> query/action layer -> list + detail editor UI), OFFER-12
CSV/Notion import deferred.
2026-06-14 21:00:32 +02:00

7.3 KiB
Raw Blame History

Requirements — ClientHub v2.1 Offer Studio + Proposal AI

Defined: 2026-06-13 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.0 (Phases 710) ha consegnato catalogo unificato, offerte con fasi, preventivo pubblico e CRM pipeline (vedi MILESTONES.md, REQUIREMENTS.md archiviato in .planning/milestones/v2.0-REQUIREMENTS.md). v2.1 rifà la UX di catalogo/offerte in stile database-view, ristruttura il workspace progetto, ricostruisce il CRM in stile Attio e chiude il loop commerciale con un builder preventivi AI.

Offer Studio — Catalogo & Offerte (v1)

ID Requirement Status
OFFER-07 L'utente vede ed edita il catalogo services come tabella con inline editing (click su cella → edit → invio salva) Complete
OFFER-08 L'utente assegna tag multi-select a servizi/offerte, creando nuovi tag al volo senza uscire dalla tabella Complete
OFFER-09 L'utente aggiunge un nuovo servizio/offerta tramite riga vuota in fondo alla tabella (nome + invio) Complete
OFFER-10 L'utente filtra/cerca servizi e offerte istantaneamente (ricerca client-side, nessun reload) Complete
OFFER-11 L'admin compone un'offerta a 3 tier (A/B/C) assegnando i servizi del catalogo unificato services tramite matrice di checkbox (servizio × tier); il totale servizi di ogni tier si aggiorna live Pending
OFFER-15 Ogni offerta ha tag su 4 dimensioni (categoria, ticket, tipo, obiettivo) creabili al volo, riusando il sistema tag polimorfico di Phase 11 Pending
OFFER-16 Per ogni tier l'admin imposta un "prezzo pubblico" manuale, distinto e indipendente dal totale dei servizi Pending
OFFER-17 Ogni offerta ha una promessa di trasformazione strutturata (Cliente Ideale / Risultato / tempo / Pain / Metodo) Pending
OFFER-18 La lista offerte è filtrabile per categoria e supporta l'archiviazione (mostra/nascondi archiviate) Pending
OFFER-13 I dati legacy di service_catalog e offer_services sono consolidati in services senza perdita (migration additiva) Complete

Workspace Progetto — Servizi Attivi (v1)

ID Requirement Status
PROJ-06 La tab "Preventivo" è rimossa dal workspace progetto (solo UI — quote_items resta intatta, accepted_total resta editabile via tab Pagamenti) Pending
PROJ-07 La tab "Offerte" diventa "Servizi attivi": mostra tutte le offerte assegnate al progetto (project_offers) Pending
PROJ-08 L'utente marca ogni "servizio attivo" come one-shot o ricorrente mensile Pending
PROJ-09 Per i servizi ricorrenti, l'utente registra in quali mesi è stata incassata la fattura (schema nuovo, additivo — UI può essere minimale) Pending
PROJ-10 La pagina "Forecast" e la relativa voce di sidebar sono rimosse Pending

CRM Custom Attio-style (v1)

ID Requirement Status
CRM-08 La tabella lead (/admin/leads) supporta inline editing dei campi principali (status, next_action, ecc.) senza apertura modale Complete
CRM-09 L'utente assegna tag multi-select ai lead, creando nuovi tag al volo Complete
CRM-10 Il FollowUpWidget è in italiano, coerente col resto dell'app Complete
CRM-11 Il form lead (LeadForm) valida i campi senza workaround di type-relaxation su react-hook-form Complete
CRM-12 Il flusso SendQuoteModal (preventivo esistente vs nuovo) non contiene rami di codice irraggiungibili Complete

Dashboard — Revenue Stats (v1, bloccato su mockup utente)

ID Requirement Status
DASH-11 La Dashboard admin mostra le statistiche di revenue mensile (ex /admin/forecast, calcolate da project_offers) Blocked — attesa mockup dashboard utente

Proposal AI (v1)

ID Requirement Status
PROP-01 L'admin avvia un builder AI che genera una proposta a partire da cliente + offerta(e) selezionata(e) + note extra fornite manualmente Pending
PROP-02 La pagina pubblica /quote/[token] è ridisegnata (HTML/CSS) per presentare la proposta generata Pending
PROP-03 Ogni offerta/preventivo ha un campo "link di pagamento" (Stripe Payment Link) mostrato come CTA nella pagina pubblica Pending
PROP-04 All'accettazione del preventivo, il sistema crea automaticamente cliente + progetto, copia le fasi dall'offerta e configura 1-4 pagamenti (ex-Phase 11 WIN-01..06) Pending
PROP-05 Il sistema invia via email (Resend) il link della proposta pubblica al lead (ex-Phase 12) Pending

v2 Requirements (Deferred)

Catalogo Avanzato

  • OFFER-12: Import CSV/Notion one-shot per popolare servizi/offerte esistenti (solo seed iniziale, non sync continuo) — rimandato il 2026-06-14 su decisione utente ("per ora saltiamo"); rientra nel filone "import dati da Notion" da valutare in una fase futura
  • OFFER-14: Sezioni analitiche stile Notion per le offerte (psicologia, rating, performance)

Accesso Cliente

  • AUTH-OTP-01: Accesso dashboard cliente via OTP email (design pronto, vedi memoria project_clienthub_otp_access)

Architettura

  • ARCH-01: Split di un modulo "compartimento stagno" in deploy separato (solo se il modulo cresce abbastanza da giustificarlo)

Out of Scope

Feature Reason
Fatturazione e invio fatture Solo stato pagamenti, gestione contabile fuori
App mobile nativa Solo web responsive
Multi-utente con team Solo admin singolo per ora
Prezzi singoli visibili al cliente Vede solo il totale accettato (vincolo LOCKED)
File hosting Documenti solo come URL esterni (vincolo v1, ancora valido)
Database esterno o Excel come fonte dati Postgres unica fonte di verità — il problema è la UX, non il dato
Notion-clone completo (sezioni psicologia/rating/performance) Troppo complesso per v1, vedi v2 Requirements
Deploy separati per modulo (architettura OMC multi-app) Non finché un modulo non cresce abbastanza da giustificarlo

Traceability

Popolata dal roadmapper durante la creazione della roadmap.

Requirement Phase Status
OFFER-07 Phase 11 Complete
OFFER-08 Phase 11 Complete
OFFER-09 Phase 11 Complete
OFFER-10 Phase 11 Complete
OFFER-13 Phase 11 Complete
OFFER-11 Phase 12 Pending
OFFER-15 Phase 12 Pending
OFFER-16 Phase 12 Pending
OFFER-17 Phase 12 Pending
OFFER-18 Phase 12 Pending
OFFER-12 Deferred (v2) Rimandato 2026-06-14
PROJ-06 Phase 13 Pending
PROJ-07 Phase 13 Pending
PROJ-08 Phase 13 Pending
PROJ-09 Phase 13 Pending
PROJ-10 Phase 13 Pending
CRM-08 Phase 14 Complete
CRM-09 Phase 14 Complete
CRM-10 Phase 14 Complete
CRM-11 Phase 14 Complete
CRM-12 Phase 14 Complete
DASH-11 Phase 15 Blocked
PROP-03 Phase 16 Pending
PROP-04 Phase 16 Pending
PROP-01 Phase 17 Pending
PROP-02 Phase 17 Pending
PROP-05 Phase 17 Pending

Requirements defined: 2026-06-13 Last updated: 2026-06-14 — Phase 12 re-scoped da mockup utente: editor offerte (OFFER-11 ridefinito + OFFER-15..18), import CSV OFFER-12 rimandato