Guide des corrections manuelles - PT1CE¶
Table des matières¶
- Principe des corrections
- Format des fichiers
- Stratégies de correction
- Processus technique
- Exemples pratiques
- Validation et contrôles
Principe des corrections¶
Objectif¶
Les corrections manuelles permettent d'ajuster les corridors identifiés comme sous-optimaux après l'application automatique des nouveaux prix.
Cas nécessitant correction¶
- PL6 = PAS : La borne maximale a atteint le prix d'achat
- Bornes incohérentes : Non respect de l'ordre croissant
- Ajustements métier : Décisions commerciales spécifiques
Workflow de correction¶
graph LR
A[Analyser CSV<br/>sous-optimaux] --> B{Corrections<br/>nécessaires?}
B -->|OUI| C[Créer fichiers<br/>corrections]
B -->|NON| D[Export SAP direct]
C --> E[Exécuter<br/>corrections]
E --> F[Vérifier<br/>résultats]
F --> G{OK?}
G -->|NON| C
G -->|OUI| D
style A fill:#ffcc99
style C fill:#99ff99
style E fill:#99ccff
Format des fichiers¶
Structure générale¶
Les fichiers de correction suivent un format CSV strict avec :
- Colonnes d'identification du corridor
- Colonnes de nouvelles bornes
- Possibilité de corrections partielles
Format ZOOM1/ZOOM2¶
Avec dimension géographique :
ID_ART;TYPE_CLIENT;TYPE_RESTAURANT;GEO;NEW_BORNE_PL1_PL2;NEW_BORNE_PL2_PL3;NEW_BORNE_PL3_PL4;NEW_BORNE_PL4_PL5;NEW_BORNE_PL5_PL6;NEW_BORNE_PL6_PLX
075130;RCI PI GI;REST. TRADI;IDF;13,500;14,200;15,800;17,200;18,900;21,500
075131;RSI HM;ENSEIGNEMENT;NORD;9,250;9,750;10,800;11,750;12,900;14,650
Format ZOOM3¶
Sans dimension géographique :
ID_ART;TYPE_CLIENT;TYPE_RESTAURANT;NEW_BORNE_PL1_PL2;NEW_BORNE_PL2_PL3;NEW_BORNE_PL3_PL4;NEW_BORNE_PL4_PL5;NEW_BORNE_PL5_PL6;NEW_BORNE_PL6_PLX
075150;RSC HM;AUTRES;3,665;3,855;4,275;4,660;5,115;5,820
075150;NATIONAL;NATIONAL;3,665;3,855;4,275;4,660;5,115;5,820
Cas particulier : Corridors NATIONAL¶
Pour corriger un corridor NATIONAL :
Corrections partielles¶
Possibilité de ne modifier que certaines bornes :
ID_ART;TYPE_CLIENT;TYPE_RESTAURANT;GEO;NEW_BORNE_PL1_PL2;NEW_BORNE_PL2_PL3;NEW_BORNE_PL3_PL4;NEW_BORNE_PL4_PL5;NEW_BORNE_PL5_PL6;NEW_BORNE_PL6_PLX
075140;RSI HM;SOCIAL;EST;;7,590;8,420;9,170;10,070;11,450
Stratégies de correction¶
Stratégie 1 : Ajustement minimal¶
Pour un corridor avec PL6 = PAS :
Problème :
PAS = 10,00€
PL6 = 10,00€ (= PAS)
Solution minimale :
Augmenter PL6 de 5-10% au-dessus du PAS
PL6 = 10,50€ ou 11,00€
Stratégie 2 : Redistribution complète¶
Recalculer toutes les bornes avec de nouveaux écarts :
Ancien corridor problématique :
PAS = 15,00€
PL1 = 16,50€ (+10%)
PL2 = 16,00€ (+6.7%)
PL3 = 15,80€ (+5.3%)
PL4 = 15,50€ (+3.3%)
PL5 = 15,20€ (+1.3%)
PL6 = 15,00€ (+0%) ← Problème
Nouvelle distribution :
PL1 = 17,25€ (+15%)
PL2 = 16,80€ (+12%)
PL3 = 16,35€ (+9%)
PL4 = 15,90€ (+6%)
PL5 = 15,45€ (+3%)
PL6 = 15,15€ (+1%)
Stratégie 3 : Alignement sur corridors similaires¶
Analyser des corridors similaires optimaux :
-- Trouver corridors similaires optimaux
SELECT *
FROM PT1CE_OPTIMAL_ZOOM1
WHERE ID_ART = '075130'
AND TYPE_CLIENT = 'RCI PI GI'
AND STATUS = 'OPTIMAL'
AND ABS(NEW_PAS - 15.00) < 1.00 -- PAS proche
ORDER BY CA_TOTAL DESC
Stratégie 4 : Correction par paliers¶
Corriger uniquement les paliers problématiques :
Si PL5 et PL6 sont trop proches du PAS :
- Garder PL1 à PL4 inchangés
- Augmenter seulement PL5 et PL6
Processus technique¶
Étape 1 : Analyse des corridors sous-optimaux¶
# Lire le fichier généré
df_subopt = pd.read_csv('corridors_sous_optimaux.csv', sep=';')
# Analyser par type de problème
df_subopt.groupby('PROBLEM_TYPE').agg({
'ID_ART': 'count',
'CA_TOTAL': 'sum'
})
# Identifier les priorités (par CA)
top_impact = df_subopt.nlargest(20, 'CA_TOTAL')
Étape 2 : Création du fichier de corrections¶
# Template pour corrections
corrections = []
for _, row in corridors_to_fix.iterrows():
# Calculer nouvelles bornes
new_bornes = calculate_new_distribution(row)
corrections.append({
'ID_ART': row['ID_ART'],
'TYPE_CLIENT': row['TYPE_CLIENT'],
'TYPE_RESTAURANT': row['TYPE_RESTAURANT'],
'GEO': row['GEO'],
**new_bornes
})
# Sauvegarder
pd.DataFrame(corrections).to_csv(
'corrections/corrections_ZOOM1.csv',
sep=';',
decimal=',',
index=False
)
Étape 3 : Application des corrections¶
Le processus technique :
-
Chargement en table temporaire
-
Update ciblé
UPDATE PT1CE_CORRIDORS_ZOOM1 t SET NEW_BORNE_PL1_PL2 = ( SELECT c.NEW_BORNE_PL1_PL2 FROM TEMP_CORRECTIONS_ZOOM1 c WHERE t.ID_ART = c.ID_ART AND t.TYPE_CLIENT = c.TYPE_CLIENT AND t.TYPE_RESTAURANT = c.TYPE_RESTAURANT AND NVL(t.GEO, 'NULL') = NVL(c.GEO, 'NULL') AND c.NEW_BORNE_PL1_PL2 IS NOT NULL ) WHERE EXISTS (...)
-
Re-détection
- Relance de
detect_suboptimal.py
- Mise à jour des statuts
- Génération nouveaux rapports
Exemples pratiques¶
Exemple 1 : Correction simple PL6 = PAS¶
Problème :
Fichier correction :
ID_ART;TYPE_CLIENT;TYPE_RESTAURANT;GEO;NEW_BORNE_PL1_PL2;NEW_BORNE_PL2_PL3;NEW_BORNE_PL3_PL4;NEW_BORNE_PL4_PL5;NEW_BORNE_PL5_PL6;NEW_BORNE_PL6_PLX
075140;RSI HM;SOCIAL;EST;;7,590;8,420;9,170;10,070;11,450
Résultat :
- PL1 conservé (vide dans le CSV)
- PL2 à PL6 ajustés
- PL6 = 11,450€ > PAS → Optimal
Exemple 2 : Redistribution complète¶
Problème :
Analyse :
# Calcul nouveaux écarts progressifs
pas = 15.670
ecarts_pct = [0.20, 0.16, 0.12, 0.08, 0.04, 0.01]
nouvelles_bornes = [pas * (1 + e) for e in ecarts_pct]
Fichier correction :
ID_ART;TYPE_CLIENT;TYPE_RESTAURANT;GEO;NEW_BORNE_PL1_PL2;NEW_BORNE_PL2_PL3;NEW_BORNE_PL3_PL4;NEW_BORNE_PL4_PL5;NEW_BORNE_PL5_PL6;NEW_BORNE_PL6_PLX
075142;RCI PI GI;HOTELS;OUEST;18,804;18,177;17,550;16,924;16,297;15,827
Exemple 3 : Correction avec contrainte PRB¶
Problème :
Solution avec plafonnement :
ID_ART;TYPE_CLIENT;TYPE_RESTAURANT;NEW_BORNE_PL1_PL2;NEW_BORNE_PL2_PL3;NEW_BORNE_PL3_PL4;NEW_BORNE_PL4_PL5;NEW_BORNE_PL5_PL6;NEW_BORNE_PL6_PLX
075150;RSC HM;AUTRES;5,000;5,000;4,800;4,600;4,400;4,200
Note : PL1 et PL2 plafonnés au PRB
Validation et contrôles¶
Contrôles automatiques¶
PT1CE vérifie automatiquement :
-
Cohérence des bornes
-
Respect des contraintes
-
Existence du corridor
Messages d'erreur¶
⚠ 3 corridors avec bornes incohérentes détectés
- 075140 | RSI HM | SOCIAL | EST : PL3 (8,420) < PL2 (8,500)
Validation manuelle recommandée¶
Après application des corrections :
-
Vérifier la résolution
-
Analyser l'impact
-
Contrôler les extrêmes
- Hausses > 20%
- Baisses (anormales)
- Écarts entre paliers
Bonnes pratiques¶
- Commencer par les plus impactants
- Trier par CA décroissant
-
Corriger d'abord le top 20%
-
Documenter les décisions
-
Tester sur échantillon
- 5-10 corrections
- Valider le processus
-
Étendre ensuite
-
Garder une trace
- Archiver les fichiers de correction
- Noter les raisons
- Versioning si multiples itérations