package services import ( "os" "strings" "testing" ) // Todo lo que ve el visitante tiene que quedar guardado, incluido el mensaje // genérico de cuando algo falla. Sin eso pasaban dos cosas, y la segunda es la // grave: // // 1. En Conversaciones se veían las preguntas sin ninguna respuesta, así que // el dueño no se enteraba de que su agente estaba fallando. // 2. Ese historial roto se le reenviaba al modelo en el turno siguiente. Un // modelo que ve cuatro preguntas seguidas sin una sola respuesta se // confunde y vuelve a fallar: el primer error se perpetuaba solo. func TestLaRespuestaAlVisitanteSiempreQuedaGuardada(t *testing.T) { b, err := os.ReadFile("umind_agent_service.go") if err != nil { t.Fatal(err) } fuente := string(b) // El bloque del fallback tiene que guardar. i := strings.Index(fuente, `if finalResponse == "" {`) if i < 0 { t.Fatal("no encontré el bloque de fallback") } bloque := fuente[i:] if j := strings.Index(bloque, "\n\treturn finalResponse"); j > 0 { bloque = bloque[:j] } if !strings.Contains(bloque, "SaveUmindMensaje") { t.Error("el mensaje genérico no se guarda: la conversación queda con preguntas sin respuesta y el historial roto se reenvía al modelo") } // Y el mensaje del visitante también, desde antes del bucle. if !strings.Contains(fuente, `SaveUmindMensaje(agente.ID, sessionID, "user", userText)`) { t.Error("no se guarda el mensaje del visitante") } }