mirror of
https://github.com/marcogll/vanessa_bot_vanity.git
synced 2026-01-13 13:25:16 +00:00
95 lines
3.6 KiB
Markdown
95 lines
3.6 KiB
Markdown
# Vanessa Bot - README Final
|
|
|
|
## Resumen del Proyecto
|
|
Vanessa Bot es un asistente virtual modular para Recursos Humanos en Vanity/Soul, construido con una arquitectura desacoplada. Temporalmente, el bot solo envía solicitudes vía webhooks a n8n sin esperar respuesta inmediata, enfocándonos en flujos conversacionales dinámicos. La DB está removida inicialmente, con roadmap para implementar persistencia externa o nativa.
|
|
|
|
## Nueva Estructura del Proyecto
|
|
- **main.py**: Orquestador puro que registra handlers y coordina módulos. No contiene lógica de negocio.
|
|
- **/modules/**: Módulos especializados (rh_requests.py, flow_builder.py, ui.py, logger.py, ai.py, finalizer.py).
|
|
- **/conv-flows/**: Archivos JSON que definen flujos conversacionales (e.g., horario.json).
|
|
- **.env.example**: Variables de entorno (Telegram token, webhooks; sin DB).
|
|
- **requirements.txt**: Dependencias Python.
|
|
- **Docker**: Para despliegue (Dockerfile, docker-compose.yml).
|
|
- **Archivos eliminados**: db_logic.md, bot_brain.md, Vanessa.md, Readme.md (original), models/, init/ (temporalmente, ya que DB está fuera).
|
|
|
|
## Arquitectura y Funcionamiento
|
|
### Flujo Actual (Temporal: Solo Envío de Webhooks)
|
|
1. Usuario inicia comando (e.g., /vacaciones).
|
|
2. main.py enruta a handler en módulo.
|
|
3. Módulo procesa conversación, valida, envía webhook a n8n.
|
|
4. n8n procesa y guarda en DB remota.
|
|
5. Bot responde inmediatamente al usuario (sin esperar confirmación).
|
|
|
|
### Nuevo Enfoque Propuesto (Bidireccional)
|
|
Cambiar a webhooks bidireccionales donde el bot espera respuesta de n8n antes de notificar al usuario, garantizando persistencia.
|
|
|
|
## Componentes Clave
|
|
### 1. main.py
|
|
- Registra comandos y handlers desde módulos.
|
|
- Setup de Telegram bot.
|
|
|
|
### 2. /modules
|
|
- **rh_requests.py**: Solicitudes de vacaciones/permisos; envía webhooks.
|
|
- **flow_builder.py**: Carga y ejecuta flujos desde JSON en /conv-flows.
|
|
- **ui.py**: Teclados y menús.
|
|
- **logger.py**: Logging.
|
|
- **ai.py**: Clasificación IA.
|
|
- **finalizer.py**: Finaliza flujos.
|
|
|
|
### 3. /conv-flows
|
|
- JSON con steps: state, type (keyboard/text/info), question, options, next_step.
|
|
- Ejemplo: horario.json para definir horarios.
|
|
|
|
## Roadmap
|
|
### Fase 1 (Actual): Sin DB, Webhooks Unidireccionales
|
|
- Flujos conversacionales funcionales.
|
|
- Envío de payloads a n8n.
|
|
|
|
### Fase 2: Webhooks Bidireccionales
|
|
- Agregar receptor de webhooks (Flask en main.py).
|
|
- Esperar respuesta de n8n para confirmar usuario.
|
|
- Storage temporal para solicitudes pendientes.
|
|
|
|
### Fase 3: Implementar DB
|
|
- DB nativa (SQLite/PostgreSQL) o acceso remoto en VPS.
|
|
- Persistencia local para reporting.
|
|
|
|
### Fase 4: Escalabilidad y Mejoras
|
|
- Manejo concurrente, logging avanzado, integraciones.
|
|
|
|
## Instalación y Ejecución
|
|
1. Clonar repo.
|
|
2. `cp .env.example .env` y configurar (TOKEN, WEBHOOK_*).
|
|
3. `pip install -r requirements.txt`
|
|
4. `python main.py` o `docker-compose up`
|
|
|
|
## Problema Actual y Solución
|
|
- **Problema**: Pérdida de datos en DB al mover desde n8n.
|
|
- **Temporal**: Bot responde inmediatamente.
|
|
- **Futuro**: Esperar confirmación para asegurar persistencia.
|
|
|
|
## Beneficios del Approach
|
|
- Modularidad: Fácil extender.
|
|
- Desacoplamiento: Sin DB local inicial.
|
|
- Escalabilidad: Webhooks para cualquier backend.
|
|
- Mantenibilidad: Código limpio.
|
|
|
|
## Pasos de Implementación (Detalle en new_plan.md)
|
|
- Análisis de flujo actual.
|
|
- Diseño bidireccional.
|
|
- Agregar receptor webhooks.
|
|
- Modificar módulos.
|
|
- Storage pendiente.
|
|
- Actualizar n8n.
|
|
- Pruebas.
|
|
|
|
## Timeline
|
|
- Análisis: 1-2 días
|
|
- Diseño: 1 día
|
|
- Implementación: 3-5 días
|
|
- Pruebas: 2-3 días
|
|
|
|
## Consideraciones Técnicas
|
|
- Timeout para callbacks.
|
|
- Seguridad en webhooks.
|
|
- Escalabilidad con Redis si necesario. |