PT2QE - Pricing Tier 2 Quote Engine¶
Vue d'ensemble¶
PT2QE (Pricing Tier 2 Quote Engine) est un système de recommandations de prix personnalisées qui calcule des prix optimaux à la maille client × article. Il s'appuie sur les corridors optimaux générés par PT1CE pour proposer des ajustements tarifaires adaptés à chaque relation commerciale, en tenant compte de l'historique transactionnel et de la sensibilité prix.
Objectif stratégique¶
PT2QE transforme les corridors de prix théoriques en recommandations opérationnelles concrètes. Là où PT1CE définit des fourchettes de prix acceptables par segment de marché, PT2QE personnalise ces recommandations pour chaque couple client-article en analysant :
- La performance historique de la relation commerciale (4 derniers trimestres fiscaux)
- La position actuelle du prix dans les corridors
- Les contraintes de sensibilité prix produit
- Les règles métier de protection tarifaire
Positionnement dans la chaîne tarifaire¶
PT0CE PT1CE PT2QE Déploiement
(Statistiques) ──────► (Optimisation) ──────► (Personnalisation) ──────► (SAP/Client)
- Analyse marge - Nouveaux PAS/PRB - Prix client × article - Mise à jour
- Corridors actuels - Corridors optimaux - Historique 4Q - Conditions
- Sensibilité prix - Validation métier - Cappings personnalisés - Suivi
PT2QE intervient en Tier 2 : après que PT1CE ait optimisé les corridors globaux, PT2QE descend au niveau opérationnel pour générer des offres de prix individuelles prêtes à déployer.
Concepts fondamentaux¶
1. Double système de recommandations¶
PT2QE calcule deux recommandations indépendantes pour chaque offre de prix :
Recommandation 1 (RECO1) : Repositionnement intelligent dans les paliers tarifaires - Analyse la position actuelle dans le corridor PT1CE - Applique des règles de repositionnement paramétrables (configuration JSON) - Pousse vers les paliers supérieurs selon la logique métier - Exemples : PL5_PL6 → remonter vers PL5, PL2_PL3 → remonter vers PL1
Recommandation 2 (RECO2) : Hausse proportionnelle au PAS - Répercute le pourcentage d'évolution du PAS (Prix d'Achat Standard) - Si PAS passe de 10€ à 11€ (+10%), prix de 15€ devient 16,50€ (+10%) - Maintient la cohérence avec l'évolution des coûts d'achat - Plus simple et plus prévisible que RECO1
La sélection finale suit un arbre de décision à 3 chemins (détails section Concepts).
2. Arbre de décision à 3 chemins¶
PT2QE ne sélectionne pas systématiquement le maximum entre RECO1 et RECO2. Il utilise un arbre de décision intelligent avec 3 branches distinctes :
CHEMIN 1 - Gel du prix : Lorsque le nouveau PAS est inférieur au PAS actif, le prix est gelé totalement (0% de hausse). Rationale : ne pas répercuter les baisses de coût d'achat aux clients.
CHEMIN 2 - Conservation premium : Lorsque le prix actuel est dans le palier PL1 des anciennes bornes, conservation du prix actuel avec plancher de sécurité PL2_PL3. Rationale : maintenir les clients premium en position haute.
CHEMIN 3 - Optimisation standard : Pour tous les autres cas, application de MAX(RECO1 cappée, RECO2) avec cascade complète de cappings.
Ce système permet d'adapter la stratégie tarifaire selon le contexte spécifique de chaque offre.
3. Cascade de cappings¶
Les cappings (plafonds de hausse) sont appliqués en cascade hiérarchisée uniquement sur le CHEMIN 3 :
- Capping sensibilité prix : Selon la classification HIGH/MEDIUM/LOW héritée de PT1CE
- HIGH : 2,5% maximum (produits très sensibles)
- MEDIUM : 5% maximum (sensibilité modérée)
-
LOW : 7,5% maximum (faible sensibilité)
-
Capping produits basiques : 50% maximum pour les produits classés "Basiques"
- Écrase le capping sensibilité si plus restrictif
-
Protection contre les hausses excessives sur commodités
-
Capping PRB final : Plafond absolu (tous chemins)
- Empêche tout dépassement du PRB nouvelles bornes
- Garantit la cohérence avec les corridors PT1CE
Ordre de priorité : Un capping de niveau supérieur peut écraser un capping de niveau inférieur.
4. Enrichissement historique transactionnel¶
Chaque offre est enrichie avec les métriques des 4 derniers trimestres fiscaux complets :
Métriques globales (hors prix promo) : - CA total (MT_CAB_4Q) - Volumes UF et KG (QT_UF_4Q, QT_KG_4Q)
Métriques par type de prix : - Prix fermes : CA, UF, KG dédiés - Prix indexés : CA, UF, KG dédiés
Ces données permettent d'identifier les couples client-article actifs et d'évaluer l'importance de chaque relation commerciale.
5. Triple positionnement tarifaire¶
PT2QE calcule et affiche 3 positions distinctes pour chaque offre :
Position 1 : Prix actuel dans les anciennes bornes (PT0CE) - Montre d'où on part historiquement - Référence pré-optimisation PT1CE
Position 2 : Prix actuel dans les nouvelles bornes (PT1CE) - Révèle l'impact du recalibrage PT1CE - Le prix peut avoir changé de palier sans bouger
Position 3 : Prix recommandé dans les nouvelles bornes (PT2QE) - Montre où on arrive après optimisation PT2QE - Objectif : remonter vers les paliers supérieurs
Les 8 positions possibles : ABOVE_PRB, PL1, PL2, PL3, PL4, PL5, PL6, PLX, BELOW_PAS
Cette triple vision permet de comprendre l'évolution complète du pricing.
6. Stratégie de fallback MASTER → NATIONAL¶
Pour maximiser la couverture, PT2QE utilise une stratégie de matching en 2 étapes :
Tentative 1 - MASTER : Match exact avec les 4 dimensions - ID_ART × TYPE_CLIENT × TYPE_RESTAURANT × GEO - Corridors les plus spécifiques et pertinents
Tentative 2 - NATIONAL : Si échec, fallback vers le corridor national - ID_ART × NATIONAL × NATIONAL × NATIONAL - Vision agrégée, moins spécifique mais garantit une couverture
Le champ MATCH_TYPE permet de tracer quel corridor a été utilisé.
Workflow principal¶
PT2QE s'articule autour de 3 étapes séquentielles, dont 2 obligatoires et 1 optionnelle.
Étape 1 : Calcul des recommandations (OBLIGATOIRE)¶
Fichier : 1_calculer_recommendations.bat ou Menu Option 1
Phases d'exécution : 1. Extraction des offres actuelles (ZOOM1 uniquement) 2. Enrichissement avec historique 4 derniers trimestres fiscaux 3. Jointure avec corridors PT1CE_OPTIMAL_* (MASTER puis NATIONAL) 4. Calcul RECO1 (repositionnement selon règles paramétrables) 5. Calcul RECO2 (hausse proportionnelle PAS) 6. Application cascade cappings (sensibilité → basiques) 7. Exécution arbre de décision (3 chemins) 8. Génération analyses détaillées (6 fichiers CSV)
Fichier requis : inputs/capping_type_client.csv
Résultats générés :
- recommendations_detail.csv : Détail ligne à ligne avec traçabilité complète
- statistics_by_dimension.csv : Agrégations par TYPE_CLIENT, TYPE_RESTAURANT, UNIVERS
- impact_analysis.csv : Impact CA et distribution hausses par segment
- price_increase_distribution.csv : Histogramme global des hausses
- decision_path_analysis.csv : Statistiques par chemin de décision
- capping_distribution.csv : Impact détaillé des cappings
- capping_cubes_generated.csv : Cappings générés par cube (référence pour ajustements)
Durée estimée : 20-40 minutes selon volumétrie
Étape 2 : Ajustement des cappings (OPTIONNEL)¶
Fichier : 2_ajuster_cappings.bat ou Menu Option 2
Quand utiliser cette étape : - Après analyse des résultats de l'étape 1 - Si certains segments ont des hausses trop agressives ou trop conservatrices - Si une stratégie différenciée par cube est nécessaire
Processus :
1. Copier capping_cubes_generated.csv vers corrections/
2. Renommer en capping_cubes_corrections.csv
3. Modifier les valeurs CAPPING_HIGH/MEDIUM/LOW selon la stratégie souhaitée
4. Relancer le calcul avec les nouveaux paramètres
Caractéristiques :
- Recalcul complet sans réextraire les offres (--skip-extraction)
- Réutilise les tables existantes pour gain de temps
- Permet des itérations rapides (10-20 minutes)
- Génération d'un nouveau dossier outputs/corrections_*
Cas d'usage typiques : - Assouplir les cappings pour un segment spécifique (ex: RCI PI GI) - Durcir les cappings pour des produits sensibles - Créer une stratégie progressive par zone géographique
Étape 3 : Génération des offres finales (OBLIGATOIRE)¶
Fichier : 3_generer_offres_finales.bat ou Menu Option 3
Prérequis : - Avoir exécuté l'étape 1 - Avoir validé les résultats (avec ou sans ajustements étape 2)
Génération :
- final_price_offers.csv : Export final client × article
- validation_report.csv : Statistiques de validation
- export_summary.txt : Résumé textuel
Format du fichier final : - ID_CLN, ID_ART, ID_CND : Identifiants SAP - PRIX_TARIF_ACTUEL : Prix actuel de référence - NOUVEAU_PRIX : Prix recommandé PT2QE - PCT_HAUSSE : Pourcentage de hausse appliqué - Les 3 positions : Anciennes bornes, nouvelles bornes, après reco - VALIDATION_STATUS : Statut (VALIDE, A_VERIFIER, ANOMALIE)
Durée estimée : 2-5 minutes
Utilisation : Ce fichier est prêt pour intégration dans les outils de pricing ou import SAP.
Prérequis obligatoires¶
1. Exécution préalable de PT1CE¶
PT2QE dépend strictement de PT1CE. Les tables PT1CE_OPTIMAL_* doivent exister :
PT1CE_OPTIMAL_ZOOM1(obligatoire - PT2QE en mode ZOOM1 exclusif)PT1CE_OPTIMAL_ZOOM2(non utilisé actuellement)PT1CE_OPTIMAL_ZOOM3(non utilisé actuellement)
Workflow PT1CE requis : 1. PT1CE Option 1 : Application nouveaux PAS/PRB 2. PT1CE Option 2 : Finalisation corridors (crée PT1CE_OPTIMAL_*)
Vérification : PT2QE Menu Option 5 → Vérifier les prérequis
2. Tables de mapping PT0CE¶
Deux tables de correspondance doivent exister :
PT0CE_TYPE_CLIENT_MAPPING : - Colonnes : UNIVERS, ID_TC_CG, ID_TC_CIBLE, FG_HM, TYPE_CLIENT - Permet de passer des codes SAP aux segments métier - Gère la dualité mercuriale (FG_HM='0') / hors mercuriale (FG_HM='1')
PT0CE_TYPE_RESTAURANT_MAPPING : - Colonnes : LC_SFC_CIBLE, Type_Restaurant - Segmentation par type d'établissement client
3. Fichier de capping obligatoire¶
Fichier : inputs/capping_type_client.csv
Format :
TYPE_CLIENT;CAPPING_HIGH;CAPPING_MEDIUM;CAPPING_LOW
RCI PI GI;0,025;0,05;0,075
RSI HM;0,025;0,05;0,075
Valeurs recommandées : - CAPPING_HIGH : 2,5% à 5% - CAPPING_MEDIUM : 5% à 10% - CAPPING_LOW : 7,5% à 15%
4. Configuration système¶
Environnement Python :
- Python 3.8+
- Modules : pandas, numpy, oracledb, openpyxl
- Variable PYTHONPATH pointant vers P:\PRD\Python\00_Commun\libs
Accès Oracle : - Connexion à la base TARIFAIRE (par défaut) - Permissions lecture sur : SYS_TARIF_SIMULATION, SYS_MD_CLIENT, SYS_MD_ARTICLE, SYS_FACTURE_LIGNE, SYS_MD_CALENDRIER_SYSCO - Permissions écriture pour création tables PT2QE_*
Navigation dans la documentation¶
Cette documentation est structurée en modules thématiques. Voici un guide de navigation selon vos besoins :
Pour comprendre les mécanismes¶
Section Concepts : - Les 2 types de recommandations en détail - Fonctionnement de l'arbre de décision - Logique de cascade des cappings - Stratégie de matching corridors - Les 3 positions tarifaires
Section Calculs : - Formules de calcul RECO1 et RECO2 - Algorithme de sélection finale - Calcul des pourcentages de hausse - Règles de repositionnement paliers - Exemples chiffrés
Pour travailler avec l'application¶
Section Workflow : - Guide pas à pas des 3 étapes - Quand utiliser l'ajustement de cappings - Interprétation des résultats - Bonnes pratiques d'utilisation - Scénarios d'usage typiques
Section Capping : - Philosophie du système de capping - Paramétrage des cappings par type client - Ajustements par cube (corrections) - Stratégies de capping recommandées - Impact business des différents niveaux
Section Guide d'utilisation : - Lancement de l'application (menu, scripts) - Préparation des fichiers d'entrée - Interprétation des résultats - Gestion des itérations - Déploiement des recommandations
Pour les aspects techniques¶
Section Architecture : - Structure du code Python - Organisation des modules - Rôle de chaque composant - Flux de données - Points d'extension
Section Tables : - Structure des tables PT2QE_* - Champs clés et leurs significations - Relations entre les tables - Index et performances - Volumes de données
Section Mapping : - Rôle des tables de mapping PT0CE - Construction du FG_HM dynamique - Détermination de l'UNIVERS - Enrichissement dimensionnel - Traçabilité des correspondances
Section Exports : - Description des 6 fichiers CSV générés - Format et structure de chaque export - Utilisation pour analyses pivots - Visualisations recommandées - Intégration dans d'autres outils
En cas de problème¶
Section Troubleshooting : - Messages d'erreur courants - Solutions aux problèmes fréquents - Diagnostic des échecs - Vérification de la qualité des résultats - Contacts et support
Points d'attention critiques¶
1. Mode ZOOM1 exclusif¶
PT2QE fonctionne actuellement en mode ZOOM1 uniquement. Tous les filtres et extractions sont paramétrés pour ce périmètre :
- Seules les offres ZOOM1 sont extraites
- Seuls les corridors PT1CE_OPTIMAL_ZOOM1 sont utilisés
- Les mappings doivent couvrir le périmètre ZOOM1
Impact : Les autres univers (ZOOM2, ZOOM3) ne sont pas traités par PT2QE. Si nécessaire, l'extension à d'autres univers nécessite des ajustements dans le code.
2. Historique transactionnel obligatoire¶
PT2QE enrichit systématiquement chaque offre avec l'historique des 4 derniers trimestres fiscaux complets. Cet enrichissement est obligatoire même si les métriques ne sont pas utilisées dans les calculs de recommandations.
Période analysée : Déterminée automatiquement via SYS_MD_CALENDRIER_SYSCO
Filtres appliqués : - Uniquement ZF2 (factures de vente) - Hors prestations (FG_PRESTA = '0') - Hors prix promo (via PRP_LABELS) - Marchandises uniquement (FG_MARCHANDISE = 'X' ou '1') - MT_GM4 renseigné
3. Détermination dynamique du FG_HM¶
Le statut mercuriale n'est pas stocké dans les conditions de prix. PT2QE le détermine dynamiquement depuis l'historique transactionnel :
FG_HM = '1': Hors mercuriale (prix négocié)FG_HM = '0': En mercuriale (prix catalogue)
Cette information est essentielle car elle conditionne le mapping vers TYPE_CLIENT et donc le choix du corridor PT1CE.
4. Paramétrage des règles RECO1¶
Les règles de repositionnement pour RECO1 sont paramétrables via le fichier config/pt2qe_config.json. Il est possible de modifier la stratégie sans toucher au code :
Exemple de personnalisation : - Changer la cible de repositionnement (ex: PL3_PL4 → PL1 au lieu de PL2) - Ajouter des règles conditionnelles supplémentaires - Ajuster l'agressivité du repositionnement
Attention : Toute modification doit respecter la syntaxe JSON et la logique métier.
5. Volumétrie importante¶
PT2QE traite potentiellement des millions de lignes (clients × articles). Les performances dépendent de :
- Qualité des index Oracle
- Parallélisation des requêtes (PARALLEL hint)
- Compression des tables (COMPRESS)
- Ressources serveur disponibles
Temps de traitement observés : - Étape 1 : 20-40 minutes pour ~2M offres - Étape 2 : 10-20 minutes (réutilise tables existantes) - Étape 3 : 2-5 minutes (export uniquement)
6. Workflow itératif par conception¶
PT2QE est conçu pour l'itération rapide. L'étape 2 (ajustement cappings) peut être répétée autant de fois que nécessaire :
Cycle typique :
1. Calcul initial → Analyse résultats → Ajustement cappings → Nouvelle analyse
2. Comparaison avant/après dans dossiers séparés (run_* vs corrections_*)
3. Convergence progressive vers la stratégie tarifaire souhaitée
Astuce : Conserver l'historique des runs permet de tracer l'évolution de la stratégie.
7. Traçabilité complète¶
Chaque recommandation contient tous les champs intermédiaires de calcul :
RECO1_BASE: Recommandation 1 brute (sans capping)RECO1_APRES_CAPPING_SENSIBILITE: Après étape 1 de cappingRECO1_AVEC_CAPPING: Après cascade complète (étapes 1+2)RECO2: Recommandation 2DECISION_PATH: Chemin emprunté dans l'arbreRECO_SELECTIONNEE: Quelle recommandation a été retenueCAPPING_APPLIED: Type de capping le plus contraignant
Cette transparence permet d'auditer chaque décision et de comprendre pourquoi un prix a été retenu.
Différences avec PT1CE¶
PT1CE et PT2QE sont complémentaires mais ont des rôles distincts :
| Critère | PT1CE (Tier 1) | PT2QE (Tier 2) |
|---|---|---|
| Maille | Corridor (article × segment) | Client × Article |
| Objectif | Optimiser les corridors de prix | Personnaliser les offres |
| Input | Statistiques marge PT0CE | Corridors optimaux PT1CE |
| Calcul | Nouveaux PAS/PRB/bornes | Recommandations individuelles |
| Output | Tables PT1CE_OPTIMAL_* | Offres finales client × article |
| Volume | Quelques milliers corridors | Potentiellement millions offres |
| Fréquence | Campagne tarifaire (trimestrielle/semestrielle) | À la demande |
| Export | Format SAP (configuration mass) | Format conditions individuelles |
Séquence logique : 1. PT1CE définit la stratégie globale (corridors optimaux) 2. PT2QE décline cette stratégie au niveau opérationnel (prix personnalisés)
Les deux systèmes utilisent le même référentiel de données mais avec des granularités différentes.
Limitations connues¶
1. Périmètre ZOOM1 uniquement¶
Actuellement, PT2QE ne traite que les offres classées en ZOOM1. Les offres ZOOM2 et ZOOM3 ne sont pas couvertes.
Impact : Couverture partielle du portefeuille tarifaire.
Solution future : Extension progressive aux autres univers avec adaptation des règles métier.
2. Dépendance stricte à PT1CE¶
PT2QE ne peut fonctionner sans les tables PT1CE_OPTIMAL_*. Il n'y a pas de mode dégradé.
Mitigation : Toujours exécuter PT1CE avant PT2QE dans le workflow tarifaire.
3. Historique 4Q requis¶
L'enrichissement historique est obligatoire et peut poser problème pour : - Nouveaux articles sans historique - Nouveaux clients sans transactions - Périodes de référence incomplètes
Comportement : Les métriques sont à zéro (NVL(..., 0)) mais l'offre est tout de même traitée.
4. Pas de prise en compte des stocks¶
PT2QE ne tient pas compte des niveaux de stock ou des ruptures prévisionnelles. Les recommandations sont purement tarifaires.
Conséquence : Des ajustements manuels peuvent être nécessaires en fonction du contexte logistique.
5. Pas de simulation de scénarios¶
PT2QE calcule un seul jeu de recommandations par exécution. Il n'y a pas de fonctionnalité de simulation de scénarios multiples en parallèle.
Contournement : Exécuter plusieurs runs avec des paramètres différents et comparer manuellement.
Évolutions futures envisagées¶
Court terme¶
- Extension ZOOM2/ZOOM3 : Couverture complète du portefeuille
- Mode simulation avancée : Calcul de plusieurs scénarios en parallèle
- Tableau de bord interactif : Visualisation des résultats avec filtres dynamiques
- Alertes automatiques : Détection des hausses anormales ou des incohérences
Moyen terme¶
- Intelligence artificielle : Apprentissage des patterns de succès tarifaire
- Prise en compte stocks : Intégration contraintes logistiques
- API REST : Exposition des recommandations en temps réel
- Historisation : Suivi longitudinal des recommandations déployées
Long terme¶
- Pricing dynamique : Ajustements en fonction de la demande
- Analyse concurrentielle : Intégration prix marché
- Optimisation multi-objectifs : Équilibre CA / marge / volume
- Recommandations proactives : Suggestions automatiques selon contexte
Support et ressources¶
Documentation technique¶
- README.md (ce document) : Vue d'ensemble et navigation
- Section Concepts : Compréhension des mécanismes
- Section Calculs : Formules et algorithmes
- Section Architecture : Structure technique
- Section Tables : Données et schémas
- Section Workflow : Guide opérationnel
- Section Capping : Stratégie de plafonnement
- Section Mapping : Enrichissement dimensionnel
- Section Exports : Résultats et analyses
- Section Guide d'utilisation : Mode d'emploi
- Section Troubleshooting : Résolution de problèmes
Fichiers de configuration¶
config/pt2qe_config.json: Paramétrage des règles de calculinputs/capping_type_client.csv: Cappings par segmentcorrections/capping_cubes_corrections.csv: Ajustements par cube (optionnel)
Outils de diagnostic¶
- Menu Option 5 : Vérification des prérequis (connexion, tables PT1CE, mappings)
validate_mappings.py: Script de validation des correspondances PT0CEtest_connection.py: Test de connexion Oracle
Logs et traçabilité¶
Tous les traitements génèrent des logs détaillés incluant : - Timestamp de chaque phase - Volumétrie traitée (nombre d'offres, clients, articles) - Statistiques de matching (MASTER vs NATIONAL) - Avertissements et erreurs éventuels - Durée d'exécution
Les logs sont affichés dans la console et peuvent être redirigés vers un fichier.
Conclusion¶
PT2QE est un système sophistiqué de pricing personnalisé qui transforme les corridors théoriques PT1CE en recommandations opérationnelles client × article. Sa force réside dans :
- Double recommandation : RECO1 (repositionnement) et RECO2 (proportionnelle) pour maximiser les opportunités
- Arbre de décision intelligent : 3 chemins adaptatifs selon le contexte
- Cascade de cappings : Protection multi-niveaux contre les hausses excessives
- Enrichissement transactionnel : Contexte historique de chaque relation commerciale
- Triple positionnement : Vision complète de l'évolution tarifaire
- Workflow itératif : Ajustements rapides jusqu'à convergence stratégique
Utilisation recommandée : 1. Exécuter PT1CE pour définir les corridors optimaux 2. Lancer PT2QE étape 1 pour les recommandations initiales 3. Analyser les résultats et identifier les ajustements nécessaires 4. Itérer avec l'étape 2 jusqu'à satisfaction 5. Générer l'export final avec l'étape 3 6. Déployer les nouvelles conditions de prix
Pour toute question ou besoin d'assistance, référez-vous aux différentes sections de documentation listées dans ce README.
Version : 1.0.0
Dernière mise à jour : Novembre 2025