mirror of
https://github.com/marcogll/telegram_new_socias.git
synced 2026-01-13 21:25:16 +00:00
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.
73 lines
5.5 KiB
Markdown
73 lines
5.5 KiB
Markdown
# Definición de Tablas y Campos para la Base de Datos
|
|
|
|
Este documento describe la estructura de la base de datos necesaria para el bot Vanessa, incluyendo tablas para usuarios, permisos y el flujo de bienvenida.
|
|
|
|
## 1. Tabla de Usuarios (`users`)
|
|
|
|
Esta tabla almacena la información básica de cada usuario que interactúa con el bot.
|
|
|
|
| Campo | Tipo | Descripción |
|
|
|--------------|---------------|--------------------------------------------------|
|
|
| `id` | `INT` (PK) | Identificador único del usuario. |
|
|
| `telegram_id`| `BIGINT` | ID de Telegram del usuario. |
|
|
| `username` | `VARCHAR(255)`| Nombre de usuario de Telegram. |
|
|
| `first_name` | `VARCHAR(255)`| Nombre del usuario. |
|
|
| `last_name` | `VARCHAR(255)`| Apellido del usuario. |
|
|
| `is_active` | `BOOLEAN` | Indica si el usuario está activo (default `true`).|
|
|
| `created_at` | `DATETIME` | Fecha y hora de creación del registro. |
|
|
| `updated_at` | `DATETIME` | Fecha y hora de la última actualización. |
|
|
|
|
## 2. Tabla de Permisos (`permissions`)
|
|
|
|
Esta tabla gestiona los permisos de los usuarios para realizar acciones específicas.
|
|
|
|
| Campo | Tipo | Descripción |
|
|
|-----------------------|------------|--------------------------------------------------------------------------|
|
|
| `id` | `INT` (PK) | Identificador único del permiso. |
|
|
| `user_id` | `INT` (FK) | Referencia al `id` del usuario en la tabla `users`. |
|
|
| `can_update_records` | `BOOLEAN` | Permite al usuario actualizar registros (default `false`). |
|
|
| `can_access_reports` | `BOOLEAN` | Permite al usuario acceder a reportes (default `false`). |
|
|
| `created_at` | `DATETIME` | Fecha y hora de creación del registro. |
|
|
| `updated_at` | `DATETIME` | Fecha y hora de la última actualización. |
|
|
|
|
## 3. Tabla de Datos del Flujo de Bienvenida (`welcome_flow_data`)
|
|
|
|
Esta tabla almacena los datos recopilados durante el flujo de `/welcome`.
|
|
|
|
| Campo | Tipo | Descripción |
|
|
|-----------------|---------------|---------------------------------------------------------|
|
|
| `id` | `INT` (PK) | Identificador único del registro. |
|
|
| `user_id` | `INT` (FK) | Referencia al `id` del usuario en la tabla `users`. |
|
|
| `full_name` | `VARCHAR(255)`| Nombre completo del usuario. |
|
|
| `curp` | `VARCHAR(18)` | CURP del usuario. |
|
|
| `rfc` | `VARCHAR(13)` | RFC del usuario. |
|
|
| `nss` | `VARCHAR(11)` | Número de Seguridad Social (NSS) del usuario. |
|
|
| `address` | `TEXT` | Dirección del usuario. |
|
|
| `bank_account` | `VARCHAR(20)` | Número de cuenta bancaria del usuario. |
|
|
| `phone_number` | `VARCHAR(15)` | Número de teléfono del usuario. |
|
|
| `status` | `VARCHAR(50)` | Estado del flujo (e.g., 'in_progress', 'completed'). |
|
|
| `created_at` | `DATETIME` | Fecha y hora de creación del registro. |
|
|
| `updated_at` | `DATETIME` | Fecha y hora de la última actualización. |
|
|
|
|
## 4. Interacción con la Base de Datos
|
|
|
|
A continuación, se describe cómo el bot interactúa con estas tablas.
|
|
|
|
### a. Gestión de Usuarios
|
|
|
|
- **Creación de Usuario**: Cuando un nuevo usuario interactúa con el bot por primera vez (e.g., al usar `/start`), se crea un nuevo registro en la tabla `users` con su `telegram_id`, `username`, `first_name` y `last_name`.
|
|
- **Actualización de Usuario**: La información del usuario se puede actualizar si cambia su nombre de usuario, nombre o apellido en Telegram.
|
|
- **Estado del Usuario**: El campo `is_active` se utiliza para desactivar a un usuario si deja la empresa, sin eliminar sus registros.
|
|
|
|
### b. Flujo de `/welcome`
|
|
|
|
- **Inicio del Flujo**: Cuando un usuario inicia el flujo de `/welcome`, se crea un registro en la tabla `welcome_flow_data` con el `user_id` correspondiente y un estado de `in_progress`.
|
|
- **Recopilación de Datos**: A medida que el usuario proporciona su información (nombre, CURP, RFC, etc.), los campos correspondientes en la tabla `welcome_flow_data` se actualizan.
|
|
- **Finalización del Flujo**: Una vez que el usuario ha proporcionado toda la información, el estado en `welcome_flow_data` se actualiza a `completed`.
|
|
|
|
### c. Gestión de Permisos
|
|
|
|
- **Asignación de Permisos**: Los permisos se asignan a los usuarios a través de la tabla `permissions`. Por defecto, los usuarios no tienen permisos para actualizar registros o acceder a reportes.
|
|
- **Verificación de Permisos**: Antes de ejecutar comandos que requieran permisos especiales (e.g., un comando para actualizar la información de otro usuario), el bot consulta la tabla `permissions` para verificar si el usuario tiene los permisos necesarios.
|
|
- **Actualización de Registros**: Si un usuario tiene el permiso `can_update_records` establecido en `true`, podrá modificar la información en la tabla `welcome_flow_data` de otros usuarios.
|