feat: refactor schedule storage to vanity_hr schema, update onboarding command to /registro, and enhance horario flow with short name collection

This commit is contained in:
Marco Gallegos
2025-12-20 22:43:34 -06:00
parent 338108d7b7
commit d66e8118eb
16 changed files with 570 additions and 405 deletions

View File

@@ -108,6 +108,20 @@ Tabla central de Recursos Humanos. Contiene información contractual, personal,
| con_goce_sueldo | tinyint(1) | | 0 / 1 |
| afecta_nomina | tinyint(1) | | Impacto |
#### Tabla: `horario_empleadas` (Diccionario de turnos)
| Campo | Tipo | Key | Descripción |
| -------------------- | ----------- | --- | ---------------- |
| id_horario | int | PRI | ID |
| numero_empleado | varchar(15) | MUL | Relación RH |
| telegram_id | bigint | | Llave webhook |
| dia_semana | varchar(20) | | monday, tuesday… |
| hora_entrada_teorica | time | | Entrada |
| hora_salida_teorica | time | | Salida |
*Los capturados desde `/horario` generan un registro por día mediante upsert (por `telegram_id` + `dia_semana`).*
---
### 2.2 Base de Datos: `vanity_attendance`
@@ -128,19 +142,6 @@ Tabla central de Recursos Humanos. Contiene información contractual, personal,
---
#### Tabla: `horario_empleadas` (Diccionario de turnos)
| Campo | Tipo | Key | Descripción |
| -------------------- | ----------- | --- | ---------------- |
| id_horario | int | PRI | ID |
| numero_empleado | varchar(15) | MUL | Relación RH |
| telegram_id | bigint | | Llave webhook |
| dia_semana | varchar(20) | | monday, tuesday… |
| hora_entrada_teorica | time | | Entrada |
| hora_salida_teorica | time | | Salida |
---
### 2.3 Base de Datos: `USERS_ALMA`
#### Tabla: `users` (10 campos)
@@ -171,7 +172,7 @@ Tabla central de Recursos Humanos. Contiene información contractual, personal,
### 3.2 Asistencia
* Identificación por `telegram_id`
* Cruce con `horario_empleadas` según día
* Cruce con `vanity_hr.horario_empleadas` según día
* Cálculo de retraso contra horario teórico
---
@@ -180,6 +181,7 @@ Tabla central de Recursos Humanos. Contiene información contractual, personal,
* **Identificación**: `body.telegram.user_id`
* **Operación**: Upsert por día
* **Persistencia**: `vanity_hr.horario_empleadas` (clave `telegram_id` + `dia_semana`)
* **Formato**: conversión de `10:00 AM``10:00:00`
---
@@ -199,7 +201,7 @@ LIMIT 1;
-- Horario del día
SELECT hora_entrada_teorica
FROM vanity_attendance.horario_empleadas
FROM vanity_hr.horario_empleadas
WHERE telegram_id = ? AND dia_semana = 'monday';
```
@@ -215,4 +217,4 @@ Este documento define el **contrato técnico** del sistema Vanity. Cualquier cam
2. **Modify `docker-compose.yml`:** Mount the initialization script.
3. **Update `.env.example`:** Add new environment variables.
4. **Implement SQLAlchemy models:** Create Python classes for each table.
5. **Refactor database logic:** Use the new models in the application.
5. **Refactor database logic:** Use the new models in the application.