mirror of
https://github.com/marcogll/telegram_new_socias.git
synced 2026-01-13 13:15:16 +00:00
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.
10 KiB
10 KiB
Definición de Tablas y Campos para la Base de Datos
Este documento describe la estructura de la base de datos para el bot Vanessa, diseñada para gestionar la información de empleadas, solicitudes y permisos.
1. Tabla de Usuarias (users)
Almacena la información central y el estado de cada empleada.
| Campo | Tipo | Descripción |
|---|---|---|
id |
INT (PK) |
Identificador único de la usuaria. |
employee_number |
VARCHAR(50) (Unique) |
Número de empleada único (e.g., "GAMM20260201"). |
telegram_id |
BIGINT (Unique) |
ID de Telegram de la usuaria. |
telegram_username |
VARCHAR(255) |
Nombre de usuario de Telegram. |
full_name |
VARCHAR(255) |
Nombre completo. |
preferred_name |
VARCHAR(100) |
Nombre con el que prefiere que la llamen. |
email |
VARCHAR(255) (Unique) |
Correo electrónico. |
phone_number |
VARCHAR(20) |
Teléfono celular. |
position |
VARCHAR(100) |
Puesto que desempeña (e.g., "manager"). |
branch |
VARCHAR(100) |
Sucursal a la que pertenece (e.g., "plaza_cima"). |
hire_date |
DATE |
Fecha de ingreso a la empresa. |
status |
ENUM('activo', 'inactivo') |
Estatus actual de la empleada. |
role |
ENUM('user', 'manager', 'admin') |
Nivel de permisos en el sistema (por defecto: 'user'). |
created_at |
DATETIME |
Fecha de creación del registro. |
updated_at |
DATETIME |
Fecha de última actualización. |
2. Tabla de Datos de Onboarding (onboarding_data)
Almacena la información detallada recopilada durante el flujo /welcome. Se vincula 1-a-1 con la tabla users.
| Campo | Tipo | Descripción |
|---|---|---|
id |
INT (PK) |
Identificador único. |
user_id |
INT (FK) |
Referencia a users.id. |
date_of_birth |
DATE |
Fecha de nacimiento. |
place_of_birth |
VARCHAR(255) |
Lugar de nacimiento. |
rfc |
VARCHAR(13) |
RFC. |
curp |
VARCHAR(18) |
CURP. |
nss |
VARCHAR(11) |
Número de Seguridad Social. |
address_street |
VARCHAR(255) |
Calle del domicilio. |
address_ext_number |
VARCHAR(20) |
Número exterior. |
address_int_number |
VARCHAR(20) |
Número interior (si aplica). |
address_neighborhood |
VARCHAR(255) |
Colonia. |
address_zip_code |
VARCHAR(10) |
Código Postal. |
address_city |
VARCHAR(255) |
Ciudad. |
address_state |
VARCHAR(255) |
Estado. |
emergency_contact_name |
VARCHAR(255) |
Nombre del contacto de emergencia. |
emergency_contact_phone |
VARCHAR(20) |
Teléfono del contacto de emergencia. |
emergency_contact_relationship |
VARCHAR(50) |
Parentesco del contacto de emergencia. |
registration_source |
VARCHAR(50) |
Origen del registro (e.g., "telegram_bot"). |
bot_version |
VARCHAR(50) |
Versión del bot que procesó el alta. |
registration_time_minutes |
INT |
Tiempo que tardó el registro en minutos. |
bot_interactions |
INT |
Número de interacciones con el bot durante el alta. |
created_at |
DATETIME |
Fecha de creación. |
3. Tabla de Vacaciones (vacations)
Mantiene un registro de las solicitudes de vacaciones de las empleadas.
| Campo | Tipo | Descripción |
|---|---|---|
id |
INT (PK) |
Identificador único de la solicitud. |
user_id |
INT (FK) |
Empleada que solicita (users.id). |
start_date |
DATE |
Fecha de inicio de las vacaciones. |
end_date |
DATE |
Fecha de fin de las vacaciones. |
status |
ENUM('pending', 'approved', 'rejected') |
Estado de la solicitud. |
approver_id |
INT (FK, nullable) |
Manager o admin que aprobó/rechazó la solicitud (users.id). |
comments |
TEXT |
Comentarios del solicitante o del aprobador. |
created_at |
DATETIME |
Fecha de creación de la solicitud. |
updated_at |
DATETIME |
Fecha de última actualización (aprobación/rechazo). |
4. Tabla de Permisos por Horas (permission_requests)
Registro de solicitudes de permisos por horas (llegar tarde, salir temprano, etc.).
| Campo | Tipo | Descripción |
|---|---|---|
id |
INT (PK) |
Identificador único del permiso. |
user_id |
INT (FK) |
Empleada que solicita (users.id). |
request_date |
DATE |
Fecha para la cual se solicita el permiso. |
start_time |
TIME |
Hora de inicio del permiso. |
end_time |
TIME |
Hora de fin del permiso. |
reason |
TEXT |
Motivo de la solicitud. |
status |
ENUM('pending', 'approved', 'rejected') |
Estado del permiso. |
approver_id |
INT (FK, nullable) |
Manager o admin que gestionó el permiso (users.id). |
created_at |
DATETIME |
Fecha de creación de la solicitud. |
updated_at |
DATETIME |
Fecha de la gestión. |
5. Interacción con la Base de Datos y Sistema de Roles
El bot utiliza un sistema de roles para gestionar el acceso a los datos y funcionalidades.
a. Roles de Usuario
user: Es el rol por defecto. Puede registrarse (/welcome), solicitar vacaciones (/vacaciones), pedir permisos (/permiso) y recibir notificaciones sobre el estado de sus solicitudes.manager: Tiene los mismos permisos que unuser, pero además puede consultar la información de otras usuarias a través del flujo/data_socias. También puede aprobar o rechazar solicitudes de vacaciones y permisos de las usuarias a su cargo.admin: Tiene acceso completo a toda la información y funcionalidades. Puede gestionar usuarios, aprobar cualquier solicitud y acceder a todos los datos.
b. Flujo de Solicitudes (Vacaciones y Permisos)
- Creación: Una usuaria (
user) inicia el flujo (/vacacioneso/permiso). El bot crea un nuevo registro en la tabla correspondiente (vacationsopermission_requests) con el estado'pending'. - Notificación: Se notifica a los
managersyadminssobre la nueva solicitud. - Gestión: Un
manageroadminrevisa la solicitud. - Actualización: El
manager/adminaprueba o rechaza la solicitud. El bot actualiza el registro correspondiente, cambiando elstatusa'approved'o'rejected', y guardando elapprover_id. - Notificación Final: Se notifica a la usuaria solicitante sobre la resolución de su petición.
c. Acceso a Datos (/data_socias)
- Cuando un
manageroadminutiliza el comando/data_socias, el bot consulta la tablausersyonboarding_datapara devolver la información de las empleadas. - Un
managersolo podrá ver la información de las usuarias que reportan a él/ella (lógica de negocio a implementar), mientras que unadminpodrá ver la de todas.