Guía · Operación de negocios de servicios
Cómo se comporta en pruebas el ejemplo de canalización de consultas
Revisa cinco casos ejecutados de recepción, duplicados y recuperación, con datos reproducibles y límites claros sobre lo que demuestra un ejemplo en el navegador.
Escrito por Fireflax · 8 minutos de lectura
Revisado por Codex — source and implementation review ·
¿Qué hizo realmente este ejemplo?
El 8 de octubre de 2026 revisamos cinco rutas definidas en el flujo ficticio de consultas de Northstar Plumbing. Cada ruta se ejecutó con las reglas de consultas del repositorio y, por separado, con el paquete descargable del kit inicial. La tabla registra esos resultados concretos; no es un caso de estudio de clientes ni una cifra de confiabilidad en producción.
Alcance de la prueba
Cinco casos por implementación, diez ejecuciones de casos en total. Cada implementación registró cinco aprobados y cero fallidos. Las pruebas se ejecutaron localmente con Node.js 22.23.2, datos sintéticos y sin ningún conector de red. Revisaron las reglas que usa la demo del navegador; no operaron una bandeja de entrada, un CRM ni un servicio de mensajes en vivo.
Los datos y las expectativas se definieron primero.
El dato de prueba completo es Alex Morgan, alex@example.com, Bristol BS1, que pregunta por una llave de la cocina que lleva una semana goteando. El dato de prueba incompleto es Sam Taylor, sam@example.com, sin área y con el mensaje “Can you help?”. Son contactos ficticios.
El caso de duplicado vuelve a enviar la solicitud de Alex con otro nombre visible, texto en mayúsculas y espacios de más. La aprobación repetida intenta reemplazar una respuesta ya aprobada. El caso de recuperación usa el indicador explícito de falla simulada, intenta saltarse la restauración, restaura el mismo registro y luego lo vuelve a aprobar.
| Ruta | Esperado | Observado |
|---|---|---|
| Solicitud completa | Una consulta de plomería para el coordinador de servicio; necesita aprobación antes de completarse. | Ambas ejecuciones: review → completed; un registro; se conservó el texto revisado. |
| Datos faltantes | Pedir el área y el detalle del trabajo; la aprobación no debe dar por resuelta la información faltante. | Ambas ejecuciones: review → awaiting-details; se conservaron los dos datos faltantes. |
| Duplicado normalizado | El mismo correo, área y mensaje con distintas mayúsculas o espacios devuelve el registro existente. | Ambas ejecuciones: mismo ID y un registro; estado e historial sin cambios. Cambiar el nombre visible no alteró la coincidencia. |
| Aprobación repetida | Una segunda aprobación no debe reemplazar la respuesta completada ni agregar historial. | Ambas ejecuciones: el estado completado y el texto aprobado original no cambiaron. |
| Falla y recuperación | Conservar el registro bloqueado y el borrador; impedir que se vuelva a aprobar directamente; restaurar exige una nueva aprobación. | Ambas ejecuciones: blocked → review con la aprobación anterior borrada → completed; un solo registro en todo momento. |
Solicitud completa
Esperado: Una consulta de plomería para el coordinador de servicio; necesita aprobación antes de completarse.
Observado: Ambas ejecuciones: review → completed; un registro; se conservó el texto revisado.
Datos faltantes
Esperado: Pedir el área y el detalle del trabajo; la aprobación no debe dar por resuelta la información faltante.
Observado: Ambas ejecuciones: review → awaiting-details; se conservaron los dos datos faltantes.
Duplicado normalizado
Esperado: El mismo correo, área y mensaje con distintas mayúsculas o espacios devuelve el registro existente.
Observado: Ambas ejecuciones: mismo ID y un registro; estado e historial sin cambios. Cambiar el nombre visible no alteró la coincidencia.
Aprobación repetida
Esperado: Una segunda aprobación no debe reemplazar la respuesta completada ni agregar historial.
Observado: Ambas ejecuciones: el estado completado y el texto aprobado original no cambiaron.
Falla y recuperación
Esperado: Conservar el registro bloqueado y el borrador; impedir que se vuelva a aprobar directamente; restaurar exige una nueva aprobación.
Observado: Ambas ejecuciones: blocked → review con la aprobación anterior borrada → completed; un solo registro en todo momento.
Ejecútalo y compara tu propio resultado.

Descarga el kit inicial 1.0.0, extráelo y sigue su README. Las revisiones incluidas contienen los estados y las comprobaciones esperados. Ejecuta node verify.mjs para generar un informe nuevo con los datos, las expectativas y el historial observado de los cinco casos. Si un caso falla, el comando termina con error.
La ejecución del código fuente del repositorio llamó directamente a las funciones auxiliares actuales en TypeScript. La ejecución del kit inicial cargó el JavaScript empaquetado sin importar archivos del repositorio. Sus definiciones de prueba compartidas hacen que la comparación sea reproducible; las dos ejecuciones no son una prueba independiente de que cada regla posible sea correcta.
El paquete también tiene un ensayo de pausa por separado.
El envoltorio de línea de comandos del paquete agrega almacenamiento en un archivo local y controles de pausa y reanudación. Su ensayo de once comandos inicializó un registro, simuló una falla, pausó, intentó una restauración bloqueada, reanudó, restauró, aprobó dos veces y reinició. La restauración en pausa terminó con error a propósito y dejó el estado sin cambios. Reanudar no volvió a ejecutar ninguna acción.
Es una revisión negativa exitosa, no una prueba fallida sin reportar. node cli-check.mjs ejecuta la secuencia en una carpeta temporal y luego la elimina. Estas funciones de CLI no están en la demo del navegador.
Lo que queda sin demostrar
La memoria de duplicados del navegador desaparece al reiniciar, recargar o cambiar de flujo. El kit inicial guarda un archivo local, pero no tiene bloqueo multiusuario ni un almacén de registros para producción. Un mensaje modificado puede ser una consulta nueva; esta clave no puede decidir si dos solicitudes redactadas de forma distinta describen el mismo trabajo.
Una implementación real necesitaría identificadores duraderos de solicitudes y acciones, una decisión sobre las solicitudes modificadas y revisiones del destino antes de reintentar. Son adiciones necesarias, no soluciones demostradas por estos resultados locales. La falla simulada no envía nada, así que no prueba una conexión que actuó con éxito y luego perdió su confirmación.
De estos cinco casos no se desprende ningún ahorro de mano de obra para clientes, tasa de conversión, integración en vivo, disponibilidad ni entrega exactamente una vez. Por separado, el conjunto de pruebas unitarias existente del repositorio aprobó 21 revisiones de la función auxiliar de consultas. Ese conjunto más amplio es una cobertura útil contra regresiones, no 21 pruebas con clientes ni 21 sesiones de navegador.
Fuentes y notas de revisión
Redactado con Codex y revisado con base en pruebas ejecutadas del ejemplo ficticio, el código fuente y un ensayo independiente del kit inicial hecho por Codex. Estos resultados no confirman una integración en vivo ni resultados de clientes.
- Prueba guardada del asistente del navegador
Datos, expectativas y estados observados en la ejecución real del código fuente.
- Prueba el ejemplo de consultas
Reproduce las rutas de revisión y de falla con datos ficticios.