mirror of
https://github.com/marcogll/telegram_new_socias.git
synced 2026-01-13 13:15:16 +00:00
This commit introduces a three-database architecture to the application, as specified in the `db_logic.md` file. The changes include: - A SQL initialization script (`db/init/init.sql`) to create the `USERS_ALMA`, `vanity_hr`, and `vanity_attendance` databases and their respective tables. - SQLAlchemy models for all tables, organized into separate files within the `models` directory. - Refactoring of the database connection logic in `modules/database.py` to support connections to all three databases. - Creation of a `modules/logger.py` to handle request logging to the `USERS_ALMA` database. - Updates to `docker-compose.yml` to mount the initialization script and build the bot image locally. - Updates to `.env.example` to include the new database environment variables. - Restoration of the data dictionary to `db_tasks.md`.
93 lines
3.6 KiB
Python
93 lines
3.6 KiB
Python
from sqlalchemy import create_engine, Column, Integer, String, Enum, TIMESTAMP, Date, Text, BigInteger, DateTime
|
|
from sqlalchemy.dialects.mysql import TINYINT
|
|
from sqlalchemy.ext.declarative import declarative_base
|
|
from sqlalchemy.sql import func
|
|
from sqlalchemy import ForeignKey
|
|
from sqlalchemy.orm import relationship
|
|
|
|
Base = declarative_base()
|
|
|
|
class DataEmpleadas(Base):
|
|
__tablename__ = 'data_empleadas'
|
|
__table_args__ = {'schema': 'vanity_hr'}
|
|
|
|
numero_empleado = Column(String(15), primary_key=True)
|
|
puesto = Column(String(50))
|
|
sucursal = Column(String(50))
|
|
fecha_ingreso = Column(Date)
|
|
estatus = Column(String(15))
|
|
nombre_completo = Column(String(150))
|
|
nombre = Column(String(50))
|
|
nombre_preferido = Column(String(50))
|
|
apellido_paterno = Column(String(50))
|
|
apellido_materno = Column(String(50))
|
|
fecha_nacimiento = Column(Date)
|
|
lugar_nacimiento = Column(String(50))
|
|
rfc = Column(String(13), unique=True)
|
|
curp = Column(String(18), unique=True)
|
|
email = Column(String(100))
|
|
telefono_celular = Column(String(15))
|
|
domicilio_calle = Column(String(255))
|
|
domicilio_numero_exterior = Column(String(10))
|
|
domicilio_numero_interior = Column(String(10))
|
|
domicilio_numero_texto = Column(String(50))
|
|
domicilio_colonia = Column(String(255))
|
|
domicilio_codigo_postal = Column(String(10))
|
|
domicilio_ciudad = Column(String(100))
|
|
domicilio_estado = Column(String(50))
|
|
domicilio_completo = Column(String(255))
|
|
emergencia_nombre = Column(String(100))
|
|
emergencia_telefono = Column(String(15))
|
|
emergencia_parentesco = Column(String(50))
|
|
referencia_1_nombre = Column(String(100))
|
|
referencia_1_telefono = Column(String(15))
|
|
referencia_1_tipo = Column(String(20))
|
|
referencia_2_nombre = Column(String(100))
|
|
referencia_2_telefono = Column(String(15))
|
|
referencia_2_tipo = Column(String(20))
|
|
referencia_3_nombre = Column(String(100))
|
|
referencia_3_telefono = Column(String(15))
|
|
referencia_3_tipo = Column(String(20))
|
|
origen_registro = Column(String(50))
|
|
telegram_usuario = Column(String(50))
|
|
telegram_chat_id = Column(BigInteger)
|
|
bot_version = Column(String(20))
|
|
fecha_registro = Column(DateTime)
|
|
tiempo_registro_minutos = Column(Integer)
|
|
fecha_procesamiento = Column(DateTime)
|
|
|
|
class Vacaciones(Base):
|
|
__tablename__ = 'vacaciones'
|
|
__table_args__ = {'schema': 'vanity_hr'}
|
|
|
|
vacaciones_id = Column(String(50), primary_key=True)
|
|
numero_empleado = Column(String(15), ForeignKey('vanity_hr.data_empleadas.numero_empleado'))
|
|
tipo_solicitud = Column(String(20))
|
|
estatus = Column(Enum('pendiente', 'aprobado', 'rechazado', 'cancelado'))
|
|
fecha_inicio = Column(Date)
|
|
fecha_fin = Column(Date)
|
|
dias_solicitados = Column(Integer)
|
|
dias_habiles = Column(Integer)
|
|
motivo = Column(Text)
|
|
con_goce_sueldo = Column(TINYINT)
|
|
fecha_solicitud = Column(DateTime)
|
|
fecha_procesamiento = Column(DateTime)
|
|
origen = Column(String(20))
|
|
afecta_nomina = Column(TINYINT)
|
|
empleada = relationship("DataEmpleadas")
|
|
|
|
class Permisos(Base):
|
|
__tablename__ = 'permisos'
|
|
__table_args__ = {'schema': 'vanity_hr'}
|
|
|
|
permiso_id = Column(String(50), primary_key=True)
|
|
numero_empleado = Column(String(15), ForeignKey('vanity_hr.data_empleadas.numero_empleado'))
|
|
categoria = Column(Enum('PERSONAL', 'MEDICO', 'OFICIAL', 'OTRO'))
|
|
estatus = Column(Enum('pendiente', 'aprobado', 'rechazado', 'cancelado'))
|
|
fecha_inicio = Column(Date)
|
|
horario_especifico = Column(String(50))
|
|
motivo = Column(Text)
|
|
con_goce_sueldo = Column(TINYINT)
|
|
afecta_nomina = Column(TINYINT)
|
|
empleada = relationship("DataEmpleadas")
|