From 0b46de89f204788f90d931e4620dd5da1323f28b Mon Sep 17 00:00:00 2001 From: Carlos Narro Date: Thu, 4 Jun 2026 17:01:21 +0200 Subject: [PATCH] =?UTF-8?q?A=C3=B1ade=20docs/estados-flujo.html:=20flujos?= =?UTF-8?q?=20de=20estado=20por=20canal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Referencia visual que separa las 4 dimensiones de estado (pipeline_stage, lead_estado, estado_wa, estado_conversacion del bot) y dibuja el flujo de formulario/WhatsApp/llamada sobre ellas, para decidir el modelado del estado de conversación de Luisa. Co-Authored-By: Claude Opus 4.8 --- docs/estados-flujo.html | 207 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 207 insertions(+) create mode 100644 docs/estados-flujo.html diff --git a/docs/estados-flujo.html b/docs/estados-flujo.html new file mode 100644 index 0000000..d17d30b --- /dev/null +++ b/docs/estados-flujo.html @@ -0,0 +1,207 @@ + + + + + +Reformix — Flujos de estado por canal + + + +
+

Reformix — Flujos de estado por canal

+

El lío viene de mezclar varias "estados" que en realidad son 4 dimensiones independientes. Aquí están separadas y el flujo de cada canal sobre ellas. DB única; el lead se crea siempre en el form web.

+ +

1 · Las 4 dimensiones de estado (ortogonales)

+
+
+

pipeline_stage

+

Avance TÉCNICO en el funnel. Lo comparten los 3 canales y es lo que ve el panel. Lo gestiona la app/EP, no el bot.

+
+ form_completadofotos_subidasprellamada_enviadallamada_completadarender_generadopresupuesto_generadowhatsapp_entregado +
+
+
+

lead_estado

+

Estado COMERCIAL / CRM. Lo lleva el reformista (y algún automatismo). Independiente del canal.

+
+ nuevocontactadovisita_agendadapresupuesto_enviadoganadoperdido +
+
+
+

estado_wa

+

SOLO entrega del último mensaje de WhatsApp (técnico, por-mensaje). No es "en qué punto va la conversación".

+
+ sin_enviarenviadoentregadoleidofallido +
+
+
+

estado_conversacion (NO existe aún)

+

En qué paso va Luisa en la cualificación. Hoy vive solo dentro del bot. La decisión es si lo persistimos.

+
+ aperturaespaciotamañoestilourgenciapresupuestopide_fotoscompletado +
+
+
+ +

2 · Flujo de cada canal sobre esas dimensiones

+
+ + +
+
📝 Formulario web
+
+
Cliente deja datos (crearLead)
nombre · tel · email · opt-ins
form_completadonuevo
+
+
Rellena por zonas + sube fotos
guardarDetallesYFotos → lead_fotos (antes) + lead_notas
fotos_subidas
+
+
Presupuesto orientativo al instante
motor de presupuesto + señal perfilCompleto
presupuesto_generado
+
+
Converge en calificación →
contactado
+
No usa
estado_wa · estado_conversacion (no hay chat)
+
+
+ + + + + +
+
📞 Llamada
+
+
Lead ya existe (del form) → pide llamada
ahora / programar
prellamada_enviadanuevo
+
+
Bot de llamada (externo)
registra intento en intentos_contacto
llamada_completada
+
resultado_contacto
exitosono_contestaocupadorechaza
+
+
+
Pide fotos por WA o email→formulario
leads.fotos_solicitadas_at
enviado
+
+
Fotos recibidas → EP ingesta
lead_fotos (antes) + worker
fotos_subidas
+
+
Converge en calificación →
contactado
+
+
+
+ + +

3 · Convergencia (los 3 canales acaban igual)

+
+
+ Calificaciónlead_calificacion (score + A/B/C/D) + visita_agendada + render_generadopresupuesto_generado + whatsapp_entregadopresupuesto_enviado + ganado / perdido testimonio +
+
+ + +

4 · La decisión a tomar

+
+

¿WhatsApp necesita "otros estados"? Sí, pero ojo a CUÁL:

+
    +
  • estado_wa (ya lo tenemos): es solo si el mensaje llegó/se leyó. Útil pero de bajo nivel.
  • +
  • estado_conversacion (Luisa): esto es lo que de verdad falta si queremos saber "por qué paso va el chat" y poder retomarlo si se corta. Hoy NO está en la DB.
  • +
  • El diagrama del compañero ponía estado_wa = nuevo → mezcla los dos conceptos. nuevo no es entrega de mensaje, es "conversación sin empezar".
  • +
+
+
+

Mi recomendación

+
    +
  • pipeline_stage = única fuente del avance del lead (lo pinta el panel). Lo escribe la app/EP. El bot NO lo toca.
  • +
  • lead_estado = comercial, lo lleva el reformista.
  • +
  • estado_wa = déjalo solo para entrega de mensaje (sin_enviar…leido). No metas "nuevo" ahí.
  • +
  • estado_conversacion del bot: 2 opciones — +
    (a) vive SOLO dentro del bot/n8n (no lo persistimos en nuestra DB) → más simple, suficiente para la demo; +
    (b) lo persistimos como columna nueva leads.bot_step (o tabla) si queremos verlo en el panel / retomar conversaciones. ← esto es lo que hay que decidir.
  • +
+
+
+ +