fix(agent): ubicación real en búsquedas, sin login para consultar, y donaciones por el flujo correcto - #8
Merged
Conversation
…cas, y donaciones por el flujo correcto
Detectado en conversaciones reales (WhatsApp):
- El agente alucinaba coordenadas en búsquedas 'cerca de mí' y presentaba
distancias falsas. Ahora exige ubicación real (compartida o geocodificada)
y, si no la tiene, la pide; nunca inventa lat/lng ni usa una por defecto.
- Forzaba login para consultar recursos/necesidades públicas. Se aclara que
consultar/buscar nunca requiere login; solo hace falta la ubicación.
- Las donaciones ('quiero llevar agua') se mapeaban a rg_record_inventory_entry
(acción de staff, permiso intake:receive) -> 403. Se añaden tools nuevas:
rg_preregister_donation (POST /emergencies/{id}/donation-intakes, pública) y
rg_submit_offer (POST /emergencies/{id}/offers, donante autenticado), y se
instruye al agente a usarlas. Copy honesto ante 403 de permiso (no 'temporal').
…ntar por keyword) En una conversación real 'comida para bebés' devolvía 0 y el agente concluía que no existía, cuando el catálogo sí tiene 'Fórmula para bebé', 'Compotas / purés infantiles', 'Cereal ... bebé', etc. El parámetro q de /supplies es de autocompletado (por palabra/prefijo): buscar la frase entera no casa. Se instruye al agente a buscar con una sola palabra clave (el sustantivo), a reintentar con sinónimos/singular y a filtrar por categorySlug (los productos de bebé están en hygiene_infantile) antes de rendirse.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Corrige tres problemas detectados en conversaciones reales de WhatsApp (sesión …5772).
1. 🗺️ El agente inventaba la ubicación
En "busca los que estén cerca de mí" sin ubicación, el agente alucinaba coordenadas para rellenar los
lat/lngobligatorios derg_find_nearby_resourcesy mostraba distancias falsas ("428 m"). Nueva instrucción tajante: usar solo ubicación real (compartida o víarg_geocode); si no hay, pedirla y no llamar a la búsqueda. Nunca inventar lat/lng ni usar una por defecto.2. 🔒 Forzaba login para consultar
Las tools públicas no piden auth en el código, pero el agente exigía login para "ver qué hay cerca". Se aclara: consultar/buscar nunca requiere login; para "cerca de mí" solo hace falta la ubicación, no la identidad.
3. 📦 Donaciones fallaban con 403
"Quiero llevar agua" se mapeaba a
rg_record_inventory_entry(POST /resources/{id}/inventory-entries, permisointake:receivede staff) → 403 Missing permission. Se añaden las tools correctas:rg_preregister_donation→POST /emergencies/{id}/donation-intakes(pública, llevar material a un punto).rg_submit_offer→POST /emergencies/{id}/offers(donante autenticado).Y se instruye al agente a usarlas en vez de la de inventario. Copy honesto ante 403 de permiso (ya no dice "temporal, inténtalo de nuevo").
Verificación
tsc --noEmitlimpio.Al mergear a
mainse auto-despliega en srv07.4. 🔎 Búsqueda de catálogo se rendía a la primera
"comida para bebés" devolvía 0 y el agente concluía que no existía — pero el catálogo sí tiene "Fórmula para bebé", "Compotas / purés infantiles", "Cereal … bebé", etc. El
qdeGET /supplieses de autocompletado (palabra/prefijo, no semántico): la frase entera no casa. Se instruye al agente a buscar con una palabra clave (el sustantivo), reintentar con sinónimos/singular y filtrar porcategorySlug(los productos de bebé están enhygiene_infantile) antes de rendirse. También se documenta esto en la descripción derg_search_supplies.