feat(whatsapp): QWEN primary AI backend, Hermes fallback, conversation history, vehicle persistence, demo prompts
- Add QWEN (qwen3.6) as primary AI backend with short system prompt - Hermes remains as fallback with 45s timeout - Increase QWEN timeout to 35s, max_tokens to 4000 - Add conversation history loading from whatsapp_messages (last 4 msgs) - Persist detected vehicle in whatsapp_sessions table - Add 'limpiar chat' / 'nuevo chat' / 'reset' commands to clear history - Fix CSS conflict: rename whatsapp chat-panel classes to wa-chat-panel - Fix JS ID conflicts with chat.js widget (waChatPanel, waChatMessages, etc.) - Improve no-stock response: conversational with alternatives - Split search_query by | for multi-part lookups - Add DEMO_PROMPTS.md and DEMO_PROMPTS_V2.md
This commit is contained in:
181
DEMO_PROMPTS.md
Normal file
181
DEMO_PROMPTS.md
Normal file
@@ -0,0 +1,181 @@
|
||||
# 🧪 Prompts de Prueba — Demo WhatsApp Agent
|
||||
|
||||
> **Fecha:** mañana
|
||||
> **Backend primario:** QWEN (qwen3.6) — ~1-3 segundos
|
||||
> **Fallback:** Hermes (hermes-agent) — ~10-30 segundos si QWEN falla
|
||||
> **Contexto persistente:** vehículo guardado en sesión, historial de últimos 4 mensajes
|
||||
|
||||
---
|
||||
|
||||
## 1. Saludo + búsqueda simple con vehículo
|
||||
|
||||
**Prompt:**
|
||||
```
|
||||
hola, necesito balatas para un Nissan Tsuru 2015
|
||||
```
|
||||
|
||||
**¿Qué validar?**
|
||||
- Responde en ~2-4 segundos
|
||||
- Detecta vehículo: `{"brand": "Nissan", "model": "Tsuru", "year": 2015}`
|
||||
- `search_query`: `Brake Pad` (o similar en inglés)
|
||||
- Muestra resultados de inventario si hay stock
|
||||
|
||||
---
|
||||
|
||||
## 2. Síntoma mecánico (diagnóstico)
|
||||
|
||||
**Prompt:**
|
||||
```
|
||||
mi carro vibra al frenar, que puede ser?
|
||||
```
|
||||
|
||||
**¿Qué validar?**
|
||||
- Responde en ~2-5 segundos
|
||||
- Identifica síntoma: discos de freno / balatas desgastadas
|
||||
- `search_query`: `Brake Disc`
|
||||
- Da diagnóstico + lista de partes probables
|
||||
|
||||
---
|
||||
|
||||
## 3. Tune-up completo (cotización múltiple)
|
||||
|
||||
**Prompt:**
|
||||
```
|
||||
quiero hacer el tune up a mi Renault Duster 2018
|
||||
```
|
||||
|
||||
**¿Qué validar?**
|
||||
- Responde en ~15-20 segundos (el prompt más complejo, paciencia aquí)
|
||||
- Detecta vehículo: `{"brand": "RENAULT", "model": "Duster", "year": 2018}`
|
||||
- `search_query`: `Spark Plug|Air Filter|Oil Filter|Fuel Filter` (separado por `|`)
|
||||
- Muestra tabla de partes recomendadas
|
||||
|
||||
---
|
||||
|
||||
## 4. Seguimiento — "Sí, pásame la cotización"
|
||||
|
||||
**Prompt:**
|
||||
```
|
||||
si, pasame la cotizacion
|
||||
```
|
||||
|
||||
**¿Qué validar?**
|
||||
- **Crítico:** Recuerda el contexto (Renault Duster 2018 + tune-up)
|
||||
- No pida "¿qué vehículo?" de nuevo
|
||||
- `search_query` contiene múltiples partes separadas por `|`
|
||||
- Responde en ~2-5 segundos (muy rápido porque ya tiene historial)
|
||||
|
||||
---
|
||||
|
||||
## 5. Agregar a cotización
|
||||
|
||||
**Prompt:**
|
||||
```
|
||||
cotizar
|
||||
```
|
||||
|
||||
**¿Qué validar?**
|
||||
- Detecta intent de cotización
|
||||
- Agrega la última parte mostrada a la cotización abierta
|
||||
- Responde con conteo de ítems y total parcial
|
||||
- Incluye botón "Enviar Cotización" si se usa web
|
||||
|
||||
---
|
||||
|
||||
## 6. Preguntar por otra parte (contexto mixto)
|
||||
|
||||
**Prompt:**
|
||||
```
|
||||
y cuanto cuesta un alternador para el mismo carro?
|
||||
```
|
||||
|
||||
**¿Qué validar?**
|
||||
- Recuerda "el mismo carro" = Renault Duster 2018
|
||||
- `search_query`: `Alternator`
|
||||
- Muestra precio + stock del alternador
|
||||
|
||||
---
|
||||
|
||||
## 7. Enviar cotización final
|
||||
|
||||
**Prompt:**
|
||||
```
|
||||
enviar cotizacion
|
||||
```
|
||||
|
||||
**¿Qué validar?**
|
||||
- Envía la cotización completa formateada
|
||||
- Muestra todos los ítems agregados con precios
|
||||
- Incluye mensaje: *"Escribe 'sí' para confirmar tu pedido"*
|
||||
|
||||
---
|
||||
|
||||
## 8. Confirmar pedido
|
||||
|
||||
**Prompt:**
|
||||
```
|
||||
si
|
||||
```
|
||||
|
||||
**¿Qué validar?**
|
||||
- Confirma la cotización como pedido
|
||||
- Responde: *"✅ Pedido confirmado! Tu cotización #X fue registrada..."*
|
||||
- Guarda la cotización con estado `confirmed`
|
||||
|
||||
---
|
||||
|
||||
## 9. Limpiar conversación
|
||||
|
||||
**Prompt:**
|
||||
```
|
||||
limpiar chat
|
||||
```
|
||||
|
||||
**¿Qué validar?**
|
||||
- Borra historial de mensajes de la DB
|
||||
- Responde: *"🗑️ Conversación reiniciada. ¡Hola de nuevo! ¿En qué puedo ayudarte?"*
|
||||
- Próximo mensaje debe comportarse como conversación nueva
|
||||
|
||||
---
|
||||
|
||||
## 10. Parte sin stock / no en inventario
|
||||
|
||||
**Prompt:**
|
||||
```
|
||||
necesito un turbo para BMW X5 2022
|
||||
```
|
||||
|
||||
**¿Qué validar?**
|
||||
- Detecta vehículo: `{"brand": "BMW", "model": "X5", "year": 2022}`
|
||||
- Si no hay en inventario, responde de forma conversacional:
|
||||
- *"No encontré ese turbo en stock, pero puedo..."*
|
||||
- Ofrece: pedido por encargo, alternativas, o sugerir tiendas
|
||||
- **NO** responde con mensaje seco tipo *"❌ No tenemos esa parte"*
|
||||
|
||||
---
|
||||
|
||||
## ⚡ Checklist rápido antes de la demo
|
||||
|
||||
- [ ] WhatsApp Bridge está `state: open` (verificar en UI)
|
||||
- [ ] Gunicorn está corriendo (`systemctl status nexus-pos`)
|
||||
- [ ] El QR está escaneado y la instancia está conectada
|
||||
- [ ] Limpiar historial de conversaciones de prueba anteriores
|
||||
- [ ] Probar al menos 3 prompts de los de arriba en vivo
|
||||
- [ ] Tener plan B: si QWEN falla, Hermes responderá (más lento pero funciona)
|
||||
|
||||
## 🚨 Qué hacer si algo falla durante la demo
|
||||
|
||||
1. **Timeout / "El asistente tardó mucho"**
|
||||
- Esperar 10-15 segundos y reenviar el mensaje
|
||||
- QWEN a veces tiene picos de latencia
|
||||
|
||||
2. **El agente "olvida" el vehículo**
|
||||
- Escribir `limpiar chat` y empezar de nuevo
|
||||
- O mencionar el vehículo explícitamente en cada mensaje
|
||||
|
||||
3. **No abre el panel de WhatsApp en la web**
|
||||
- Hard refresh: **Ctrl+F5**
|
||||
- O abrir en pestaña de incógnito
|
||||
|
||||
4. **Error de conexión del Bridge**
|
||||
- En la UI de WhatsApp, clic en **"Conectar WhatsApp"** y re-escanear QR
|
||||
Reference in New Issue
Block a user