technova-ml-api / db /README_SQL.md
github-actions
deploy: snapshot
5fa8558
# 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.
---