Spaces:
Sleeping
Sleeping
| # Technova ML API – Documentation SQL & Base de Données | |
| ## Objectif | |
| Ce document décrit en détail l’architecture de la base de données PostgreSQL utilisée par **Technova ML API**. | |
| La base est organisée selon une approche analytique en couches : **RAW → STAGING → MART → AUDIT**. | |
| --- | |
| ### Initialisation de la base de données | |
| Les scripts SQL doivent être exécutés dans l’ordre suivant afin de garantir | |
| la cohérence des données et des dépendances entre les schémas : | |
| 1. `schema.sql` : création des schémas PostgreSQL (raw, staging, mart, audit) | |
| 2. `raw.sql` : création des tables de données brutes | |
| 3. `load_raw.sql` : chargement des données sources | |
| 4. `staging.sql` : nettoyage, normalisation et jointure des données | |
| 5. `mart.sql` : création du dataset final pour le modèle ML | |
| 6. `audit.sql` : création des tables de traçabilité des prédictions | |
| Cet ordre permet d’assurer l’intégrité des données et la reproductibilité | |
| du pipeline de traitement. | |
| Les scripts sont conçus pour être idempotents | |
| (`DROP TABLE IF EXISTS`, `TRUNCATE`) afin de permettre | |
| une réexécution sans effet de bord. | |
| ## Vue d’ensemble du pipeline de données | |
| ```text | |
| RAW | |
| ├─ extrait_sirh | |
| ├─ extrait_eval | |
| └─ extrait_sondage | |
| │ | |
| ▼ | |
| STAGING | |
| └─ employee_base | |
| │ | |
| ▼ | |
| MART | |
| └─ employee_features | |
| │ | |
| ├─ utilisé par le modèle de Machine Learning | |
| ▼ | |
| AUDIT | |
| ├─ prediction_requests | |
| └─ prediction_responses | |
| ``` | |
| --- | |
| ## Diagramme UML – Modèle de données (ERD) | |
| ```mermaid | |
| erDiagram | |
| RAW_EXTRAIT_SIRH { | |
| INT id_employee | |
| INT age | |
| TEXT genre | |
| INT revenu_mensuel | |
| TEXT statut_marital | |
| TEXT departement | |
| TEXT poste | |
| INT nombre_experiences_precedentes | |
| INT annee_experience_totale | |
| INT annees_dans_l_entreprise | |
| INT annees_dans_le_poste_actuel | |
| } | |
| RAW_EXTRAIT_EVAL { | |
| TEXT eval_number | |
| INT satisfaction_employee_environnement | |
| INT note_evaluation_precedente | |
| INT niveau_hierarchique_poste | |
| INT satisfaction_employee_nature_travail | |
| INT satisfaction_employee_equipe | |
| INT satisfaction_employee_equilibre_pro_perso | |
| INT note_evaluation_actuelle | |
| TEXT heure_supplementaires | |
| TEXT augementation_salaire_precedente | |
| } | |
| RAW_EXTRAIT_SONDAGE { | |
| INT code_sondage | |
| TEXT a_quitte_l_entreprise | |
| INT nombre_participation_pee | |
| INT nb_formations_suivies | |
| INT distance_domicile_travail | |
| INT niveau_education | |
| TEXT domaine_etude | |
| TEXT frequence_deplacement | |
| INT annees_depuis_la_derniere_promotion | |
| INT annes_sous_responsable_actuel | |
| } | |
| STAGING_EMPLOYEE_BASE { | |
| INT id_employee | |
| INT age | |
| TEXT genre | |
| INT revenu_mensuel | |
| TEXT statut_marital | |
| TEXT departement | |
| TEXT poste | |
| BOOLEAN heure_supplementaires | |
| BOOLEAN a_quitte_l_entreprise | |
| } | |
| MART_EMPLOYEE_FEATURES { | |
| INT id_employee | |
| FLOAT ratio_manager_anciennete | |
| FLOAT mobilite_relative | |
| INT evolution_performance | |
| FLOAT pression_stagnation | |
| BOOLEAN a_quitte_l_entreprise | |
| } | |
| AUDIT_PREDICTION_REQUESTS { | |
| BIGINT request_id PK | |
| TIMESTAMPTZ created_at | |
| INT id_employee | |
| JSONB payload | |
| } | |
| AUDIT_PREDICTION_RESPONSES { | |
| BIGINT response_id PK | |
| BIGINT request_id FK | |
| FLOAT proba | |
| INT prediction | |
| FLOAT threshold | |
| } | |
| RAW_EXTRAIT_SIRH }o--|| STAGING_EMPLOYEE_BASE : clean | |
| RAW_EXTRAIT_EVAL }o--|| STAGING_EMPLOYEE_BASE : clean | |
| RAW_EXTRAIT_SONDAGE }o--|| STAGING_EMPLOYEE_BASE : clean | |
| STAGING_EMPLOYEE_BASE ||--|| MART_EMPLOYEE_FEATURES : feature_engineering | |
| AUDIT_PREDICTION_REQUESTS ||--o{ AUDIT_PREDICTION_RESPONSES : logs | |
| ``` | |
| --- | |
| ## Description des couches | |
| ### RAW | |
| - Données brutes issues de différentes sources RH. | |
| - Aucune transformation. | |
| - Chargement via scripts SQL (`COPY`). | |
| ### STAGING | |
| - Nettoyage des valeurs. | |
| - Normalisation des types. | |
| - Jointure des sources autour de `id_employee`. | |
| ### MART | |
| - Dataset final utilisé par le modèle de Machine Learning. | |
| - Features calculées (ratios, évolutions, indicateurs). | |
| - Contient la cible `a_quitte_l_entreprise`. | |
| ### AUDIT | |
| - Journalisation des appels API. | |
| - Séparation claire entre requêtes et réponses. | |
| - Garantit la traçabilité et l’auditabilité des prédictions. | |
| --- | |