Commit Graph

42 Commits

Author SHA1 Message Date
Marco Gallegos
338108d7b7 feat: Implementar finalización del flujo /horario
Este commit introduce la lógica para procesar y guardar los datos recopilados por el flujo de conversación .

Cambios:

1.  **Nueva tabla de base de datos**: Se ha añadido una nueva tabla  a la base de datos  para almacenar los horarios de trabajo de los usuarios.
2.  **Nuevo modelo SQLAlchemy**: Se ha creado el modelo  en .
3.  **Nuevo **: Se ha creado un nuevo módulo para centralizar la lógica de finalización de los flujos de conversación.
    *   La función  determina qué acción tomar en función del flujo que ha finalizado.
    *   La función  se encarga de:
        *   Enviar los datos del horario al .
        *   Guardar (o actualizar si ya existe) el horario en la nueva tabla .
4.  **Actualización de **: El constructor de flujos ahora llama a  cuando una conversación llega a su fin, conectando la lógica de conversación con la de procesamiento de datos.
2025-12-20 10:31:17 -06:00
Marco Gallegos
60dddc147b refactor: Eliminar el módulo de impresión
Se ha eliminado el módulo  y todas sus referencias en la documentación (), ya que no se utilizará en el flujo de trabajo actual del bot.
2025-12-20 10:18:55 -06:00
Marco Gallegos
b009d60043 feat: Implementar flujo de conversación /horario
Se ha implementado un nuevo flujo de conversación para que los usuarios puedan definir su horario de trabajo a través del comando .

Cambios:

1.  **Nuevo **: Se ha añadido un nuevo archivo JSON que define las preguntas y los estados de la conversación para la definición de horarios.
2.  **Actualización de **: Se ha añadido el comando  a la lista de comandos del bot para que sea visible en el menú de Telegram.

El  existente carga dinámicamente este nuevo flujo, haciéndolo disponible para los usuarios sin necesidad de cambios adicionales en la lógica principal del bot.
2025-12-20 10:11:21 -06:00
Marco Gallegos
b68cb14837 refactor: Implement dynamic conversation flow builder from JSON
This commit refactors the bot's architecture to dynamically load and build conversation flows from JSON files instead of hardcoding them in Python.

- Added  to read flow definitions from the  directory and dynamically build s.
- Refactored  to use the new flow builder and load all conversation handlers at startup.
- Moved hardcoded links to environment variables for better configuration.
- Updated  to support conditional branching for 'Other' options, using a  field to define state transitions.
- Updated  with the new link variables.
2025-12-20 09:56:28 -06:00
Marco Gallegos
ce7769fe62 Update onboarding.json 2025-12-20 09:40:17 -06:00
Marco Gallegos
fc0e798703 feat: Extraer flujos de conversación a formato JSON
Se han extraído los flujos de conversación de los handlers de  y  a archivos JSON dedicados dentro del nuevo directorio .

Este cambio tiene como objetivo:

1.  **Centralizar y desacoplar la lógica de conversación**: Al separar las preguntas y los estados del código de Python, se facilita la visualización, edición y mantenimiento de los flujos sin necesidad de modificar la lógica de la aplicación.
2.  **Facilitar la mejora de los flujos**: Con los flujos definidos en un formato de datos estructurado, es más sencillo analizarlos, identificar posibles errores o bucles, y realizar mejoras de manera más segura.
3.  **Preparar para futuras funcionalidades**: Esta estructura sienta las bases para poder cargar y gestionar los flujos de conversación de manera dinámica, permitiendo, por ejemplo, la creación de un editor visual de flujos o la carga de flujos desde una base de datos.

Se han creado los siguientes archivos:
- : Contiene el flujo de onboarding de nuevas empleadas.
- : Define el flujo para solicitar vacaciones.
- : Especifica el flujo para solicitar permisos.
2025-12-20 09:33:58 -06:00
Marco Gallegos
72204d54cf feat: Implementar registro de usuarios en base de datos dual
Este commit introduce las siguientes mejoras en el proceso de onboarding:

1.  **Registro en Dos Fases**: El flujo de onboarding ahora registra a las nuevas usuarias en dos bases de datos distintas para mejorar la seguridad y la integridad de los datos:
    *   ****: Se crea un registro básico para la autenticación y el control de acceso del bot.
    *   ****: Se guarda un perfil completo y detallado de la empleada en la tabla .

2.  **Modelos SQLAlchemy**: Se han actualizado los modelos de SQLAlchemy ( y ) para reflejar la estructura de las tablas de la base de datos.

3.  **Lógica de Base de Datos Centralizada**: El módulo  ahora contiene la lógica para gestionar el registro dual, asegurando que ambas operaciones se realicen de forma atómica.

4.  **Flujo de Onboarding Actualizado**: El script de  ha sido modificado para recopilar la información necesaria y pasarla al nuevo sistema de registro.

5.  **Configuración de Docker**: Se ha ajustado el  y los scripts de inicialización de la base de datos ( y ) para soportar el nuevo esquema de base de datos dual.

Estos cambios aseguran un proceso de registro más robusto, seguro y escalable, sentando las bases para futuras funcionalidades de RRHH.
2025-12-20 09:28:13 -06:00
Marco Gallegos
9cb9513c41 docs: Actualizar y consolidar la documentación de la base de datos
Se ha actualizado el archivo  para describir con mayor precisión el proceso de registro de usuarios en dos fases, que implica la creación de un registro tanto en la base de datos  como en .

Además, se ha consolidado la documentación de la base de datos eliminando el archivo redundante  y fusionando su contenido en . Esto asegura que  sirva como la única fuente de verdad para la especificación técnica de la base de datos.
2025-12-20 09:27:53 -06:00
Marco Gallegos
1151d3af3d feat: Implement direct MySQL database integration for onboarding and duplicate checks, add Gemini AI support, and update webhook and email configurations. 2025-12-18 15:58:01 -06:00
Marco Gallegos
8387a5851a Merge pull request #5 from marcogll/feat/database-implementation-8116533070439855590
Implement Multi-Database Architecture
2025-12-18 13:38:06 -06:00
google-labs-jules[bot]
4e2b6335a6 feat: Implement multi-database architecture
This commit introduces a three-database architecture to the application,
as specified in the `db_logic.md` file.

The changes include:
- A SQL initialization script (`db/init/init.sql`) to create the
  `USERS_ALMA`, `vanity_hr`, and `vanity_attendance` databases and their
  respective tables.
- SQLAlchemy models for all tables, organized into separate files
  within the `models` directory.
- Refactoring of the database connection logic in `modules/database.py`
  to support connections to all three databases.
- Creation of a `modules/logger.py` to handle request logging to the
  `USERS_ALMA` database.
- Updates to `docker-compose.yml` to mount the initialization script and
  build the bot image locally.
- Updates to `.env.example` to include the new database environment
  variables.
- Restoration of the data dictionary to `db_tasks.md`.
2025-12-18 19:36:40 +00:00
Marco Gallegos
fbb8649748 Create db_logic.md 2025-12-18 13:09:21 -06:00
Marco Gallegos
e14d67cbf6 Merge pull request #4 from marcogll/feat/database-documentation-12411039060362828534
Add Database Schema Documentation
2025-12-16 12:44:19 -06:00
google-labs-jules[bot]
be4057b3ed feat: Enhance database schema for vacation and permission tracking
This commit significantly enhances the database schema defined in `db_tasks.md` to create a robust system for tracking employee vacations and permission requests.

Key changes include:
- **`users` table:** Added `vacation_days_assigned` and `vacation_days_taken` fields to maintain a running balance of employee vacation days.
- **`vacations` table:** Overhauled the table with detailed fields such as `business_days`, `with_pay`, `approver_comments`, `approval_date`, and `affects_payroll` to create a comprehensive vacation tracking system.
- **`permission_requests` table:** Similarly enhanced with fields like `category`, `with_pay`, and `affects_payroll` for detailed tracking of hourly leaves.
- **Interaction Logic:** Updated the documentation to explain how vacation balances are automatically calculated and updated upon the approval of a request.
2025-12-16 17:27:13 +00:00
google-labs-jules[bot]
c35a6cb606 feat: Update database schema documentation
Updates the `db_tasks.md` file to reflect the new database schema and role-based permission system.

This change introduces:
- A new `vacations` table to track vacation requests.
- A new `permission_requests` table for hourly leave requests.
- A redesigned `users` table with more detailed employee information and a `role` column.
- A renamed and expanded `onboarding_data` table.
- An updated database interaction section explaining the `user`, `manager`, and `admin` roles.
2025-12-16 17:08:15 +00:00
google-labs-jules[bot]
7696a0f492 feat: Add database schema documentation
Creates a new `db_tasks.md` file that defines the database schema for the bot.

This documentation includes table definitions for:
- `users`: To store user information.
- `permissions`: To manage user permissions for specific actions.
- `welcome_flow_data`: To store data collected during the `/welcome` onboarding flow.

The file also explains how the bot will interact with these tables to manage users, permissions, and the onboarding process.
2025-12-16 16:47:37 +00:00
Marco Gallegos
3b94c2f90d feat: Add check for existing users and dynamic menu
- Add a check to see if a user's Telegram chat ID already exists in a Google Sheet.
- If the user is already registered, the 'welcome' option is hidden from the main menu.
- Added gspread and google-auth-oauthlib to requirements.txt.
- Modified database.py to support Google Service Account credentials from environment variables.
- Updated .env.example with the new environment variables.
2025-12-15 19:19:37 -06:00
Marco Gallegos
d3035f846e feat: Add GOOGLE_CREDENTIALS_FILE to .env.example for Google API integration 2025-12-15 19:17:56 -06:00
Marco Gallegos
ae8436b01e feat: Integrate Google Sheets for duplicate chat ID verification and update main actions keyboard logic 2025-12-15 19:11:09 -06:00
Marco Gallegos
aad973a9c7 feat: Replace UUID with secure short ID generation for record IDs in webhook payload 2025-12-15 14:17:30 -06:00
Marco Gallegos
9c7d4e3d2e feat: Add version log for version 1.2 and update bot image to 1.2. 2025-12-15 12:32:54 -06:00
Marco Gallegos
d0e13da706 Allow conversation re-entry for flows 2025-12-15 12:30:46 -06:00
Marco Gallegos
68848cee49 feat: Update Dockerfile to use Python 3.12 and modify docker-compose to specify bot image directly; enhance onboarding role selection prompts. 2025-12-15 10:28:32 -06:00
Marco Gallegos
8422a874d9 feat: Implement a new links menu, consolidate the main action keyboard into a ui module, and update employee ID generation logic. 2025-12-15 09:49:50 -06:00
Marco Gallegos
24874da1c7 feat: Add Docker Compose configuration and instructions for Collify deployment, including build optimizations and updated README. 2025-12-14 22:42:04 -06:00
Marco Gallegos
ebbb6c3f00 refactor: Remove printing feature, enhance onboarding derivations, and update bot commands. 2025-12-14 22:32:18 -06:00
Marco Gallegos
29b2605072 feat: Implement detailed onboarding data capture, refactor HR request date processing, and enhance bot command menu. 2025-12-14 22:09:23 -06:00
Marco Gallegos
cbfcee557a feat: Add database health checks and host configuration, enhance the start command with a quick reply keyboard, and improve general text cleaning. 2025-12-14 15:33:47 -06:00
Marco Gallegos
cf128960cb feat: Add print event webhooks and interactive keyboards for HR requests, refactor webhook handling, and remove unused IMAP configuration. 2025-12-14 14:26:13 -06:00
Marco Gallegos
220b78886d feat: Enhance database connection robustness, update onboarding command to /welcome, and remove /socia_finder functionality. 2025-12-14 11:53:45 -06:00
Marco Gallegos
b0d30928f1 Fix: Explicitly pass MySQL credentials to bot service in docker-compose.yml 2025-12-14 11:42:07 -06:00
Marco Gallegos
c0793db73c feat: Implement AI-powered permit reason classification and add comprehensive project documentation. 2025-12-14 11:42:05 -06:00
Marco Gallegos
7a87a010ae Delete .env 2025-12-14 10:14:45 -06:00
Marco Gallegos
a1fab1888a Update .env 2025-12-14 10:14:32 -06:00
Marco Gallegos
7ce9bacce1 feat: Configure environment variables, refactor onboarding conversation states, and expose database port in Docker Compose. 2025-12-14 10:04:34 -06:00
Marco Gallegos
3f3520188c Merge pull request #3 from marcogll/feat/docker-mysql-logging-13516104967243096474
Feat/docker mysql logging 13516104967243096474
2025-12-13 21:50:09 -06:00
Marco Gallegos
7d59333c09 Merge pull request #2 from marcogll/main
Merge pull request #1 from marcogll/feat/docker-mysql-logging-1351610…
2025-12-13 21:46:51 -06:00
google-labs-jules[bot]
93ec6d335c refactor: Implement Docker, MySQL logging, and SMTP email
This commit refactors the application to run in a containerized environment using Docker and Docker Compose. It also introduces a MySQL database for logging user requests and updates the print functionality to send emails via SMTP.

Key changes:
- Added `Dockerfile` and `docker-compose.yml` for containerization.
- Integrated a MySQL database for logging user requests.
- Updated the print module to send files as email attachments via SMTP.
- Added and updated configuration files (`.env`, `.env.example`) to manage secrets and environment variables.
- Removed hardcoded credentials from version control.
- Updated `Readme.md` with new setup and execution instructions.
2025-12-14 03:44:45 +00:00
Marco Gallegos
efb6a2ebec Merge pull request #1 from marcogll/feat/docker-mysql-logging-13516104967243096474
feat: Dockerize application and add MySQL logging
2025-12-13 21:30:41 -06:00
google-labs-jules[bot]
fec578bd7c feat: Dockerize application and add MySQL logging
This commit introduces Docker and Docker Compose to containerize the application and orchestrate it with a MySQL database.

Key changes include:
- Added a `Dockerfile` to create a container for the Python bot.
- Created a `docker-compose.yml` file to manage the bot and MySQL services.
- Added a `modules/database.py` module to handle database connections and logging with SQLAlchemy.
- Integrated request logging into all command handlers.
- Updated `requirements.txt` with necessary dependencies for MySQL.
- Updated `.env` and `.gitignore` to manage database credentials securely.
- Updated `Readme.md` with instructions on how to run the application using Docker Compose.
2025-12-14 03:28:56 +00:00
Marco Gallegos
4653eda462 feat: add .gitignore with common patterns for Python projects, virtual environments, logs, and editor configurations. 2025-12-13 19:06:49 -06:00
Marco Gallegos
1cb382b4ef first commit 2025-12-13 19:06:14 -06:00