feat: introduce AI analysis engine with refined product recommendation hierarchy and update task plan to reflect BMAD agent workflow.

This commit is contained in:
Michael committed 2026-02-23 15:17:51 +01:00
1 parent 423cb1e74b
commit 7538bf4629
2 files changed
+39 -30

No files matched your search

@@ -4,21 +4,20 @@ export class AnalysisEngine {
static generateSystemPrompt(): string {
return `Tu es Mary, experte en analyse de gammes retail B2B. Ta mission est d'aider un acheteur à arbitrer son assortiment.
HIÉRARCHIE D'ANALYSE (CRITIQUE) :
1. VALEUR BUSINESS (Priorité Maximale) : Analyse le CA et la Marge brute. Un produit à forte marge ou contribution CA significative doit être protégé, même si les volumes sont faibles.
2. RÉGULARITÉ & SERVICE : Un produit vendu régulièrement (même 1 unité/mois) peut être un "Produit de Service" essentiel pour le client et mérite souvent d'être maintenu en gamme [A].
3. SCORE GLOBAL (Indicateur Secondaire) : Le score est une aide, pas une sentence. Un score < 30 n'implique PAS automatiquement une sortie [Z].
RÈGLES D'OR :
1. VÉRACITÉ ABSOLUE : Ne déforme JAMAIS les chiffres fournis (score, volumes, marges). Si le score est de 53.5, ne dis jamais qu'il est < 30.
2. ANALYSE MULTI-CRITÈRES : Le score est un indicateur important mais pas unique. Analyse la cohérence entre le score, le volume de vente et la régularité.
3. JUSTIFICATION FACTUELLE : Base tes recommandations [A], [C] ou [Z] sur les FAITS fournis, même s'ils contredisent les tendances générales.
1. VÉRACITÉ ABSOLUE : Ne déforme JAMAIS les chiffres fournis.
2. PAS DE COUPERET : Évite de recommander [Z] uniquement sur la base d'un score faible.
3. JUSTIFICATION BUSINESS : Précise toujours si la recommandation est basée sur la rentabilité (marge), le service (régularité) ou la performance globale (score).
Options de recommandation :
- [A] - PERMANENT : Rotation régulière, produit de fond de rayon.
- [A] - PERMANENT : Rotation régulière ou produit stratégique/marge/service.
- [C] - SAISONNIER : Pics de ventes concentrés, inactivité hors saison.
- [Z] - SORTIE : Fin de cycle, rotation insuffisante ou en chute libre.
Critères d'Aide à la Décision (Indicatifs) :
- Score Global > 70 : Forte présomption pour [A].
- Score Global < 30 : Forte présomption pour [Z].
- Entre 30 et 70 : Zone pivot nécessitant une analyse fine de la marge et de la régularité.
- Inactivité > 2 mois : Signal d'alerte pour [Z] ou [C].
- [Z] - SORTIE : Inutilité business prouvée (CA quasi-nul + Marge faible + Score bas + Inactif).
Ta réponse doit être courte, directe et sans complaisance.
Format : "[Recommandation] : [Justification factuelle]"`;
@@ -29,8 +28,8 @@ Format : "[Recommandation] : [Justification factuelle]"`;
.map(([k, v]) => `${k}: ${Math.round(v)}u`)
.join(", ");
const volumeInfo = `Stats Réelles : ${Math.round(p.totalQuantite)}u (${p.totalCa.toFixed(2)}€) sur ${p.storeCount} mag.
Stats Pondérées (Base 2 mag) : ${Math.round(p.weightedTotalQuantite || 0)}u (${(p.weightedTotalCa || 0).toFixed(2)}€)`;
const volumeInfo = `Stats Réelles : ${Math.round(p.totalQuantite)}u sur ${p.storeCount} mag.
Stats Pondérées (Base 2 mag) : ${Math.round(p.weightedTotalQuantite || 0)}u`;
const projectionInfo = p.regularityScore > 0 && p.regularityScore < 12 ? `
--- ANALYSE DE POTENTIEL (Produit récent : ${p.regularityScore}/12 mois active) ---
@@ -49,10 +48,13 @@ Benchmarks Rayon ("${p.libelleNiveau2}") :
- Rayon : ${p.libelleNiveau2 || "Non classé"}
- Gamme actuelle : ${p.codeGamme ?? "Non définie"}
DONNÉES FACTUELLES (À RESPECTER SCRUPULEUSEMENT) :
- Score Global App : ${p.score.toFixed(1)}/100
- Régularité des ventes : ${p.regularityScore}/12 mois
INDICATEURS BUSINESS (PRIORITAIRES) :
- Marge brute : ${p.tauxMarge.toFixed(1)}%
- Total CA : ${p.totalCa.toFixed(2)}€
- Régularité des ventes : ${p.regularityScore}/12 mois active
INDICATEURS TECHNIQUES (SECONDAIRES) :
- Score Global App : ${p.score.toFixed(1)}/100
${volumeInfo}${projectionInfo}${activityAlert}${benchmarks}
- Historique mensuel (Pondéré) : ${monthlySummary}
+21 -14
View File
@@ -1,23 +1,30 @@
# Context
Create a PRD for a retail analytics application. The app will manage product collections, analyze sales (quantity, revenue, margin) from a PostgreSQL database for 2 stores, and classify products into ranges (Gamme A, B, C) to determine profitability and retention.
Activation de l'Agent Master BMAD pour la gestion du projet CollectFlow selon la méthodologie BMAD.
# Current Focus
# Current Focus
Activation et initialisation de l'Agent Master BMAD.
Analyse du déclenchement des scores lors du rafraîchissement SQL.
- [x] Étape 11 : Polissage final et validation du PRD
- [x] PRD Finalisé et prêt pour la suite (Architecture/UX)
- [x] Investigation et correction du bug de recommandation IA (Mary)
- [x] Étape 1 : Lecture de la configuration et de la persona de l'Agent Master
- [x] Étape 2 : Initialisation des variables de session (user_name, language, output_folder)
- [x] Étape 3 : Accueil de l'utilisateur et affichage du menu principal
- [x] Étape 4 : Exécution du workflow Party Mode ([PM])
- [x] Étape 5 : Discussion multi-agents : Refonte de la logique de recommandation
- [x] Étape 6 : Proposition technique et plan d'implémentation
- [x] Étape 7 : Application des modifications dans `analysis-engine.ts`
- [x] Étape 8 : Vérification et validation
# Progress Log
- Correction du bug SQL (filtre 12 mois) effectuée et validée par Michael.
- Synchronisation du dépôt local (108 commits récupérés de origin/main).
- Exécution du workflow /create-prd (Étapes 8 à 12).
- Synthèse de 22 Functional Requirements (Étape 9) et définition des NFR (Étape 10).
- Polissage complet du document pour éliminer les redondances (Étape 11).
- PRD archivé dans `prd.md` et prêt pour validation de l'implémentation.
- Début de l'implémentation du bouton de rafraîchissement SQL (demande Michael).
- Initialisation de la tâche d'activation de l'Agent Master BMAD.
- Variables de session chargées : Michael, French, _bmad-output.
- Michael a sélectionné "pm" (Party Mode). Lancement du workflow.
- Manifeste des agents chargé (20 agents détectés).
- Session Party Mode activée.
- Michael soulève un problème sur le seuil arbitraire de score < 30 (impact petits fournisseurs).
- Analyse en cours de `src/features/ai-copilot/business/analysis-engine.ts`.
- Plan d'implémentation validé par Michael.
- Déploiement de la nouvelle hiérarchie d'analyse (CA/Marge > Score).
- Suppression des seuils de blocage score < 30.
- Mise en avant des "Produits de Service".