Skip to content

fix: reparar sesiones corruptas (crash) + mejoras UX detectadas en conversaciones reales - #10

Merged
vgpastor merged 1 commit into
mainfrom
fix/session-repair-and-ux
Jul 7, 2026
Merged

fix: reparar sesiones corruptas (crash) + mejoras UX detectadas en conversaciones reales#10
vgpastor merged 1 commit into
mainfrom
fix/session-repair-and-ux

Conversation

@vgpastor

@vgpastor vgpastor commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Correcciones a partir de la revisión de todas las conversaciones.

P0 — Crash que bloqueaba la sesión 🔴

Un run cortado a media tool-call dejaba un function_call_output huérfano (sin su function_call) en el historial; OpenAI rechazaba cada turno (No tool call found for function call output) y el usuario quedaba tirado (visto en vivo, 2 turnos seguidos rotos).

  • sanitizeItems: elimina pares de tool incompletos en cualquier posición, en cada guardado y al cargar (repara ficheros ya corruptos).
  • Red de seguridad en ConversationService: si aun así llega el error, reinicia la sesión y pide repetir, en vez de fallar en silencio.

P1 — Donación en un punto no elegido 🟠

El agente auto-elegía el punto de acopio ("¿en qué punto lo registraste? yo no dije ninguno"). Ahora debe confirmar el punto con el usuario antes de registrar.

P2 — Varios 🟡

  • Hacer público un recurso: el bot daba vueltas sin saber el flujo. Añadidas rg_verify_resource y rg_publish_resource (endpoints reales) + instrucción.
  • Inventario ≠ necesidades: instrucción para no confundirlos.
  • Copy de botón neutral ("opción con id" en vez de "centro con ID").
  • Identidad: no dar a entender que hace login con un teléfono tecleado si ya está autenticado.

Verificación

  • tsc limpio · Tests 90/90 (nuevos: sanitizeItems, recuperación de sesión, detector de error, registro de tools).

…s UX de conversación

Detectado revisando TODAS las conversaciones reales.

P0 — Crash que bloqueaba la sesión: un run cortado a media tool-call dejaba
un function_call_output huérfano (sin su call) en el historial, y OpenAI
rechazaba CADA turno ('No tool call found for function call output'). El
usuario quedaba tirado. Fix: sanitizeItems quita pares de tool incompletos
en cualquier posición (no solo al inicio), en cada guardado y al cargar
(reparando ficheros ya corruptos). Red de seguridad: si aun así llega el
error, ConversationService reinicia la sesión y pide repetir en vez de
fallar en silencio.

P1 — Donación en punto no elegido: el agente auto-elegía el punto de acopio
sin preguntar. Instrucción: nunca elegir el punto por su cuenta; confirmarlo
antes de registrar.

P2 — Hacer público un recurso: el bot daba vueltas (validar/verificar/publicar)
sin tools. Añadidas rg_verify_resource (POST /resources/{id}/verify) y
rg_publish_resource (POST /resources/{id}/publish) + instrucción del flujo.
Aclarado inventario != necesidades. Copy de botón neutral ('opción con id'
en vez de 'centro con ID'). Honestidad de identidad ante 'haz login con +34…'
estando ya autenticado.

Tests 83->90.
@vgpastor
vgpastor merged commit 612259e into main Jul 7, 2026
2 checks passed
@vgpastor
vgpastor deleted the fix/session-repair-and-ux branch July 7, 2026 20:24
@vgpastor
vgpastor restored the fix/session-repair-and-ux branch July 7, 2026 20:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant