File size: 4,526 Bytes
5fa8558
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
# 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.

---