attrition-api-dev / app /db /models.py
rriviere's picture
Upload folder using huggingface_hub
9796e1e verified
Raw History Blame Contribute Delete
4.85 kB
from sqlalchemy import Column, Integer, SmallInteger, String, Boolean, Float, DateTime, ForeignKey
from sqlalchemy.sql import func
from sqlalchemy.orm import DeclarativeBase
class Base(DeclarativeBase):
pass
class Employee(Base):
__tablename__ = "employees"
id = Column(Integer, primary_key=True, autoincrement=True)
created_at = Column(DateTime(timezone=True), server_default=func.now(), nullable=False)
# Identité
age = Column(Integer, nullable=False)
genre = Column(String, nullable=False)
statut_marital = Column(String, nullable=False)
revenu_mensuel = Column(Integer, nullable=False)
# Poste
departement = Column(String, nullable=False)
poste = Column(String, nullable=False)
niveau_hierarchique_poste = Column(SmallInteger, nullable=False)
domaine_etude = Column(String, nullable=False)
niveau_education = Column(SmallInteger, nullable=False)
# Expérience
nombre_experiences_precedentes = Column(Integer, nullable=False)
annee_experience_totale = Column(Integer, nullable=False)
annees_dans_l_entreprise = Column(Integer, nullable=False)
annees_dans_le_poste_actuel = Column(Integer, nullable=False)
annees_sous_responsable_actuel = Column(Integer, nullable=False)
annees_depuis_la_derniere_promotion = Column(Integer, nullable=False)
# Performance
note_evaluation_actuelle = Column(SmallInteger, nullable=False)
note_evaluation_precedente = Column(SmallInteger, nullable=False)
augmentation_salaire_precedente = Column(Integer, nullable=False)
nb_formations_suivies = Column(Integer, nullable=False)
nombre_participation_pee = Column(Integer, nullable=False)
# Satisfaction
satisfaction_employee_environnement = Column(SmallInteger, nullable=False)
satisfaction_employee_nature_travail = Column(SmallInteger, nullable=False)
satisfaction_employee_equipe = Column(SmallInteger, nullable=False)
satisfaction_employee_equilibre_pro_perso = Column(SmallInteger, nullable=False)
# Conditions
heure_supplementaires = Column(String, nullable=False)
frequence_deplacement = Column(String, nullable=False)
distance_domicile_travail = Column(Integer, nullable=False)
# Cible
a_quitte_l_entreprise = Column(Boolean, nullable=False)
class Prediction(Base):
__tablename__ = "predictions"
id = Column(Integer, primary_key=True, autoincrement=True)
created_at = Column(DateTime(timezone=True), server_default=func.now(), nullable=False)
# Inputs — miroir exact de PredictionInput
age = Column(Integer, nullable=False)
genre = Column(String, nullable=False)
statut_marital = Column(String, nullable=False)
poste = Column(String, nullable=False)
domaine_etude = Column(String, nullable=False)
niveau_education = Column(SmallInteger, nullable=False)
departement = Column(String, nullable=False)
niveau_hierarchique_poste = Column(SmallInteger, nullable=False)
nombre_experiences_precedentes = Column(Integer, nullable=False)
annee_experience_totale = Column(Integer, nullable=False)
annees_dans_l_entreprise = Column(Integer, nullable=False)
annees_dans_le_poste_actuel = Column(Integer, nullable=False)
annees_sous_responsable_actuel = Column(Integer, nullable=False)
annees_depuis_la_derniere_promotion = Column(Integer, nullable=False)
note_evaluation_actuelle = Column(SmallInteger, nullable=False)
note_evaluation_precedente = Column(SmallInteger, nullable=False)
augmentation_salaire_precedente = Column(Integer, nullable=False)
nb_formations_suivies = Column(Integer, nullable=False)
nombre_participation_pee = Column(Integer, nullable=False)
satisfaction_employee_environnement = Column(SmallInteger, nullable=False)
satisfaction_employee_nature_travail = Column(SmallInteger, nullable=False)
satisfaction_employee_equipe = Column(SmallInteger, nullable=False)
satisfaction_employee_equilibre_pro_perso = Column(SmallInteger, nullable=False)
heure_supplementaires = Column(String, nullable=False)
frequence_deplacement = Column(String, nullable=False)
distance_domicile_travail = Column(Integer, nullable=False)
revenu_mensuel = Column(Integer, nullable=False)
# Outputs
prediction = Column(SmallInteger, nullable=False)
probabilite = Column(Float, nullable=False)
class Log(Base):
__tablename__ = "logs"
id = Column(Integer, primary_key=True, autoincrement=True)
timestamp = Column(DateTime(timezone=True), server_default=func.now(), nullable=False)
endpoint = Column(String, nullable=False)
method = Column(String, nullable=False)
status_code = Column(Integer, nullable=False)
response_time_ms = Column(Float, nullable=False)
prediction_id = Column(Integer, ForeignKey("predictions.id"), nullable=True)