Workflow détaillé - PT0CE¶
Vue d'ensemble du processus¶
PT0CE suit un workflow en 6 phases pour calculer les corridors de prix optimaux basés sur l'analyse des marges nettes historiques.
graph TB
Start([Début PT0CE]) --> Validation[Validation des inputs]
Validation --> Phase1[Phase 1: Extraction PAS/PRB]
Phase1 --> Phase2[Phase 2: Enrichissement Master Data]
Phase2 --> Phase3[Phase 3: Calcul des cubes]
Phase3 --> Phase4[Phase 4: Calcul des corridors]
Phase4 --> Phase5[Phase 5: Analyse sensibilité]
Phase5 --> Phase6[Phase 6: Tables finales]
Phase6 --> End([Fin])
style Phase1 fill:#FFF7ED,stroke:#F97316,stroke-width:2px
style Phase2 fill:#FED7AA,stroke:#EA580C,stroke-width:2px
style Phase3 fill:#FDBA74,stroke:#F97316,stroke-width:2px
style Phase4 fill:#FB923C,stroke:#EA580C,stroke-width:2px
style Phase5 fill:#F97316,stroke:#EA580C,stroke-width:2px,color:#fff
style Phase6 fill:#EA580C,stroke:#C2410C,stroke-width:2px,color:#fff
Phase 0 : Initialisation et validation¶
Détermination de la période d'analyse¶
PT0CE analyse automatiquement les 4 derniers trimestres fiscaux complets :
graph LR
A[Date référence] --> B[Calendrier fiscal]
B --> C{Trimestre<br/>en cours?}
C -->|Exclure| D[4 trimestres<br/>précédents]
D --> E[Période analyse]
style A fill:#FFF7ED,stroke:#F97316
style E fill:#F97316,stroke:#EA580C,color:#fff
Validation des fichiers CSV¶
Deux fichiers CSV sont obligatoires dans le dossier inputs/ :
📁 Fichiers requis
- Type_Client.csv : Mapping des types clients avec univers et PRB
- Type_Restaurant.csv : Mapping des types restaurants
Phase 1 : Extraction PAS/PRB¶
Objectif¶
Extraire l'historique des Prix d'Achat Standard (PAS) et Prix de Référence Brut (PRB) pour chaque article.
Tables créées¶
graph TD
A[SYS_MD_CONDITION] --> B[PT0CE_PAS_PRB_HISTORY]
A --> C[PT0CE_PAS_PRB_ACTIFS]
B --> D[PAS jour par jour<br/>sur la période]
C --> E[PAS/PRB actifs<br/>derniers en date]
style B fill:#FED7AA,stroke:#F97316
style C fill:#FED7AA,stroke:#F97316
Détail du processus¶
- Historique PAS : Une ligne par article × jour avec le PAS applicable
- PAS/PRB actifs : Dernières valeurs en vigueur pour le calcul des bornes
- Types de PRB :
- PRB RC (Restaurant Commercial) : ID_TAR = '01'
- PRB COLL (Collectivités) : ID_TAR = '02'
Phase 2 : Enrichissement Master Data¶
Objectif¶
Enrichir les transactions avec les dimensions métier et calculer la marge nette.
Processus d'enrichissement¶
graph TD
A[SYS_FACTURE_LIGNE] --> B[Jointure mappings]
B --> C[Calcul UNIVERS]
C --> D[Calcul marge nette]
D --> E[PT0CE_MASTER_DATA]
F[Type_Client.csv] --> G[PT0CE_TYPE_CLIENT_MAPPING]
H[Type_Restaurant.csv] --> I[PT0CE_TYPE_RESTAURANT_MAPPING]
G --> B
I --> B
style E fill:#F97316,stroke:#EA580C,color:#fff
style G fill:#FFF7ED,stroke:#F97316
style I fill:#FFF7ED,stroke:#F97316
Calcul de la marge nette¶
📊 Formule de la marge nette
Où :
- Prix vente unitaire = MT_CAB / QT_UF
- PAS unitaire = PAS historique au moment de la transaction
Détermination des univers¶
Les transactions sont classées dans 3 univers selon des règles métier précises :
- ZOOM1 : Clients indépendants et petites structures
- ZOOM2 : Grands comptes régionaux + RSI Marché
- ZOOM3 : Grands comptes nationaux
Phase 3 : Calcul des cubes¶
Types de cubes¶
graph TD
A[Transactions enrichies] --> B[Agrégation]
B --> C{Type de cube}
C -->|Par dimensions| D[Cubes MASTER]
C -->|Par article uniquement| E[Cubes NATIONAL]
D --> F[Article × Type_Client<br/>× Type_Restaurant × Geo]
E --> G[Article uniquement<br/>toutes transactions]
style D fill:#F97316,stroke:#EA580C,color:#fff
style E fill:#DC2626,stroke:#B91C1C,color:#fff
Métriques calculées¶
Pour chaque cube, calcul de :
- Statistiques de base : Nombre de transactions, CA total, volume
- Percentiles de marge : P10, P30, P40, P50, P60, P80, P90
- Indicateurs : Écart-type, marges distinctes
Seuil de fiabilité¶
⚠️ Seuil minimum
Un cube doit avoir au moins 30 marges distinctes pour être considéré comme fiable.
Sinon → remontée hiérarchique nécessaire
Phase 4 : Calcul des corridors¶
Remontée hiérarchique¶
Pour les cubes MASTER avec données insuffisantes :
graph TD
A[Cube MASTER] --> B{≥ 30 marges?}
B -->|Non| C[Niveau 1: ID_ART × toutes dims]
B -->|Oui| Z[Utiliser statistiques]
C --> D{≥ 30 marges?}
D -->|Non| E[Niveau 2: ID_ART × dims réduites]
D -->|Oui| Z
E --> F{≥ 30 marges?}
F -->|Non| G[Niveau 3-6: HIE_N6...]
F -->|Oui| Z
G --> H[...]
H --> I[Niveau 19-21: HIE_N1]
style A fill:#F97316,stroke:#EA580C,color:#fff
style Z fill:#10B981,stroke:#059669,color:#fff
Calcul des bornes de prix¶
📐 Formule des bornes
Avec contraintes :
- Borne ≥ PAS actif (contrainte minimale)
- Borne ≤ PRB approprié (contrainte maximale)
Tableau des bornes¶
| Borne | Percentile | Description |
|---|---|---|
| PL1/PL2 | P90 | PVC |
| PL2/PL3 | P80 | Paliers intermédiaires |
| PL3/PL4 | P60 | Paliers intermédiaires |
| PL4/PL5 | P50 | Paliers intermédiaires |
| PL5/PL6 | P30 | Paliers intermédiaires |
| PL6/PLX | P10 | Seuil de dérogation |
Phase 5 : Analyse de sensibilité prix¶
Classification bidimensionnelle¶
graph TD
A[Articles du cube] --> B[Classification Fréquence]
A --> C[Classification Ventes]
B --> D[F1: Top 25%<br/>plus commandés]
B --> E[F2: Reste 75%]
C --> F[S1: 70% du CA<br/>Principe Pareto]
C --> G[S2: 30% restant]
D --> H[Matrice de<br/>sensibilité]
E --> H
F --> H
G --> H
style H fill:#DC2626,stroke:#B91C1C,color:#fff
Matrice de sensibilité¶
| Fréquence × Ventes | Sensibilité |
|---|---|
| F1 × S1 | HIGH - Articles critiques |
| F1 × S2 | MEDIUM - Fréquents mais CA limité |
| F2 × S1 | MEDIUM - Rares mais gros volumes |
| F2 × S2 | LOW - Articles peu critiques |
Phase 6 : Création des tables finales¶
Tables de sortie¶
graph TD
A[Corridors + Sensibilité] --> B[Fusion des données]
B --> C[PT0CE_CORRIDOR_HISTORY_ZOOM1]
B --> D[PT0CE_CORRIDOR_HISTORY_ZOOM2]
B --> E[PT0CE_CORRIDOR_HISTORY_ZOOM3]
F[PT0CE_DIMENSION_MAPPING] --> G[Conservée pour PT1CE]
style C fill:#EA580C,stroke:#C2410C,color:#fff
style D fill:#EA580C,stroke:#C2410C,color:#fff
style E fill:#EA580C,stroke:#C2410C,color:#fff
style G fill:#10B981,stroke:#059669,color:#fff
Contenu des tables finales¶
Chaque table CORRIDOR_HISTORY contient :
- Identifiants : Article, dimensions du corridor
- Métriques : CA, transactions, statistiques de marge
- Bornes de prix : PL1/PL2 à PL6/PLX avec écarts au PAS
- Métadonnées : Source level, type de cube, sensibilité prix
Nettoyage¶
Toutes les tables temporaires sont supprimées sauf :
- PT0CE_DIMENSION_MAPPING_YYYYMMDD : Nécessaire pour PT1CE
- PT0CE_TYPE_CLIENT_MAPPING : Rechargée à chaque run
- PT0CE_TYPE_RESTAURANT_MAPPING : Rechargée à chaque run
Points de contrôle qualité¶
Validation continue¶
À chaque phase, PT0CE vérifie :
Cohérence des données :
- Bornes croissantes (PL1 < PL2 < ... < PLX)
- Respect des contraintes min/max
- Présence des données obligatoires
Volumétrie :
- Nombre de transactions traitées
- Nombre de cubes générés
- Taux de remontée hiérarchique
Performance :
- Temps de traitement par phase
- Utilisation mémoire
- Keep-alive Oracle