10a390239a
Strategic reset after articulating the real sales flow (piano in .claude/plans/glittery-sprouting-pudding.md). v2.1 delivered Offer Studio (Phase 11+12) + CRM Attio (Phase 14); residual phases re-scoped: - Phase 13 (Servizi Attivi) → frozen (touches post-sale portal, kept as-is) - Phase 15 (Dashboard Revenue) → dropped (analytics merges into dashboard) - Phase 16/17 (Proposal AI) → re-scoped into v2.2 with transcripts added New milestone v2.2 = sales loop, Phase 18→22 (R1→R5): - R1 Cleanup: remove forecast + manual quote builder, merge analytics into dashboard - R2 Pipeline CRM Kanban (Pipedrive-style) - R3 Knowledge Base (dated call transcripts per lead/client) - R4 AI agent (admin picks offer, Claude personalizes proposal from transcripts) - R5 Public /preventivo/[slug] page + email New requirements: CLEAN-01..04, PIPE-01/02, KB-01/02, AI-01/02, PUB-01/02/03. Updated ROADMAP, REQUIREMENTS, STATE, PROJECT. No code changed. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
111 lines
7.0 KiB
Markdown
111 lines
7.0 KiB
Markdown
---
|
||
gsd_state_version: 1.0
|
||
milestone: v2.2
|
||
milestone_name: Sales Loop
|
||
status: planning
|
||
stopped_at: "RESET 2026-06-19 → milestone v2.2 'Sales Loop'. v2.1 chiuso (Offer Studio Phase 11+12, CRM Phase 14 fatti; 13/15/16/17 congelate/abbandonate/ri-scopate). Prossima: Phase 18 (R1) Cleanup."
|
||
last_updated: "2026-06-19T11:30:00.000Z"
|
||
last_activity: 2026-06-19 -- Reset strategico v2.2 (piano approvato + planning docs aggiornati). Pronto per /gsd-plan-phase 18
|
||
progress:
|
||
total_phases: 5
|
||
completed_phases: 0
|
||
total_plans: 0
|
||
completed_plans: 0
|
||
percent: 0
|
||
---
|
||
|
||
# Project State
|
||
|
||
## Project Reference
|
||
|
||
See: .planning/PROJECT.md (updated 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.
|
||
|
||
**Current focus:** Milestone **v2.2 "Sales Loop"** (reset 2026-06-19). North-star: lead in pipeline Kanban → transcript call → agente AI genera preventivo → pagina pubblica `/preventivo/[slug]` → vinto/perso. Piano: `.claude/plans/glittery-sprouting-pudding.md`. Prossimo passo: pianificare Phase 18 (R1) Cleanup.
|
||
|
||
## Current Position
|
||
|
||
Phase: 18 (R1) Cleanup & Consolidamento — ready to plan
|
||
Plan: —
|
||
Status: Reset v2.2 enacted nei planning docs. Pronto per `/gsd-plan-phase 18`.
|
||
Last activity: 2026-06-19 -- Reset strategico v2.2: ROADMAP/REQUIREMENTS/STATE aggiornati; fasi 13/15/16/17 chiuse, nuove 18–22 (R1–R5)
|
||
|
||
Progress (v2.2): [░░░░░░░░░░] 0% — 0/5 fasi
|
||
|
||
### Fasi completate (v2.1, storico)
|
||
Phase 11 (catalogo), Phase 12 (offer editor), Phase 14 (CRM Attio) — consegnate e in prod. 55 servizi reali + tag offerta caricati.
|
||
|
||
## Performance Metrics
|
||
|
||
**Velocity:**
|
||
|
||
- Total plans completed: 7 (v2.1)
|
||
- Average duration: —
|
||
- Total execution time: —
|
||
|
||
**By Phase:**
|
||
|
||
| Phase | Plans | Total | Avg/Plan |
|
||
|-------|-------|-------|----------|
|
||
| Phase 11 P01 | 25min | 2 tasks | 6 files |
|
||
| 11 | 4 | - | - |
|
||
| 14 | 3 | - | - |
|
||
|
||
**Recent Trend:**
|
||
|
||
- Last 5 plans: —
|
||
- Trend: —
|
||
|
||
*Updated after each plan completion*
|
||
| Phase 11 P02 | 12min | 2 tasks | 2 files |
|
||
| Phase 11 P03 | 9min | 2 tasks | 2 files |
|
||
| Phase 11 P04 | 12min | 2 tasks | 4 files |
|
||
|
||
## Accumulated Context
|
||
|
||
### Decisions
|
||
|
||
Decisions are logged in PROJECT.md Key Decisions table.
|
||
Recent decisions affecting current work:
|
||
|
||
- **[RESET 2026-06-19] Milestone v2.2 "Sales Loop"** sostituisce le fasi residue v2.1. Decisioni bloccate: (1) URL preventivo = `/preventivo/[slug]` pubblico; (2) tagliare Forecast + quote builder manuale + Phase 15, fondere `/admin/analytics` nella dashboard; (3) portale post-vendita resta core, non si tocca (Phase 13 congelata); (4) agente AI = "io scelgo l'offerta, l'AI personalizza" leggendo i transcript, provider Claude. Piano: `.claude/plans/glittery-sprouting-pudding.md`
|
||
- [SUPERSEDED dal reset] v2.1 roadmap: Offer Studio (Phases 11-15) sequenced before Proposal AI (Phases 16-17) — clean/fast data UX before the AI builder
|
||
- Phase 11 bundles catalog database-view UX (OFFER-07..10) with legacy consolidation (OFFER-13) since the new UX should be built on a single unified `services` table, not on top of legacy `service_catalog`/`offer_services`
|
||
- Phase 13 (Workspace — Servizi Attivi) is independent of Phases 11/12 — can execute in parallel order if useful, but numbered after for narrative flow
|
||
- Phase 15 (Dashboard Revenue Stats / DASH-11) is isolated and BLOCKED on user-provided mockup; no other phase depends on it — can be deferred/skipped without blocking Phase 16/17
|
||
- Phase 16/17 split: schema/automation (payment link field + auto-provisioning) first, then AI builder + public page redesign + email — keeps the AI-dependent work last
|
||
- [Phase 11]: Phase 11: hand-write Drizzle migration SQL (0006_add_tags_table.sql) following the project's established convention since drizzle-kit generate is non-functional (meta snapshots out of sync since migration 0001, pre-existing since Phase 8) — Avoids architectural snapshot-reconciliation work (Rule 4, out of scope) while matching exact precedent from migrations 0003-0005
|
||
- [Phase 11]: Phase 11 Plan 02: onConflictDoNothing() without explicit target compiles cleanly for tags table (single unique index tags_entity_name_unique) — used as written in plan, no fallback needed — Avoids unnecessary deviation; Drizzle's no-target ON CONFLICT DO NOTHING is correct given the single unique constraint from Plan 01
|
||
- [Phase 11]: Phase 11 Plan 03: removed the plan's prescribed value-sync useEffect (and a follow-up render-time ref-read attempt) from EditableCell — both violate this project's react-hooks lint rules (set-state-in-effect, refs-during-render / React Compiler). tempValue is now only (re)initialized in startEdit()/cancel(), and the toggle display branch reads `value` directly instead of `tempValue` — Rule 1 lint fix, no behavioral change to the 8 spec'd test behaviors
|
||
- [Phase 11]: Phase 11 Plan 04: left `createService`/`serviceSchema` in `src/app/admin/catalog/actions.ts` as unused dead code after deleting `ServiceForm.tsx` (its only consumer) — `actions.ts` was outside this plan's `files_modified` scope and `updateService` still depends on `serviceSchema`; logged to deferred-items.md for future cleanup
|
||
|
||
### Pending Todos
|
||
|
||
[From .planning/todos/pending/ — ideas captured during sessions]
|
||
|
||
None yet.
|
||
|
||
### Blockers/Concerns
|
||
|
||
- **Migrations (sempre valido)**: ogni fase con schema (es. Phase 20 transcript) DEVE avere la migration applicata a prod via tunnel SSH (`ssh -L 54321:localhost:54321 root@178.104.27.55`, `DATABASE_URL` riscritto a `127.0.0.1:54321`) PRIMA di pushare il codice dipendente. `drizzle-kit generate` rotto → SQL a mano.
|
||
- **Phase 21 (AI)**: nessuna integrazione AI ancora nel codice. Servirà chiave Anthropic API in env (Coolify) + decisioni modello/prompt in fase di planning.
|
||
- **Debito tecnico (non bloccante)**: tabelle legacy `service_catalog`/`offer_services`/`offer_micro_services` restano come deadweight; `createService`/`serviceSchema` dead code in `catalog/actions.ts`. Script di validazione consolidamento Phase 11 (migrate/validate) mai eseguiti ma OFFER-13 è di fatto soddisfatto (catalogo `services` in uso, 55 servizi reali caricati).
|
||
- **[RISOLTO]** ~~Phase 15 bloccata su mockup~~ → fase abbandonata dal reset 2026-06-19.
|
||
|
||
## Deferred Items
|
||
|
||
Items acknowledged and carried forward from previous milestone close:
|
||
|
||
| Category | Item | Status | Deferred At |
|
||
|----------|------|--------|-------------|
|
||
| v2 | OFFER-14 — Sezioni analitiche stile Notion (psicologia/rating/performance) | Backlog | v2.1 kickoff |
|
||
| v2 | AUTH-OTP-01 — Accesso dashboard cliente via OTP email | Design ready, deferred | v2.1 kickoff |
|
||
| v2 | ARCH-01 — Split modulo "compartimento stagno" in deploy separato | Backlog (only if module grows) | v2.1 kickoff |
|
||
|
||
## Session Continuity
|
||
|
||
Last session: 2026-06-14T19:04:45.211Z
|
||
Stopped at: Phase 12 re-scoped (mockup utente → editor offerte) e pianificata: 5 piani / 4 wave, planner + plan-checker pass. Pronta per /gsd-execute-phase 12
|
||
Resume file: .planning/phases/12-offer-composition-drag-drop-csv-import/12-01-PLAN.md
|