Files
clienthub/.planning/milestones/v2.2-ROADMAP.md
T
simone fb1ef95c96 chore: archive v2.2 Sales Loop milestone
- 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>
2026-06-20 18:31:08 +02:00

6.5 KiB
Raw Permalink Blame History

Milestone v2.2: Sales Loop

Status: SHIPPED 2026-06-20 Phases: 1822 (R1R5) 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/analytics fuse 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" in LeadDetail + wiring page.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_KEY in Coolify
  • src/lib/proposal/schema.ts — Zod schema ProposalContent (20+ sezioni strutturate)
  • src/lib/proposal/agent.tsgenerateProposalContent() → Claude Opus 4.8, JSON validato Zod
  • src/lib/proposal/assemble.tsassembleProposal(): fonde AI + offerta DB + profilo consulente
  • src/lib/proposal/profile.tsCONSULTANT_PROFILE (bio, fatti, testimonianze, legal, nextSteps)
  • proposals table 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 stati
  • src/app/preventivo/[slug]/actions.tsacceptProposal + rejectProposal con accepted_at immutabile
  • ProposalDeck.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-8 per qualità copywriting strategico (~$0.44/preventivo)
  • Output AI: JSON strutturato validato Zod → template fisso → coerenza visiva garantita
  • proposals.content come 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_services ancora presenti (deadweight, cleanup futuro)
  • createService/serviceSchema dead code in catalog/actions.ts
  • drizzle-kit generate rotto da Phase 8 (meta snapshots out of sync) — SQL scritto a mano

Per lo stato corrente del progetto, vedi .planning/ROADMAP.md