Glossaire Développeur - Guide de Navigation Pipeline¶
Introduction¶
Ce glossaire est conçu pour vous aider à trouver rapidement où modifier le code selon le type de changement demandé. Chaque section liste les modifications courantes avec les fichiers et fonctions concernés.
Navigation rapide par type de modification¶
📊 Données et colonnes¶
"Ajouter/modifier une colonne dans les données"¶
- Mapping colonnes :
/app/MariaDB/Tool_architecture/{country}/{table}_mapping_{country}.txt - Types colonnes :
/app/MariaDB/Tool_architecture/{country}/Types/{table}_mapping_types_{country}.txt - Schéma DB :
/app/MariaDB/Tool_architecture/MariaDB Model Schema/{table}_model_schema.txt - Code :
Step_02_Data_Integration.py→process_files()
"Changer le format d'une date"¶
- Parsing général :
Step_02_Data_Integration.py→process_files()(paramètredayfirst) - Parmalat spécifique :
Step_02_Data_Integration.py→convert_parmalat_dates() - Config :
/app/inputs/{business_unit}/promo_config.json→"Dayfirst_datetime"
"Modifier le nom d'une colonne source"¶
- Fichier :
/app/MariaDB/Tool_architecture/{country}/{table}_mapping_{country}.txt - Format :
{'Ancien_nom': 'Nouveau_nom'}
💰 Calculs financiers et marges¶
"Modifier le calcul des marges"¶
- Galbani :
Step_06_Valuation_of_volume_effects.py→compute_margin_italy_galbani() - Parmalat :
Step_06_Valuation_of_volume_effects.py→compute_margin_italy_parmalat() - Nouveau pays :
Step_06_Valuation_of_volume_effects.py→compute_margin_{country}()
"Changer la formule de marge ajustée"¶
- Galbani :
Step_06_Valuation_of_volume_effects.py→compute_margin_italy_galbani()→ Ligne ~100 - Parmalat : Utilise marges pré-calculées de Step 3
"Modifier le calcul des coûts promotionnels"¶
- Galbani :
Step_03_Data_Cleaning.py→promo_costs_recomputation_italy_galbani() - Parmalat :
Step_03_Data_Cleaning.py→promo_costs_recomputation_italy_parmalat() - Colonnes concernées : Rechercher
On_invoice_promo_costs_etPromo_funding_off_invoice_
"Calculer le ROI différemment"¶
- Calcul principal :
Step_07_Aggregation_at_promo_level.py→compute_performance_metrics() - Galbani :
Step_07_Aggregation_at_promo_level.py→filter_promo_events_italy_galbani() - Parmalat :
Step_07_Aggregation_at_promo_level.py→filter_promo_events_italy_parmalat()
📈 Baseline et méthodologies¶
"Changer les seuils de classification promo (Low/Mid/High)"¶
- Config :
/app/inputs/{business_unit}/promo_config.json "Promo_intensity_mid_lower_limit"(défaut: 0.60)"Promo_intensity_mid_upper_limit"(défaut: 0.75)- Code :
Step_04_Building_Model_Database.py→data_model_sell_in_{country}()
"Modifier le calcul du baseline"¶
- Standard :
Step_04_Building_Model_Database.py→compute_baseline_volume()oucompute_baseline_volume_parmalat() - Statistical :
Step_04_Building_Model_Database.py→statistical_baseline_computation()oustatistical_baseline_computation_parmalat() - Nombre semaines :
/app/inputs/{business_unit}/promo_config.json→"Number_of_weeks_lags_baseline"
"Changer les règles In&Out"¶
- Galbani :
Step_04_Building_Model_Database.py→apply_in_out_rules() - Parmalat :
Step_04_Building_Model_Database.py→apply_in_out_rules_parmalat() - Tables ref :
In_Out_Comparable_products_ItalyouIn_Out_Comparable_products_parmalat
"Ajuster les seuils outliers"¶
- Config :
/app/inputs/{business_unit}/promo_config.json "Outliers_percentile_lower_limit"(défaut: 0.05)"Outliers_percentile_upper_limit"(défaut: 0.95)
🔄 Cannibalisation et effets¶
"Modifier le calcul de cannibalisation"¶
- Galbani :
Step_06_Valuation_of_volume_effects.py→compute_cannibalization_italy_galbani() - Parmalat :
Step_06_Valuation_of_volume_effects.py→compute_cannibalization_italy_parmalat() - Catégories UHT : Ligne ~50 dans
compute_cannibalization_italy_parmalat()
"Changer le forward buying"¶
- Facteurs :
/app/inputs/{business_unit}/promo_config.json "Forward_buying_low_factor"(défaut: 0.2)"Forward_buying_mid_factor"(défaut: 0.4)"Forward_buying_high_factor"(défaut: 0.6)- Galbani sell-in/out :
Step_05_Building_Baseline.py→fetch_promo_intensities_italy_galbani() - Parmalat :
Step_07_Aggregation_at_promo_level.py→calculate_halo_pantry_and_forward_buying_parmalat() - Windows : Tables
Forward_Buying_weeks_window_parmalatouForward_buying_classification_Italy_galbani
"Modifier uplift/halo/pantry loading"¶
- Calcul uplift :
Step_05_Building_Baseline.py→compute_volume_effects_{country}() - Halo/Pantry Galbani :
Step_05_Building_Baseline.py→compute_volume_effects_with_sell_out() - Halo/Pantry Parmalat :
Step_07_Aggregation_at_promo_level.py→calculate_halo_pantry_and_forward_buying_parmalat()
🏷️ Classification et filtrage¶
"Changer la classification des événements (Value/Volume generator)"¶
- Galbani :
Step_07_Aggregation_at_promo_level.py→classify_events() - Parmalat :
Step_07_Aggregation_at_promo_level.py→classify_events_parmalat() - Seuils : Calculés dynamiquement (75e percentile ROI, moyenne uplift)
"Modifier les critères In_Scope"¶
- Global :
Step_07_Aggregation_at_promo_level.py→filter_promo_events_{country}() - Critères : Ligne ~50
"Filtrer des catégories/produits"¶
- Tables :
Italy_category_filteringouCategory_filtering_parmalat - Code :
Step_03_Data_Cleaning.py→categories_scoping_{country}() - Re-classification :
Step_03_Data_Cleaning.py→re_classification_{country}()
📋 Agrégations et niveaux¶
"Changer le niveau d'agrégation"¶
- Galbani : Toujours
Retailer_name × EAN × EAN_desc - Parmalat : Toujours
Retailer_classification × EAN(sans EAN_desc) - Modification : Chercher tous les
groupby()dans les steps concernées
"Ajouter une dimension d'analyse"¶
- Performance evolution :
Step_07_Aggregation_at_promo_level.py→performance_evolution_{country}() - Agrégations : Modifier les
groupby()danscompute_metrics()
📤 Exports et formats¶
"Modifier le format Excel de sortie"¶
- Colonnes :
Step_08_Simulation_Inputs.py→extract_and_export_data() - Renommage : Ligne ~120
- Arrondi : Ligne ~140
"Ajouter un nouveau Quality Check"¶
- Fonction :
Step_03_Data_Cleaning.py→ Ajouternew_quality_check() - Intégration :
Step_03_Data_Cleaning.py→main_quality_checks()→ dictionnairequality_checks - Nom fichier :
qc{N}_{description}_{business_unit}.csv
🔧 Configuration et paramètres¶
"Modifier les années à traiter"¶
- Config :
/app/inputs/{business_unit}/promo_config.json→"Years_in_scope_for_tool_refresh" - Format :
"2023,2024,2025"
"Changer les seuils de volume minimum"¶
- Config :
/app/inputs/{business_unit}/promo_config.json→"Volume_filtering" - Code :
Step_04_Building_Model_Database.py→adjust_volumes_based_on_threshold() - Seuil retailers : 25% des plus petits
"Ajouter un nouveau business unit"¶
- Config : Ajouter dans
promo_config.json - Mappings : Créer
/app/MariaDB/Tool_architecture/{new_country}/ - Pre-processing : Si nécessaire, créer dans
Step_01_Specific_Pre_Processing.py - Fonctions spécifiques : Créer
{operation}_{new_country}()dans les steps concernées
🐛 Debug et logs¶
"Ajouter des logs de debug"¶
- Import :
from logger import log_message - Usage :
log_message(f"Debug: variable = {variable}") - Localisation :
/app/logs/{business_unit}/
"Tracer les transformations de données"¶
- Row count : Ajouter avant/après chaque transformation majeure
"Debug mémoire"¶
- Monitoring :
Step_04_Building_Model_Database.pyetStep_07_Aggregation_at_promo_level.py - Fonction :
save_dataframe_in_batches()dansStep_07_Aggregation_at_promo_level.py
🔌 Connexions externes¶
"Modifier la connexion SFTP"¶
- Download :
Step_00_Download_Inputs.py - Upload :
Step_09_Upload_Outputs.py - Retry : Paramètres
max_retries,base_delay,max_delay
"Changer la connexion DB"¶
- Config : Variables d'environnement dans
.envou docker-compose - Code :
db_config.py→create_db_engine()
Index des fonctions principales par concept¶
Volumes et effets¶
- Uplift :
compute_volume_effects_{country}()dans Step_05 - Cannibalisation :
compute_cannibalization_{country}()dans Step_06 - Forward buying :
calculate_halo_pantry_and_forward_buying_parmalat()dans Step_07 - Baseline :
compute_baseline_volume()dans Step_04
Financier¶
- Marges :
compute_margin_{country}()dans Step_06 - Coûts promo :
promo_costs_recomputation_{country}()dans Step_03 - ROI :
compute_performance_metrics()dans Step_07
Classification¶
- Intensité promo :
data_model_sell_in_{country}()dans Step_04 - Événements :
classify_events_{country}()dans Step_07 - In&Out :
apply_in_out_rules_{country}()dans Step_04
Données¶
- Nettoyage :
re_classification_{country}()dans Step_03 - Mapping :
process_files()dans Step_02 - Quality checks :
quality_check_*()dans Step_03
Patterns de nommage¶
Fonctions¶
- Par pays :
{operation}_{country}()(ex:compute_margin_italy_galbani) - Générique :
{operation}_default()pour fallback - Utils :
safe_divide(),normalize_italian_chars(), etc.
Tables DB¶
- Étapes :
step_{N}_{MM}_{description}(ex:step_3_02_model_data_baseline) - Référence :
{Description}_{Country}(ex:Forward_buying_classification_Italy_galbani) - Audit :
{operation}_audit_{country}(ex:promo_costs_Italy_galbani)
Fichiers config¶
- Mapping :
{table}_mapping_{country}.txt - Types :
{table}_mapping_types_{country}.txt - Schema :
{table}_model_schema.txt
Tips de recherche dans le code¶
Recherche par grep¶
# Trouver où une colonne est utilisée
grep -r "Nom_Colonne" /app/src/scripts/
# Trouver toutes les fonctions d'un pays
grep -r "def.*italy_galbani" /app/src/scripts/
# Trouver les calculs de marge
grep -r "margin\|Margin" /app/src/scripts/Step_06*
# Trouver les groupby pour agrégations
grep -r "groupby.*EAN" /app/src/scripts/
Recherche par concept¶
# ROI
grep -r "ROI\|roi" /app/src/scripts/Step_07*
# Baseline
grep -r "baseline\|Baseline" /app/src/scripts/Step_04* /app/src/scripts/Step_05*
# Forward buying
grep -r "forward.*buying\|Forward.*Buying" /app/src/scripts/
Checklist modification¶
Avant de modifier : 1. ✅ Identifier le bon fichier via ce glossaire 2. ✅ Vérifier si la modification est spécifique à un pays 3. ✅ Chercher les dépendances (colonnes utilisées ailleurs) 4. ✅ Ajouter des logs pour tracer les changements 5. ✅ Tester sur un échantillon de données 6. ✅ Vérifier les Quality Checks après modification 7. ✅ Documenter le changement
Ce glossaire est maintenu à jour avec la version 1.0 de la pipeline