Persiste bot_step + handoff de WhatsApp para Simón

- Migración 0011: leads.bot_step (TEXT) = paso actual de la conversación del
  bot (Luisa), para verlo en el panel y poder retomar chats cortados. TEXT (no
  enum) para que el bot evolucione su vocabulario sin migración.
- docs/handoff-whatsapp-simon.md: spec de integración del bot (DB única, lead
  desde el form, reparto DB-directa vs EP, tablas que escribe, alineación de
  enums/tipos a los nuestros, bot_step, webhooks y conectividad).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Carlos Narro
2026-06-04 19:14:13 +02:00
parent f9d112ecaa
commit 6d8fc56fb1
6 changed files with 2558 additions and 0 deletions

View File

@@ -149,6 +149,7 @@ CREATE TABLE "leads" (
"taste_text" text,
"preferences_snapshot" jsonb,
"estado_wa" "estado_wa",
"bot_step" text,
"canal_origen" "canal_origen",
"espacio" text,
"rango_m2" text,

View File

@@ -0,0 +1 @@
ALTER TABLE "leads" ADD COLUMN "bot_step" text;

File diff suppressed because it is too large Load Diff

View File

@@ -78,6 +78,13 @@
"when": 1780584271011,
"tag": "0010_square_vulture",
"breakpoints": true
},
{
"idx": 11,
"version": "7",
"when": 1780593183911,
"tag": "0011_warm_post",
"breakpoints": true
}
]
}

View File

@@ -250,6 +250,10 @@ export const leads = pgTable(
// --- Flujo WhatsApp/llamada (esquema reformix-full; aditivos, los rellena el bot/Luisa).
// estadoWa nullable: null = aún sin enviar (el "nuevo" del diagrama).
estadoWa: estadoWa('estado_wa'),
// Paso actual de la conversación del bot (Luisa). TEXT (no enum) para que el bot evolucione
// su vocabulario sin migración. Valores sugeridos: apertura · espacio · tamano · estilo ·
// urgencia · presupuesto · pide_fotos · fotos_recibidas · completado · no_viable · abandonado.
botStep: text('bot_step'),
canalOrigen: canalOrigen('canal_origen'),
espacio: text('espacio'), // extracción en crudo de Luisa (se normaliza a tipoReforma)
rangoM2: text('rango_m2'), // crudo (se normaliza a m2Suelo)