mirror of
https://github.com/marcogll/telegram_new_socias.git
synced 2026-01-13 13:15:16 +00:00
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.
This commit is contained in:
72
db_tasks.md
Normal file
72
db_tasks.md
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
# 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.
|
||||||
Reference in New Issue
Block a user