docs(v2.0): finalize roadmap + requirements — phases 7-11 approved for planning
- Upgrade PROJECT.md: v2.0 Business Operations Suite (unified catalog, offers with phases, public quotes, CRM pipeline, auto-provisioning) - Create REQUIREMENTS.md sections: CAT-U, OFFER-B, QUOTE, CRM, WIN requirements for phases 7-11 - Extend ROADMAP.md: 5-phase structure (7-11), 14-19 days total, risk/flag registry - Archive v1.0 milestone (phases 1-6, complete) - Switch STATE.md to v2.0, status=planning - Create research documents: STACK.md, FEATURES_v2.0.md, ARCHITECTURE.md, PITFALLS.md, SUMMARY.md Ready for: /gsd-plan-phase 7 Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# Requirements — ClientHub
|
||||
# Requirements — ClientHub v2.0 Business Operations Suite
|
||||
|
||||
## Dashboard Cliente (v1)
|
||||
|
||||
@@ -51,20 +51,69 @@
|
||||
| OFFER-05 | La dashboard cliente mostra le offerte attive con nome pubblico, prezzo cumulativo dei servizi inclusi e prezzo finale accettato in evidenza; se ha più offerte le vede tutte | Pending |
|
||||
| OFFER-06 | Admin ha una vista revenue forecast dei 12 mesi successivi basata su offerte attive, durata e accepted_total; breakdown mensile con totale fatturato per mese | Pending |
|
||||
|
||||
## Flusso Claude (v2 — deferred to Phase 6)
|
||||
## Catalogo Unificato & Offer Builder (Phase 7–8)
|
||||
|
||||
| ID | Requirement | Status |
|
||||
|----|-------------|--------|
|
||||
| CAT-U-01 | Un'unica tabella `services` unifica `service_catalog` + `offer_services`; migrazione zero data loss con audit trail (`migrated_from`) | Phase 7 |
|
||||
| CAT-U-02 | Admin `/admin/catalog` list/add/edit/soft-delete per i servizi singoli (nome, prezzo_unitario, attivo) | Phase 7 |
|
||||
| OFFER-B-01 | Offer = nome + tag tipo (Entry/Signature/Retainer/custom) + fasi ordinate; fasi indipendenti l'una dall'altra (es. Signature A/B/C non ereditate) | Phase 8 |
|
||||
| OFFER-B-02 | `/admin/offers/[id]/edit` two-column builder: left colonna servizi (ricerca), right colonna fasi con drag&drop tra fasi e dentro fase (reorder) | Phase 8 |
|
||||
| OFFER-B-03 | Drag&drop salva per singolo drop con optimistic update client-side + validazione server; versioning previene race condition da multi-tab edit | Phase 8 |
|
||||
|
||||
## Quote Builder & Public Proposal Pages (Phase 9)
|
||||
|
||||
| ID | Requirement | Status |
|
||||
|----|-------------|--------|
|
||||
| QUOTE-01 | `/admin/quotes/new`: select cliente + 1-3 offerte + override prezzo per ciascuna offerta + genera link pubblico `/quote/[token]` | Phase 9 |
|
||||
| QUOTE-02 | Public `/quote/[token]` pagina multistep (Zod validazione): Step 1 (overview) → Step 2 (tier A/B/C selection + prezzi + fasi) → Step 3 (summary + accept/decline) | Phase 9 |
|
||||
| QUOTE-03 | Accept CTA → POST `/api/public/quote/accept?token=X` con cattura email (opzionale) + note opzionali; registra timestamp accepted_at immutabile | Phase 9 |
|
||||
| QUOTE-04 | Quote token: nanoid 21 char (~122 bits), unico, validato in proxy come `/client/[token]` (nessun login sessione); rate limit 3 views/min per IP | Phase 9 |
|
||||
| QUOTE-05 | Mai esporre `quote_items` (prezzi per servizio) via public API; client API vede solo `accepted_total` (server-side ClientView type enforces) | Phase 9 |
|
||||
|
||||
## CRM Pipeline & Activity Logging (Phase 10)
|
||||
|
||||
| ID | Requirement | Status |
|
||||
|----|-------------|--------|
|
||||
| CRM-01 | Lead CRUD: `/admin/leads` list table (name, email, company, status, last_contact_date, next_action) con create/edit/delete | Phase 10 |
|
||||
| CRM-02 | Lead detail page `/admin/leads/[id]`: full profilo, activity log (reverse chronological), quote(s) sent, actions menu (log activity, send quote, mark won) | Phase 10 |
|
||||
| CRM-03 | Pipeline stages: Contacted → Qualified → Proposal Sent → Negotiating → Won / Lost; transizioni via dropdown (manual di default) | Phase 10 |
|
||||
| CRM-04 | Activity logging: tipi (call, email, meeting, note); ogni attività: type, date, durata (opz), notes; auto-aggiorna lead.last_contact_date | Phase 10 |
|
||||
| CRM-05 | "Log activity" modal: <10 sec UX (type dropdown, date picker, notes textarea, save) — bassa tolleranza per data entry lunghi | Phase 10 |
|
||||
| CRM-06 | Follow-up reminders widget in dashboard: "Follow up today" (leads dove last_contact_date < oggi - 7 giorni); click → jump lead detail | Phase 10 |
|
||||
| CRM-07 | "Send Quote" button in lead detail: select existing quote o crea nuovo; update lead.last_quote_sent + status → "Proposal Sent" | Phase 10 |
|
||||
|
||||
## Auto-Onboarding on Win (Phase 11)
|
||||
|
||||
| ID | Requirement | Status |
|
||||
|----|-------------|--------|
|
||||
| WIN-01 | "Mark as Won" button in lead detail (o auto-triggered da public quote accept); idempotency: call 2 volte = idempotent, stesso client token | Phase 11 |
|
||||
| WIN-02 | winLead(leadId, quoteId): crea client (name da lead, token = nanoid), crea project (name = company/offer name), copia offer fasi → project fasi | Phase 11 |
|
||||
| WIN-03 | 1-4 pagamenti: user sceglie split template (50/50, 3-part, 4-part, custom); registra importo accepted_total da quote | Phase 11 |
|
||||
| WIN-04 | Generate client dashboard link (`/client/[token]`), invia via email al lead (copy-paste OK, email automation deferred Phase 12+) | Phase 11 |
|
||||
| WIN-05 | Quote accept da public link `/quote/[token]` auto-aggiorna lead.status → "Proposal Sent" + trigga win (auto-onboarding) | Phase 11 |
|
||||
| WIN-06 | Copy offer phases → project phases: tutte le fasi copiate con status = "upcoming", le fasi modificabili dopo (template immutabile, instance editable) | Phase 11 |
|
||||
|
||||
## Flusso Claude (v3 — deferred to Phase 13+)
|
||||
|
||||
| ID | Requirement | Status |
|
||||
|----|-------------|--------|
|
||||
| CLAUDE-01 | Onboarding guidato step-by-step via chat per aggiungere un nuovo cliente | Deferred |
|
||||
| CLAUDE-02 | Generazione del piano a fasi basato sul brief | Deferred |
|
||||
| CLAUDE-03 | Generazione preventivo assistita (Claude suggerisce, tu approvi prima di finalizzare) | Deferred |
|
||||
| CLAUDE-02 | Generazione del piano a fasi basato dal brief | Deferred |
|
||||
| CLAUDE-03 | Generazione preventivo assistita (Claude suggerisce struttura offerta, tu approvi) | Deferred |
|
||||
|
||||
## Out of Scope
|
||||
## Out of Scope (v2.0)
|
||||
|
||||
- Fatturazione e invio fatture (solo stato pagamenti)
|
||||
- App mobile nativa (solo web responsive)
|
||||
- Multi-utente con team (solo admin singolo)
|
||||
- Prezzi singoli visibili al cliente (solo totale accettato)
|
||||
- Email automation (manual copy-paste OK per MVP)
|
||||
- Lead scoring / predictive analytics
|
||||
- Team collaboration
|
||||
- Lead de-duplication (manual link on Win)
|
||||
- Proposal expiry logic (open indefinitely)
|
||||
- BullMQ persistent reminders (in-app computed, persistent deferred Phase 12+)
|
||||
|
||||
## Traceability
|
||||
|
||||
@@ -96,6 +145,29 @@
|
||||
| OFFER-04 | Phase 5 | Pending |
|
||||
| OFFER-05 | Phase 5 | Pending |
|
||||
| OFFER-06 | Phase 5 | Pending |
|
||||
| CLAUDE-01 | Phase 6 (v2) | Deferred |
|
||||
| CLAUDE-02 | Phase 6 (v2) | Deferred |
|
||||
| CLAUDE-03 | Phase 6 (v2) | Deferred |
|
||||
| CAT-U-01 | Phase 7 | Phase 7 |
|
||||
| CAT-U-02 | Phase 7 | Phase 7 |
|
||||
| OFFER-B-01 | Phase 8 | Phase 8 |
|
||||
| OFFER-B-02 | Phase 8 | Phase 8 |
|
||||
| OFFER-B-03 | Phase 8 | Phase 8 |
|
||||
| QUOTE-01 | Phase 9 | Phase 9 |
|
||||
| QUOTE-02 | Phase 9 | Phase 9 |
|
||||
| QUOTE-03 | Phase 9 | Phase 9 |
|
||||
| QUOTE-04 | Phase 9 | Phase 9 |
|
||||
| QUOTE-05 | Phase 9 | Phase 9 |
|
||||
| CRM-01 | Phase 10 | Phase 10 |
|
||||
| CRM-02 | Phase 10 | Phase 10 |
|
||||
| CRM-03 | Phase 10 | Phase 10 |
|
||||
| CRM-04 | Phase 10 | Phase 10 |
|
||||
| CRM-05 | Phase 10 | Phase 10 |
|
||||
| CRM-06 | Phase 10 | Phase 10 |
|
||||
| CRM-07 | Phase 10 | Phase 10 |
|
||||
| WIN-01 | Phase 11 | Phase 11 |
|
||||
| WIN-02 | Phase 11 | Phase 11 |
|
||||
| WIN-03 | Phase 11 | Phase 11 |
|
||||
| WIN-04 | Phase 11 | Phase 11 |
|
||||
| WIN-05 | Phase 11 | Phase 11 |
|
||||
| WIN-06 | Phase 11 | Phase 11 |
|
||||
| CLAUDE-01 | Phase 13 (v3) | Deferred |
|
||||
| CLAUDE-02 | Phase 13 (v3) | Deferred |
|
||||
| CLAUDE-03 | Phase 13 (v3) | Deferred |
|
||||
Reference in New Issue
Block a user