US-055 — Cancelar y reiniciar flujo
Detalle de la historia¶
Historia¶
Como cliente en medio de un flujo conversacional con el agente, quiero poder decir "cancelar" o "empecemos de nuevo" para salir del flujo o reiniciarlo, para recuperarme cuando la conversación tomó un rumbo equivocado sin tener que explicar en qué paso estoy.
Persona de usuario¶
Aplica a todo cliente dentro de un flujo multi-paso (cotización, registro, aprobación, completar formulario de embarque, reportes con refinamiento) que quiera abandonar o volver a empezar el flujo.
Contexto de negocio¶
Los flujos conversacionales guían al cliente paso a paso (ver US-008, guía dinámica de cotización, por ejemplo). A veces el cliente se da cuenta a la mitad de que pidió algo distinto, se equivocó, o simplemente prefiere empezar de cero. Sin un mecanismo explícito para cancelar o reiniciar, el cliente tendría que seguir contestando preguntas que no quiere responder o forzar una salida "con palabras" que el agente puede o no interpretar bien.
Las expresiones "cancelar", "empecemos de nuevo", "reiniciar" y equivalentes son una señal conversacional explícita (ver PR-195). FleteChat las interpreta consistentemente: confirma con el cliente qué quiere hacer y luego cancela o reinicia. No las interpreta ambiguamente y tampoco las ignora.
Diálogo de referencia¶
Cliente cancela a mitad de una cotización¶
Agente: Anotado el origen Miami. ¿Cuál es el destino?
Cliente: Mejor cancele, no era lo que quería.
Agente: Entendido. Cancelo la cotización que estábamos armando. ¿Quiere empezar una nueva o hay algo distinto en lo que le ayude?
Cliente pide reiniciar el flujo¶
Agente: ¿Cuál es el peso estimado del envío?
Cliente: No, empecemos de nuevo.
Agente: Perfecto, reiniciamos. ¿Qué necesita cotizar esta vez? Cuénteme origen, destino y el tipo de carga así lo armo desde cero.
Cliente pide cancelar fuera de un flujo activo¶
Cliente: Cancelar.
Agente: Por ahora no tenemos ningún flujo activo en esta conversación. Cuando necesite algo, dígame y le ayudo.
Criterios de aceptación¶
Detección de la intención¶
- FleteChat detecta las intenciones de cancelar y reiniciar ante expresiones como "cancelar", "cancelá", "cancel", "empecemos de nuevo", "empezar de nuevo", "reiniciar", "olvidémoslo", "dejá", y variantes naturales equivalentes. Las palabras base son configurables (ver PR-195).
- La detección funciona independientemente del paso del flujo; no se limita a puntos específicos ni requiere un comando exacto.
Diferencia entre cancelar y reiniciar¶
- Cancelar cierra el flujo en curso sin reemplazarlo; el cliente queda en conversación libre con el agente. El agente confirma la cancelación y pregunta si desea hacer algo distinto.
- Reiniciar cierra el flujo en curso y arranca uno nuevo del mismo tipo (por ejemplo, cotización nueva desde el primer paso). El agente confirma el reinicio y pide el primer dato.
Preservación de datos¶
- Cancelar o reiniciar no persiste datos parciales del flujo en curso (por ejemplo, no guarda una "cotización borrador"): v1.0 no expone persistencia de borradores. El comportamiento es consistente con la memoria persistente de la conversación (ver US-054): el agente recuerda lo que el cliente dijo para contexto, pero no genera entidades de negocio a medias.
Caso sin flujo activo¶
- Si el cliente pide cancelar o reiniciar sin flujo activo en ese momento, el agente responde con un mensaje amable que lo informa y pregunta qué necesita.
Audit log¶
- Cada cancelación o reinicio queda registrado en la memoria de la conversación con motivo y timestamp, por si el operador (en caso de handoff posterior) necesita ver qué pasó.
Edge cases¶
- Cliente dice "cancelar" con tono ambiguo (por ejemplo, tras una confirmación del agente que no aplica al flujo activo). El agente pide confirmación explícita antes de cancelar: "¿quiere que cancelemos la cotización en curso?".
- Cliente cancela y, al siguiente mensaje, reanuda donde estaba. El agente interpreta como flujo nuevo; no reanuda la cancelación (el cliente puede proveer los datos de nuevo si quiere retomar).
- Cliente dice "empecemos de nuevo" durante la aprobación formal de una cotización (flujo crítico, US-012). El agente confirma explícitamente que se cancelará la aprobación; si el cliente confirma, cancela; si no, continúa.
- Cliente dice "cancelar" durante un handoff con operador humano. Esta historia cubre flujos automáticos. En handoff, la cancelación de la sesión humana se maneja según US-033 y US-036 (el operador decide).
- Múltiples cancelaciones encadenadas ("cancelar, cancelar, cancelar"). Una sola cancelación basta; las repeticiones se interpretan como confirmación del mismo acto.
Tamaño, prioridad y tipo¶
- Tamaño: S
- Prioridad: P1 — dignidad conversacional básica; su ausencia deja al cliente atrapado.
- Tipo: feature
Premisas¶
La historia está redactada bajo las siguientes premisas. Si alguna cambia, la historia debe revisarse y ajustarse en consecuencia. Todas deben ser confirmadas por el cliente antes de cerrar la historia.
- PR-195 — Palabras clave de cancelación y reinicio configurables. El conjunto de expresiones que FleteChat interpreta como "cancelar" o "reiniciar" es configurable por FleteChat desde parámetros globales (ver US-046). El agente detecta también variantes naturales equivalentes sin que estén listadas explícitamente, usando la capacidad del motor conversacional.
- PR-219 — La cancelación conversacional no reversa flujos ya formalizados. La cancelación y el reinicio de US-055 aplican únicamente a flujos conversacionales en curso (recolección de datos de cotización, captura de formulario, confirmación pendiente). No revierten entidades de negocio ya formalizadas: una cotización aprobada formalmente (US-012 Paso 3), un embarque emitido, un consentimiento registrado o una solicitud Ley 81 en trámite no se deshacen con "cancelá". Cuando el cliente pide cancelar algo de ese tipo, el agente lo reconoce, explica que esa acción requiere handoff con operador y ofrece transferir según US-033. Esto también aplica a la cotización tras click de aprobación formal aunque el cliente intente revocar segundos después.
- PR-220 — El borrador del formulario operativo es independiente de la cancelación conversacional. El borrador local del formulario público (ver historia de formulario de datos operativos, PR-077) vive en el contexto del enlace firmado y su ciclo de vida depende de la vigencia de la cotización asociada, no de la conversación por WhatsApp. Si el cliente dice "cancelá" mientras tiene el formulario a medio llenar, FleteChat cancela el flujo conversacional y pregunta explícitamente si además desea descartar el borrador del formulario, no lo descarta por iniciativa propia.
Refinamiento y Definition of Ready¶
Notas¶
| Fecha | Participantes | Acuerdo / Nota |
|---|---|---|
| 2026-04-19 | Kaeus | Versión inicial. |
| 2026-04-20 | Kaeus | Aprobación interna: pase a 🔵 Refinada. |
| 2026-04-20 | Kaeus | Se añaden PR-219 (cancelación no reversa flujos formalizados; requiere handoff) y PR-220 (borrador del formulario no se descarta automáticamente; el agente pregunta). Resolución de hallazgos P6-05 y P6-06 de la revisión exhaustiva. |
Checklist¶
- ✅ Historia escrita en formato Como / Quiero / Para
- ✅ Persona de usuario identificada
- ✅ Contexto de negocio documentado
- ✅ Criterios de aceptación observables y pass/fail
- ✅ Edge cases relevantes listados
- ✅ Tamaño y prioridad asignados
- ⬜ Premisas PR-195, PR-219 y PR-220 confirmadas por el cliente
- ⬜ Reglas de negocio aplicables aprobadas
- ⬜ Requerimientos funcionales aplicables aprobados
- ⬜ Historia aprobada formalmente por el cliente