- ROADMAP.md: collassato a milestone summary, v2.2 in <details> - PROJECT.md: full evolution review — What This Is, Validated v2.2, Active v2.3, Key Decisions aggiornate - MILESTONES.md: entry v2.2 + entry v2.1 aggiunti - milestones/v2.2-ROADMAP.md: archivio completo fasi 18-22 - milestones/v2.2-REQUIREMENTS.md: archivio requirements con outcomes Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
6.5 KiB
Milestone v2.2: Sales Loop
Status: ✅ SHIPPED 2026-06-20 Phases: 18–22 (R1–R5) Total Plans: 9 plans · 27 commits · 87 files · +7.349/-842 righe Timeline: 2026-06-19 → 2026-06-20
Overview
v2.2 chiude il loop di vendita end-to-end: dopo che l'utente ha articolato il flusso commerciale reale (piano .claude/plans/glittery-sprouting-pudding.md), le fasi residue v2.1 (13/15/16/17) sono state congelate/abbandonate e sostituite da 5 fasi nuove. Il flusso: lead in pipeline Kanban → transcript datati delle call → agente AI genera preventivo → deck pubblico 20+ slide → accept/reject manuale nel CRM.
Phases
Phase 18: Cleanup & Consolidamento (R1)
Goal: Sgomberare il campo dai doppioni e dal peso morto prima di costruire il loop di vendita. Mode: ui (solo rimozioni/rotte, nessun drop di tabelle) Requirements: CLEAN-01, CLEAN-02, CLEAN-03, CLEAN-04 Plans: 3 plans
Plans:
- 18-01-PLAN.md — Rimozione Forecast + Quote Builder manuale (CLEAN-01, CLEAN-02)
- 18-02-PLAN.md — Fusione analytics nella Dashboard, eliminazione rotta /admin/analytics (CLEAN-03)
- 18-03-PLAN.md — Verifica CLEAN-04 planning docs + build check + checkpoint visuale
Status: ✅ Complete (2026-06-19)
What was built:
- Rimossa pagina
/admin/forecast+ voce sidebar - Rimosso quote builder manuale
/admin/quotes/new+ SendQuoteModal rami irraggiungibili - Statistiche annuali
/admin/analyticsfuse nella Dashboard/admin(CLEAN-03); rotta duplicata eliminata - Fasi v2.1 residue (13/15/16/17) marcate cancellate/congelate nel planning
Phase 19: Pipeline CRM Kanban (R2)
Goal: I lead si gestiscono in una board Kanban stile Pipedrive con drag-drop tra gli stage.
Mode: ui
Depends on: Phase 14 (CRM lead esistente). Riusa @dnd-kit.
Requirements: PIPE-01, PIPE-02
Plans: 1 plan
Plans:
- 19-01-PLAN.md — LeadsKanbanBoard + LeadsViewToggle + page wiring (PIPE-01, PIPE-02)
Status: ✅ Complete (2026-06-19)
What was built:
- Board Kanban 6 colonne (contacted → qualified → proposal_sent → negotiating → won/lost) con drag-drop persistente
- Toggle Lista/Kanban con ricerca integrata
- Spostare un lead su "Vinto"/"Perso" aggiorna
leads.status→ registra l'esito manuale
Phase 20: Knowledge Base Cliente (R3)
Goal: Memorizzare i transcript datati delle call e mostrarli nel profilo lead. Mode: schema + ui Depends on: Phase 14 (lead). Migration a prod via SSH. Requirements: KB-01, KB-02 Plans: 3 plans
Plans:
- 20-01-PLAN.md — Migration SQL
0009_client_transcripts(BLOCKING prod checkpoint) - 20-02-PLAN.md — Schema Drizzle
clientTranscripts+getTranscripts/addTranscript/deleteTranscript - 20-03-PLAN.md —
TranscriptModal+ sezione "Transcript Call" inLeadDetail+ wiringpage.tsx
Status: ✅ Complete (2026-06-20)
What was built:
- Tabella
client_transcripts(lead_id, client_id, content, call_date, title, created_at) applicata a prod via SSH tunnel - Data layer completo con Drizzle ORM + server actions
- UI: sezione "Transcript Call" nel dettaglio lead con modal per incollare, lista espandibile/collassabile, elimina
Phase 21: Agente AI — Generazione Preventivo (R4)
Goal: Admin seleziona cliente+offerta; AI legge transcript+offerta → genera bozza preventivo. Mode: ai + ui Depends on: Phase 20 (transcript) + Phase 11/12 (offerte) Requirements: AI-01, AI-02 Plans: 1 plan (21+22 eseguiti insieme per coerenza architetturale)
Plans:
- 21-01-PLAN.md — Agente AI + form builder admin + migration 0010 proposals
Status: ✅ Complete (2026-06-20)
What was built:
@anthropic-ai/sdk@0.105.0+ANTHROPIC_API_KEYin Coolifysrc/lib/proposal/schema.ts— Zod schemaProposalContent(20+ sezioni strutturate)src/lib/proposal/agent.ts—generateProposalContent()→ Claude Opus 4.8, JSON validato Zodsrc/lib/proposal/assemble.ts—assembleProposal(): fonde AI + offerta DB + profilo consulentesrc/lib/proposal/profile.ts—CONSULTANT_PROFILE(bio, fatti, testimonianze, legal, nextSteps)proposalstable in DB: id, slug, lead_id, client_id, offer_macro_id, content jsonb, state, accepted_at- Admin pages: lista preventivi, form genera (con pre-fill
?lead_id=X), review bozza, pubblica/elimina
Phase 22: Pagina Pubblica Preventivo + Email (R5)
Goal: Pubblicare la proposta come deck pubblico /preventivo/[slug] con accept/reject.
Mode: ui
Depends on: Phase 21 (proposals table + content)
Requirements: PUB-01, PUB-02 ✅ · PUB-03 ❌ deferred
Plans: 1 plan
Plans:
- 22-01-PLAN.md — ProposalDeck + public page + accept/reject actions
Status: ✅ Complete (2026-06-20) · PUB-03 deferred
What was built:
src/app/preventivo/[slug]/page.tsx— server component pubblico con gestione statisrc/app/preventivo/[slug]/actions.ts—acceptProposal+rejectProposalconaccepted_atimmutabileProposalDeck.tsx— deck client component:h-screen overflow-hidden, keyboard nav, dots- 20 componenti slide: Cover, Vision, Index, ChapterDivider ×5, Strategist, Facts, Testimonials, ProblemNode ×N, SynthesisDiagram, SolutionNode ×N, SolutionSynthesis, Scope, Deliverables, Timeline, Pricing, StagesRecap, ComparisonMatrix, NextSteps, Accept, Closing
- PUB-03 (email Resend) NOT implemented — link va condiviso manualmente; deferred a v2.3 backlog
Milestone Summary
Key Decisions:
- Sales Loop come north-star v2.2: abbandonato workspace post-vendita (Phase 13), revenue stats (Phase 15), Proposal AI v2.1 (16/17) — riscopate come 21+22 con transcript
- AI model:
claude-opus-4-8per qualità copywriting strategico (~$0.44/preventivo) - Output AI: JSON strutturato validato Zod → template fisso → coerenza visiva garantita
proposals.contentcome JSONB snapshot (non riferimento a entità live) → immutabile- Email Resend (PUB-03) deferred: scope minimo funziona, priorità al loop core
Known Gaps at Close:
- PUB-03: invio email Resend non implementato (1 item, vedi backlog v2.3)
profile.ts: testimonianze placeholder, da aggiornare con dati reali
Technical Debt:
- Tabelle legacy
service_catalog/offer_services/offer_micro_servicesancora presenti (deadweight, cleanup futuro) createService/serviceSchemadead code incatalog/actions.tsdrizzle-kit generaterotto da Phase 8 (meta snapshots out of sync) — SQL scritto a mano
Per lo stato corrente del progetto, vedi .planning/ROADMAP.md