From 86c86cd42036a8fc7d057971f845eff98d9d984d Mon Sep 17 00:00:00 2001 From: Simone Cavalli Date: Sat, 20 Jun 2026 12:24:52 +0200 Subject: [PATCH] =?UTF-8?q?docs(21):=20capture=20phase=20context=20?= =?UTF-8?q?=E2=80=94=20AI=20preventivo=20struttura=20sezioni=20fisse,=203?= =?UTF-8?q?=20tier?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../21-CONTEXT.md | 122 ++++++++++++++++++ .../21-DISCUSSION-LOG.md | 40 ++++++ 2 files changed, 162 insertions(+) create mode 100644 .planning/phases/21-agente-ai-generazione-preventivo/21-CONTEXT.md create mode 100644 .planning/phases/21-agente-ai-generazione-preventivo/21-DISCUSSION-LOG.md diff --git a/.planning/phases/21-agente-ai-generazione-preventivo/21-CONTEXT.md b/.planning/phases/21-agente-ai-generazione-preventivo/21-CONTEXT.md new file mode 100644 index 0000000..808af25 --- /dev/null +++ b/.planning/phases/21-agente-ai-generazione-preventivo/21-CONTEXT.md @@ -0,0 +1,122 @@ +# Phase 21: Agente AI — generazione preventivo - Context + +**Gathered:** 2026-06-20 +**Status:** Ready for planning + + +## Phase Boundary + +L'admin apre il dettaglio di un lead, seleziona un'offerta e lancia la generazione: Claude legge i transcript del lead e i dati dell'offerta (tutti e 3 i tier) e produce una bozza di preventivo strutturata in sezioni fisse. L'admin rivede il testo in una textarea e salva la bozza prima che diventi pubblicabile in Phase 22. + +**In scope:** prompt engineering + chiamata API Claude + bozza strutturata in sezioni + form di revisione/editing + tabella `proposals` nel DB +**Out of scope:** pagina pubblica `/preventivo/[slug]` (Phase 22), invio email (Phase 22), accettazione/rifiuto cliente (Phase 22) + + + + +## Implementation Decisions + +### Struttura output AI + +- **D-01:** Claude produce sezioni strutturate fisse, non testo libero. Il prompt specifica esattamente i blocchi da riempire. +- **D-02:** Le sezioni del preventivo generato sono, in ordine: + 1. **Situazione Attuale** — Claude descrive la situazione del cliente basandosi sul contenuto dei transcript (cosa sta vivendo, i pain emersi nelle call) + 2. **La Proposta** — Presentazione personalizzata dell'offerta: perché questa offerta è giusta per questo cliente specifico + 3. **Opzione A / Opzione B / Opzione C** — Una sotto-sezione per ogni tier, con lista dei servizi inclusi e prezzo pubblico del tier + 4. **Prossimi Passi** — Call to action finale (Claude scrive testo standard, admin può editare) +- **D-03:** L'admin **non sceglie un tier** prima della generazione. Claude genera tutti e 3 i tier in un unico documento. Il cliente leggerà le 3 opzioni e sceglierà. + +### Claude's Discretion + +Le seguenti aree non sono state discusse — Claude ha flessibilità: + +- **Builder location:** Entry point nel LeadDetail esistente (`src/components/admin/leads/LeadDetail.tsx`) — bottone "Genera Preventivo" che apre un modal o sezione inline con selezione offerta + trigger generazione. È il posto più naturale perché i transcript del lead sono già in contesto. +- **UX generazione:** Fire-and-wait con spinner. Nessun streaming. L'admin clicca "Genera", vede uno stato di caricamento, poi il testo appare. Più semplice e affidabile per il caso d'uso (generazione ~5-15 sec). +- **Editor bozza:** Textarea non-formattata. Il preventivo generato appare in una `