Download src/api/schemas.py from Alexis-Ravet/Employee-Churn-Prediction: direct link, hf CLI and curl.
- Browser
- Download file 4.26 kB
-
https://huggingface.co/spaces/Alexis-Ravet/Employee-Churn-Prediction/resolve/main/src/api/schemas.py
- Command line
-
hf download hf://spaces/Alexis-Ravet/Employee-Churn-Prediction/src/api/schemas.py
-
curl -L -o schemas.py https://huggingface.co/spaces/Alexis-Ravet/Employee-Churn-Prediction/resolve/main/src/api/schemas.py
4.26 kB
| """ | |
| Schémas de données Pydantic pour l'API de prédiction du churn employé. | |
| Contient les modèles de validation des données entrantes et sortantes. | |
| """ | |
| from typing import Literal | |
| from pydantic import BaseModel, ConfigDict, Field | |
| # MODÈLES DE DONNÉES D'ENTRÉE | |
| class DonneesEmploye(BaseModel): | |
| """ | |
| Modèle des données d'un employé en entrée de l'API. | |
| Chaque champ représente une caractéristique de l'employé. | |
| La validation Pydantic rejette automatiquement les valeurs invalides. | |
| """ | |
| model_config = ConfigDict(extra="forbid") # rejette les champs inconnus | |
| # INFORMATIONS PERSONNELLES | |
| id_employee: int = Field(..., ge=1, description="ID unique de l'employé") | |
| age: int = Field( | |
| ..., ge=18, le=65, description="Âge de l'employé (entre 18 et 65 ans)" | |
| ) | |
| genre: Literal["M", "F"] = Field(..., description="Genre: M=Homme, F=Femme") | |
| revenu_mensuel: int = Field( | |
| ..., gt=0, lt=20000, description="Salaire mensuel en euros" | |
| ) | |
| statut_marital: Literal["Célibataire", "Marié(e)", "Divorcé(e)"] = Field( | |
| ..., description="Statut matrimonial" | |
| ) | |
| departement: Literal["Consulting", "Commercial", "Ressources Humaines"] = Field( | |
| ..., description="Département de l'entreprise" | |
| ) | |
| poste: Literal[ | |
| "Représentant Commercial", | |
| "Ressources Humaines", | |
| "Assistant de Direction", | |
| "Consultant", | |
| "Manager", | |
| "Cadre Commercial", | |
| "Tech Lead", | |
| "Senior Manager", | |
| "Directeur Technique", | |
| ] = Field(..., description="Intitulé du poste") | |
| # EXPÉRIENCE | |
| annee_experience_totale: int = Field( | |
| ..., ge=0, le=47, description="Années d'expérience totale" | |
| ) | |
| annees_dans_l_entreprise: int = Field( | |
| ..., ge=0, le=47, description="Années dans l'entreprise" | |
| ) | |
| # SATISFACTION (note de 1 à 4) | |
| satisfaction_employee_environnement: int = Field( | |
| ..., | |
| ge=1, | |
| le=4, | |
| description="Satisfaction concernant l'environnement de travail (1-4)", | |
| ) | |
| note_evaluation_precedente: int = Field( | |
| ..., ge=1, le=4, description="Note d'évaluation précédente (1-4)" | |
| ) | |
| satisfaction_employee_nature_travail: int = Field( | |
| ..., | |
| ge=1, | |
| le=4, | |
| description="Satisfaction concernant la nature du travail (1-4)", | |
| ) | |
| satisfaction_employee_equipe: int = Field( | |
| ..., ge=1, le=4, description="Satisfaction concernant l'équipe (1-4)" | |
| ) | |
| satisfaction_employee_equilibre_pro_perso: int = Field( | |
| ..., ge=1, le=4, description="Satisfaction équilibre pro/perso (1-4)" | |
| ) | |
| note_evaluation_actuelle: int = Field( | |
| ..., ge=1, le=4, description="Note d'évaluation actuelle (1-4)" | |
| ) | |
| # AUTRES INFORMATIONS | |
| heure_supplementaires: Literal["Oui", "Non"] = Field( | |
| ..., description="Effectue des heures supplémentaires" | |
| ) | |
| augementation_salaire_precedente: int = Field( | |
| ..., | |
| ge=0, | |
| le=100, | |
| description="Pourcentage d'augmentation salaire précédente (ex: 11 pour 11%)", | |
| ) | |
| nombre_participation_pee: int = Field( | |
| ..., ge=0, le=3, description="Nombre de participations au PEE" | |
| ) | |
| nb_formations_suivies: int = Field( | |
| ..., ge=0, description="Nombre de formations suivies" | |
| ) | |
| distance_domicile_travail: int = Field( | |
| ..., ge=0, description="Distance domicile-travail en km" | |
| ) | |
| niveau_education: int = Field( | |
| ..., ge=1, le=5, description="Niveau d'éducation (1-5)" | |
| ) | |
| frequence_deplacement: Literal["Aucun", "Occasionnel", "Frequent"] = Field( | |
| ..., description="Fréquence des déplacements professionnels" | |
| ) | |
| annees_depuis_la_derniere_promotion: int = Field( | |
| ..., ge=0, le=15, description="Années depuis la dernière promotion" | |
| ) | |
| class ResultatPrediction(BaseModel): | |
| """Modèle de réponse de l'API après une prédiction.""" | |
| prediction: str = Field( | |
| ..., description="Prédiction: 'Oui' (part) ou 'Non' (reste)" | |
| ) | |
| probabilite: float = Field(..., description="Probabilité de départ (entre 0 et 1)") | |
| classe: int = Field(..., description="Classe: 0=reste, 1=part") | |