- Stack completo con Mattermost, NocoDB y Sales Bot - Procesamiento OCR de tickets con Tesseract - Sistema de comisiones por tubos de tinte - Comandos slash /metas y /ranking - Documentación completa del proyecto Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
5.3 KiB
5.3 KiB
Guía de Instalación
Requisitos del Sistema
Hardware Mínimo
- CPU: 2 cores
- RAM: 4 GB
- Disco: 20 GB
Software
- Docker 20.10+
- Docker Compose 2.0+
- Git
Red
- Puerto 5000 (Sales Bot)
- Puerto 8065 (Mattermost)
- Puerto 8080 (NocoDB)
Instalación Paso a Paso
1. Clonar el Repositorio
git clone https://git.consultoria-as.com/<usuario>/stacks.git
cd stacks
2. Configurar Variables de Entorno
Copiar el archivo de ejemplo y editar:
cd sales-bot
cp .env.example .env
nano .env
Configurar las siguientes variables:
# Mattermost
MATTERMOST_URL=http://<IP>:8065
MATTERMOST_BOT_TOKEN=<tu_token>
MATTERMOST_TEAM_NAME=sales
MATTERMOST_WEBHOOK_SECRET=<tu_secret>
MATTERMOST_WEBHOOK_URL=http://<IP>:8065/hooks/<hook_id>
# NocoDB
NOCODB_URL=http://<IP>:8080
NOCODB_TOKEN=<tu_token>
NOCODB_TABLE_VENDEDORES=<table_id>
NOCODB_TABLE_VENTAS=<table_id>
NOCODB_TABLE_VENTAS_DETALLE=<table_id>
NOCODB_TABLE_METAS=<table_id>
# Flask
FLASK_PORT=5000
LOG_LEVEL=INFO
TZ_OFFSET=-6
3. Iniciar Mattermost
cd ../mattermost
docker compose up -d
Esperar a que inicie completamente:
docker compose logs -f
# Esperar mensaje "Server is listening"
Acceder a http://:8065 y completar la configuración inicial:
- Crear cuenta de administrador
- Crear team "sales"
- Crear canales necesarios
4. Configurar Bot en Mattermost
-
Ir a Integraciones > Bot Accounts
-
Crear nuevo bot:
- Username:
salesbot - Copiar el token generado
- Username:
-
Ir a Integraciones > Outgoing Webhooks
-
Crear webhook:
- Canal: canal de ventas
- URL:
http://<IP>:5000/webhook/mattermost - Copiar el token
-
Ir a Integraciones > Slash Commands
-
Crear comandos:
/metas→http://<IP>:5000/comando/metas/ranking→http://<IP>:5000/comando/ranking
5. Iniciar NocoDB
cd ../nocodb
docker compose up -d
Acceder a http://:8080 y:
- Crear cuenta
- Crear base de datos
- Crear tablas (ver estructura en docs/ARQUITECTURA.md)
- Obtener API token en Settings
6. Configurar Tablas en NocoDB
Crear las siguientes tablas:
Vendedores:
- Id (Auto)
- username (Text, Required)
- nombre_completo (Text)
- email (Email)
- meta_diaria_tubos (Number, Default: 3)
- activo (Checkbox, Default: true)
- fecha_registro (DateTime)
Ventas:
- Id (Auto)
- vendedor_username (Text, Required)
- monto (Currency)
- cliente (Text)
- fecha_venta (DateTime)
- estado (SingleSelect: pendiente, completada, cancelada)
- canal (Text)
- mensaje_id (Text)
- imagen_ticket (Attachment)
- descripcion (LongText)
Ventas Detalle:
- Id (Auto)
- venta_id (Number)
- producto (Text)
- marca (Text)
- cantidad (Number)
- precio_unitario (Currency)
- importe (Currency)
Metas:
- Id (Auto)
- vendedor_username (Text)
- mes (Text)
- tubos_vendidos (Number)
- comision (Currency)
- meta_diaria (Number)
- porcentaje_completado (Percent)
- total_vendido (Currency)
7. Obtener IDs de Tablas
En NocoDB, para cada tabla:
- Abrir la tabla
- Copiar el ID de la URL:
/table/<TABLE_ID>
Actualizar estos IDs en el archivo .env.
8. Iniciar Sales Bot
cd ../sales-bot
docker compose up -d
Verificar que esté corriendo:
curl http://localhost:5000/health
Verificación de la Instalación
1. Verificar Servicios
# Mattermost
curl http://localhost:8065/api/v4/system/ping
# NocoDB
curl http://localhost:8080/api/v2/health
# Sales Bot
curl http://localhost:5000/health
2. Probar Flujo Completo
-
Enviar mensaje en Mattermost:
venta @monto 100 @cliente Prueba -
Verificar que el bot responda
-
Verificar registro en NocoDB
Solución de Problemas
Sales Bot no responde
# Ver logs
docker compose -f sales-bot/compose.yaml logs -f
# Reiniciar
docker compose -f sales-bot/compose.yaml restart
Error de conexión a Mattermost
Verificar:
- Token del bot es correcto
- Bot tiene permisos en el canal
- URL de Mattermost es accesible
Error de conexión a NocoDB
Verificar:
- Token de API es correcto
- IDs de tablas son correctos
- URL de NocoDB es accesible
OCR no funciona
Verificar:
- Tesseract está instalado en el contenedor
- Imagen es legible
- Ver logs para errores específicos
Actualización
# Detener servicios
docker compose -f sales-bot/compose.yaml down
docker compose -f mattermost/compose.yaml down
docker compose -f nocodb/compose.yaml down
# Actualizar código
git pull
# Reconstruir imágenes
docker compose -f sales-bot/compose.yaml build
# Iniciar servicios
docker compose -f mattermost/compose.yaml up -d
docker compose -f nocodb/compose.yaml up -d
docker compose -f sales-bot/compose.yaml up -d
Backup y Restauración
Backup
# Backup de Mattermost
docker compose -f mattermost/compose.yaml exec postgres \
pg_dump -U consultoria-as mattermost > mattermost_backup.sql
# Backup de NocoDB
docker compose -f nocodb/compose.yaml exec postgres \
pg_dump -U consultoria-as nocodb > nocodb_backup.sql
Restauración
# Restaurar Mattermost
cat mattermost_backup.sql | docker compose -f mattermost/compose.yaml exec -T postgres \
psql -U consultoria-as mattermost
# Restaurar NocoDB
cat nocodb_backup.sql | docker compose -f nocodb/compose.yaml exec -T postgres \
psql -U consultoria-as nocodb