# 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 ```bash # API de Z.AI (requerido) ZAI_API_KEY=tu_api_key_aqui ANTHROPIC_MODEL=glm-4.7 ``` ### Paso 1: Clonar el repositorio ```bash git clone https://gitea.cbcren.online/renato97/demo.git cd demo ``` ### Paso 2: Configurar variables de entorno Crear archivo `.env`: ```bash ZAI_API_KEY=tu_api_key ``` ### Paso 3: Iniciar contenedores ```bash docker compose up -d --build ``` ### Paso 4: Configurar Caddy (proxy) Agregar al Caddyfile: ```caddy demo.tudominio.com { reverse_proxy localhost:8201 } ``` Reiniciar Caddy: ```bash 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 ```bash curl "http://localhost:8201/stock/search?q=birome" ``` ### Ejemplo de confirmar venta ```bash 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: ```python 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 ```bash docker logs pygmesbot_backend ``` ### Reiniciar servicio ```bash docker restart pygmesbot_backend ``` ### Ver productos en DB ```bash 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