feat: Implement AI copilot v4 analysis engine with refined rules and product context profiling.

This commit is contained in:
Michael committed 2026-03-05 12:51:40 +01:00
1 parent 2edf6202ab
commit 3ba16d0895
2 files changed
+7 -4

No files matched your search

@@ -26,7 +26,7 @@ IMPORTANT : La gamme C est RÉSERVÉE aux produits saisonniers et gérée MANUEL
Cependant, si les performances réelles du produit sont clairement insuffisantes (CA dérisoire, marge nulle ou négative), tu PEUX passer outre la protection et recommander Z avec justification.
2. SEUIL PLANCHER ABSOLU (règle critique) :
Si isLowContribution = true [poids CA < 0.5% ET poids QTÉ < 0.5% du fournisseur]
Si isLowContribution = true [percentile CA <= 30 ET percentile QTÉ <= 30 du fournisseur]
ET score composite < 35
ET scoreCritique = true [score brut < 20]
→ Z DIRECT. Ce produit est marginal et sous-performant.
@@ -48,6 +48,7 @@ IMPORTANT : La gamme C est RÉSERVÉE aux produits saisonniers et gérée MANUEL
Sinon → A si actif (inactivité < 3 mois), Z si inactif ≥ 3 mois.
— Quadrant WATCH ⚠️ : Signal négatif.
Si poids CA rayon > 5% ou poids QTÉ rayon > 5% → A (surveiller).
Si percentileCa >= 50 ou percentileQty >= 50 → A (produit trop important au fournisseur).
Sinon → Z si inactivité ≥ 2 mois, A si actif.
--- COHÉRENCE INTER-PRODUITS ---
@@ -116,7 +117,7 @@ JSON uniquement, sans markdown.
// Signal rouge prioritaire
if (ctx.isLowContribution) {
lines.push(`[⛔ CONTRIBUTION FAIBLE] Poids CA réseau : ${ctx.weightCaFournisseur}% et Poids QTÉ réseau : ${ctx.weightQtyFournisseur}% → produit marginal pour le fournisseur`);
lines.push(`[⛔ CONTRIBUTION FAIBLE] Percentiles CA (${ctx.percentileCa}) et QTÉ (${ctx.percentileQty}) dans les 30% inférieurs → produit marginal`);
}
if (ctx.scoreCritique) {
lines.push(`[⛔ SCORE CRITIQUE] Score brut < 20 → sous-seuil absolu`);
@@ -92,7 +92,7 @@ export interface ProductContextProfile {
// Signal négatif fort
/**
* Le produit pèse moins de 0.5% du CA ET des QTÉ du fournisseur.
* Le produit appartient aux 30% les moins performants en CA et Quantité.
*/
isLowContribution: boolean;
@@ -226,7 +226,9 @@ export class ContextProfiler {
// Bug fix : un produit dans le top 30% de marge du lot apporte une valeur
// réelle en rentabilité. L'exclure du signal isLowContribution évite de le
// pénaliser uniquement parce que son volume/CA est faible (profil 💎 pur).
const isLowContribution = weightCaFournisseur < 0.5 && weightQtyFournisseur < 0.5 && pMarge <= 70;
// Le seuil de faible contribution utilise désormais des percentiles plutôt
// que des valeurs absolues pour ne pas pénaliser les gros fournisseurs.
const isLowContribution = pCa <= 30 && pQty <= 30 && pMarge <= 70;
// 6. Signaux Trafic / Marge + Quadrant (sur valeurs PAR MAGASIN)
// Médianes calculées ici pour être disponibles dans les sections 6 ET 7.