docs(planning): v2.1 milestone setup + Phase 11 context/patterns
- Archive v2.0 phases (07-10) under .planning/milestones/ - v2.1 REQUIREMENTS/ROADMAP (Phases 11-17: Offer Studio + Proposal AI) - DESIGN-SYSTEM.md (database-view UI contract for Phases 11-14) - Phase 11 CONTEXT, DISCUSSION-LOG, PATTERNS Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+28
-40
@@ -4,58 +4,46 @@ Living document — update at the end of each session so the next one can resume
|
||||
|
||||
---
|
||||
|
||||
## 2026-06-12 — Nuova direzione: "Offer Studio" + "Proposal AI" (decisa, da pianificare)
|
||||
## 2026-06-13 — Milestone v2.1 "Offer Studio + Proposal AI" pianificata — pronta per esecuzione
|
||||
|
||||
### Contesto della decisione
|
||||
### Cosa è stato fatto
|
||||
|
||||
L'utente ha mostrato due riferimenti:
|
||||
Eseguito ciclo completo `/gsd-new-milestone "Offer Studio + Proposal AI"` (research saltata su scelta utente):
|
||||
|
||||
1. **Diagramma architettura del suo amico (OMC)**: più app indipendenti (Hub, AI Agents, Content Marketing Tool, New Tool) che condividono UN database (Supabase), deploy da GitHub. Concetto: "compartimenti stagni" — aggiungere un'app non rompe le altre.
|
||||
2. **Il suo Notion attuale per le offerte** (Offer Builder): DB Attività/Servizi con tag+prezzi, DB Offerte con sezioni (panoramica, strategia, scala valore, promessa, psicologia, pricing, vendita, rating, performance). Lo usa oggi ma vuole portare il flusso dentro ClientHub.
|
||||
- **PROJECT.md**: nuovo milestone v2.1 con goal, 4 target feature, sezione "Validated" aggiornata con v2.0 (Phase 7-10), "Active" riscritta in 4 categorie prioritizzate, nuove Key Decisions (compartimenti stagni confermato, ordine Offer Studio→Proposal AI, tab Preventivo→Servizi Attivi zero-perdita verificata)
|
||||
- **v2.0 archiviata** (copie, non spostamenti): `REQUIREMENTS.md`/`ROADMAP.md`/phases 07-10 → `.planning/milestones/v2.0-*`
|
||||
- **REQUIREMENTS.md** riscritto: 23 requisiti v1 in 5 categorie (Offer Studio, Workspace Servizi Attivi, CRM Attio, Dashboard [bloccata], Proposal AI) + deferred v2 (OFFER-14, AUTH-OTP-01, ARCH-01) + out of scope
|
||||
- **ROADMAP.md** creato: 7 nuove fasi (11-17), copertura 100% (23/23 requisiti mappati), tutte approvate dall'utente
|
||||
- **STATE.md**: switch a v2.1, focus = Phase 11
|
||||
|
||||
### Problema dichiarato
|
||||
### Roadmap v2.1 (Phase 11-17)
|
||||
|
||||
Il catalogo/offerte che abbiamo costruito è "lento e macchinoso" rispetto a Notion: creare un'offerta, taggarla, metterci servizi è scomodo. L'utente chiedeva se servisse un DB esterno o import da Excel.
|
||||
| Fase | Titolo | Requisiti | Note |
|
||||
| --- | --- | --- | --- |
|
||||
| 11 | Catalog Database-View UX & Legacy Consolidation | OFFER-07,08,09,10,13 | unifica `service_catalog`/`offer_services` → `services` PRIMA della nuova UX |
|
||||
| 12 | Offer Composition Drag&Drop & CSV Import | OFFER-11,12 | `@dnd-kit`, totale live durante drag, import CSV one-shot |
|
||||
| 13 | Workspace — Servizi Attivi | PROJ-06..10 | rimuove tab Preventivo (zero perdita, `accepted_total` resta via Payments) e Forecast; nuova tab Servizi Attivi (one-shot/ricorrenti + tracking incassi mensili) |
|
||||
| 14 | CRM Attio-style & Fix | CRM-08..12 | inline edit lead + tag, fix FollowUpWidget IT / LeadForm types / SendQuoteModal |
|
||||
| 15 | Dashboard Revenue Stats | DASH-11 | **BLOCCATA** — attesa mockup utente, isolata/skippabile, non blocca 16/17 |
|
||||
| 16 | Proposal AI — Data Foundations & Auto-Provisioning | PROP-03,04 | campo Stripe Payment Link + auto-provisioning su accettazione (ex-Phase 11) |
|
||||
| 17 | Proposal AI — Builder, Pagina Pubblica & Email | PROP-01,02,05 | AI builder + redesign `/quote/[token]` + invio email Resend (ex-Phase 12) |
|
||||
|
||||
### Decisioni prese (vincolanti per la pianificazione)
|
||||
### Nota trasparenza — deviazione dal workflow
|
||||
|
||||
1. **NO database esterno, NO Excel come fonte dati.** Postgres resta l'unica fonte di verità (lezione del 2026-06-11: mai due fonti disallineate). Il problema è il layer UX, non il dato.
|
||||
2. **Rifare la UX di catalogo + offerte in stile "database view" Notion/Airtable**, su misura:
|
||||
- tabella con inline editing (click su cella → edit → invio)
|
||||
- tag multi-select colorati con creazione al volo
|
||||
- quick-add (riga vuota in fondo, nome + invio)
|
||||
- filtri/ricerca istantanei
|
||||
- composizione offerta: apri offerta → spunti/trascini servizi dal catalogo a lato → totale live (`@dnd-kit` già nel progetto)
|
||||
- **import CSV una tantum** solo per seedare i pacchetti esistenti (porta d'ingresso, non fonte di verità)
|
||||
3. **Complessità Notion NON replicata in v1**: solo servizi (tag/prezzo/costo), offerte (tag/pricing/stato), composizione. Sezioni analitiche (psicologia, rating, performance) dopo.
|
||||
4. **Architettura a compartimenti stagni = quello che già facciamo**, formalizzato: un'unica app Next.js, moduli isolati (route group + service layer propri) su DB condiviso; migrations SOLO additive. Niente deploy separati per ora; se un modulo cresce, si stacca con deploy proprio sullo stesso DB (modello OMC).
|
||||
5. **Pipeline finale**: Catalogo servizi → Offer Builder → **Preventivo Builder AI** (pesca cliente + offerta + info extra fornite dall'utente, genera proposta) → pagina pubblica HTML/CSS (base già live su `/quote/[token]`) → **link pagamento in fondo** (Stripe Payment Link come campo dell'offerta).
|
||||
6. **Ordine**: prima la UX veloce del dato ("Offer Studio", che assorbe anche i fix CRM/design segnalati ieri), poi l'AI ("Proposal AI"). L'AI è l'ultimo miglio.
|
||||
Il workflow `/gsd-new-milestone` prevede uno step "phases clear" che farebbe `rm -rf` di `.planning/phases/01-10/` senza backup. **Non l'ho eseguito**: è distruttivo, senza archiviazione automatica, e CLAUDE.md richiede conferma prima di operazioni distruttive/di investigare prima di rimuovere lavoro storico. Le fasi 07-10 sono state invece COPIATE (non spostate) in `.planning/milestones/v2.0-phases/`; le directory originali `01-10` restano in `.planning/phases/`. Nessuna perdita — solo directory duplicate, pulizia facoltativa in futuro.
|
||||
|
||||
### Feedback utente raccolto e triagiato (2026-06-12)
|
||||
### Prossima sessione
|
||||
|
||||
**BUG (diagnosticato e FIXATO, commit `ea20685` — DA PUSHARE):**
|
||||
1. **Pianificare Phase 11** (Catalog Database-View UX & Legacy Consolidation): `/gsd-plan-phase 11` (oppure `/gsd-discuss-phase 11` prima per decisioni aperte: schema tag, formato CSV import, strategia consolidamento `service_catalog`/`offer_services`)
|
||||
2. Se arriva il **mockup dashboard** dall'utente: Phase 15 (DASH-11) può essere sbloccata, usare `/gsd-ui-phase` come contratto UI
|
||||
3. Migration Phase 11 (consolidamento catalogo) e Phase 13/16 (nuovi campi recurring/payment link) vanno applicate a prod via SSH+docker exec PRIMA del push del codice dipendente (regola storica, vedi sotto)
|
||||
|
||||
- `/admin/leads/[id]` non caricava → in Next.js 16 `params` è una Promise, la pagina lo usava sincrono → `id` undefined → 500. Fix: `await params`. Build verificata. **Controllare che non rientri lo stesso pattern in pagine future.**
|
||||
---
|
||||
|
||||
**Decisioni strutturali (vanno nella fase "Offer Studio", non fix isolati):**
|
||||
## 2026-06-12 — Direzione "Offer Studio" + "Proposal AI" → ora pianificata (vedi sopra)
|
||||
|
||||
1. **Eliminare la tab "Preventivo" dal workspace progetto** (vecchio sistema quote_items per cliente, vedi screenshot sessione 2026-06-12) — è un doppione: il Preventivo Builder app è l'unico flusso, anche per nuovi preventivi a già clienti. ⚠️ ATTENZIONE: solo rimozione UI — la tabella `quote_items` NON si tocca (storico + LOCKED constraints); capire dove finisce l'editing di `clients.accepted_total` (oggi sta in quella tab) — probabilmente settato dal flusso di accettazione quote o dalla nuova tab.
|
||||
2. **Nuova tab "Servizi attivi"** al suo posto: offerte attive del cliente — alcune one-shot, altre **ricorrenti mensili**. La tab "Offerte" esistente probabilmente si **ingloba** qui (l'utente è aperto: "la teniamo o la inglobiamo") — motivo: sui già clienti si attivano offerte senza passare dal preventivo.
|
||||
3. **Eliminare la tab "Forecast"** dalla sidebar; le statistiche di revenue mensile vanno **nella Dashboard**.
|
||||
4. **CRM: copiare Attio** come riferimento UX (tabelle veloci, inline editing, tag, viste). Tutto custom in casa, NESSUN tool esterno. (Confermato dopo discussione Pipedrive/GoHighLevel/Attio: Attio = benchmark, non acquisto.)
|
||||
|
||||
**Backlog dichiarato:**
|
||||
|
||||
- Tracking incassi per mese sulle offerte ricorrenti (in che mese è stata incassata ogni fattura) → statistiche fatturato mese per mese. Da progettare nello schema di "Servizi attivi" (campo/tabella incassi) anche se la UI arriva dopo.
|
||||
|
||||
**Fix minori noti (da assorbire quando si tocca l'area):** FollowUpWidget in inglese (resto app in italiano), LeadForm 365 righe con type-relaxation su react-hook-form, SendQuoteModal logic flow sistemato in fretta.
|
||||
|
||||
### Prossima sessione (l'utente passa a Sonnet per l'esecuzione)
|
||||
|
||||
1. **Pushare il fix `ea20685`** se non già fatto (serve conferma utente per push su main).
|
||||
2. **Ripianificare la roadmap GSD**: milestone/fasi "Offer Studio" (catalogo+offerte UX Attio-like, ristrutturazione tab progetti di cui sopra, CRM rifinito) e "Proposal AI" (builder AI → pagina pubblica → link pagamento). Le vecchie Phase 11 auto-provisioning e 12 Resend vanno ricollocate — far decidere all'utente.
|
||||
3. L'utente vuole **fornire un suo design/mockup** per le dashboard — chiederglielo prima di disegnare la UI; usarlo come contratto UI (`/gsd-ui-phase`).
|
||||
- **BUG fixato e deployato**: `/admin/leads/[id]` 500 per `params` non awaited (Next.js 16) → fix commit `ea20685`, confermato live in prod (container `857af5c1...`).
|
||||
- Decisioni strutturali (Preventivo→Servizi Attivi, Forecast→Dashboard, CRM Attio-style, compartimenti stagni) sono ora formalizzate in PROJECT.md/REQUIREMENTS.md/ROADMAP.md — vedi sezione 2026-06-13 sopra.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user