- Nueva tool verificar_stock_kit() para calcular cuántos kits se pueden armar - Nueva función db_verificar_stock_kit() que verifica stock de todos los productos - Calcula kits_posibles basado en el producto con menor stock relativo - Actualiza skill armar_kits.md con proceso de verificación obligatoria - Ahora advierte antes de vender: 'Solo podés armar X kits, pediste Y' - Prevents ventas parciales no deseadas de kits
PymesBot Demo - Asistente de Ventas con IA
Demo funcional de asistente de ventas para librería con integración de IA.
Características
- Chat en tiempo real con WebSocket
- Búsqueda de productos en base de datos SQLite
- Confirmación de ventas
- IA integrada con Z.AI (GLM-4.7)
- Interfaz web responsive
Tech Stack
- Backend: FastAPI + Python 3.11
- Base de datos: SQLite
- Frontend: HTML/JS vanilla
- IA: Z.AI API (GLM-4.7)
- Proxy: Caddy
Estructura
pymesbot/
├── backend/
│ ├── main.py # FastAPI app
│ ├── Dockerfile # Imagen Docker
│ ├── requirements.txt # Dependencias
│ └── templates/
│ └── chat.html # Interfaz
└── data/ # Base de datos SQLite
Deployment
Prerrequisitos
- Docker y Docker Compose
- Acceso a API de Z.AI (u otro provider)
- Servidor con Caddy (u otro proxy)
Variables de Entorno
# API de Z.AI (requerido)
ZAI_API_KEY=tu_api_key_aqui
ANTHROPIC_MODEL=glm-4.7
Paso 1: Clonar el repositorio
git clone https://gitea.cbcren.online/renato97/demo.git
cd demo
Paso 2: Configurar variables de entorno
Crear archivo .env:
ZAI_API_KEY=tu_api_key
Paso 3: Iniciar contenedores
docker compose up -d --build
Paso 4: Configurar Caddy (proxy)
Agregar al Caddyfile:
demo.tudominio.com {
reverse_proxy localhost:8201
}
Reiniciar Caddy:
docker exec caddy-ingress caddy reload
API Endpoints
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /health |
Health check |
| GET | /stock/search?q=producto |
Buscar productos |
| POST | /venta/confirmar |
Confirmar venta |
| GET | /stats/ventas?periodo=hoy |
Estadísticas |
| WS | /chat/ws/{session_id} |
Chat en tiempo real |
Ejemplo de búsqueda de productos
curl "http://localhost:8201/stock/search?q=birome"
Ejemplo de confirmar venta
curl -X POST "http://localhost:8201/venta/confirmar" \
-H "Content-Type: application/json" \
-d '{
"producto_id": 1,
"cantidad": 2,
"precio_vendido": 850,
"vendedor": "test"
}'
Credenciales
- PIN vendedor: 1234
- Admin: /admin (password: admin123)
Configuración de IA
El sistema usa la API de Z.AI directamente. Para cambiar el modelo o API:
Editar main.py línea ~40:
ZAI_API_KEY = "tu_api_key"
ZAI_API_URL = "https://api.z.ai/api/anthropic/v1"
MODEL = "glm-4.7"
Known Issues / Bugs
1. Búsqueda limitada
- Problema: La búsqueda en DB solo soporta términos simples
- Solución: Usar la IA para búsquedas más complejas
2. Plurales no detectados
- Problema: "lápices" no encuentra "lápiz"
- Workaround: El sistema ahora tiene mapeo de plurales básico
3. Timeout en WebSocket
- Problema: La conexión puede cerrarse por inactividad
- Solución: El frontend reconecta automáticamente
4. Scope operator.write en OpenClaw
- Problema: OpenClaw Gateway requiere scopes específicos para usar el agente
- Solución actual: Se usa la API de Z.AI directamente en lugar de OpenClaw Gateway
- Nota: Para usar OpenClaw Gateway, configurar con
scopes: ["operator.read", "operator.write", "agent"]
5. PicoClaw no conecta
- Problema: PicoClaw no reconoce modelos MiniMax
- Solución: Usar OpenClaw o API directa
Mantenimiento
Ver logs
docker logs pygmesbot_backend
Reiniciar servicio
docker restart pygmesbot_backend
Ver productos en DB
docker exec pygmesbot_backend python3 -c "
import sqlite3
conn = sqlite3.connect('/app/data/stock.db')
for row in conn.execute('SELECT nombre, stock FROM productos LIMIT 5'):
print(row)
"
##Licencia
MIT
Description
Languages
HTML
100%