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.
This commit is contained in:
Marco Gallegos
2025-12-20 09:28:13 -06:00
parent 9cb9513c41
commit 72204d54cf
5 changed files with 242 additions and 31 deletions

28
db/init/00-bootstrap.sh Executable file
View File

@@ -0,0 +1,28 @@
#!/bin/bash
set -euo pipefail
: "${MYSQL_ROOT_PASSWORD:?MYSQL_ROOT_PASSWORD is required}"
APP_USER="${MYSQL_USER:-user}"
APP_PASSWORD="${MYSQL_PASSWORD:-password}"
escape_sql() {
printf "%s" "$1" | sed "s/'/''/g"
}
DB_USER_ESCAPED=$(escape_sql "$APP_USER")
DB_PASS_ESCAPED=$(escape_sql "$APP_PASSWORD")
mysql -uroot -p"${MYSQL_ROOT_PASSWORD}" <<-EOSQL
CREATE DATABASE IF NOT EXISTS USERS_ALMA;
CREATE DATABASE IF NOT EXISTS vanity_hr;
CREATE DATABASE IF NOT EXISTS vanity_attendance;
CREATE USER IF NOT EXISTS '${DB_USER_ESCAPED}'@'%';
ALTER USER '${DB_USER_ESCAPED}'@'%' IDENTIFIED WITH mysql_native_password BY '${DB_PASS_ESCAPED}';
GRANT ALL PRIVILEGES ON USERS_ALMA.* TO '${DB_USER_ESCAPED}'@'%';
GRANT ALL PRIVILEGES ON vanity_hr.* TO '${DB_USER_ESCAPED}'@'%';
GRANT ALL PRIVILEGES ON vanity_attendance.* TO '${DB_USER_ESCAPED}'@'%';
FLUSH PRIVILEGES;
EOSQL