diff --git a/src/features/ai-copilot/business/analysis-engine.ts b/src/features/ai-copilot/business/analysis-engine.ts index 46c9ac7..5b8978e 100644 --- a/src/features/ai-copilot/business/analysis-engine.ts +++ b/src/features/ai-copilot/business/analysis-engine.ts @@ -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} diff --git a/task.md b/task.md index 1f57a59..1ac9c02 100644 --- a/task.md +++ b/task.md @@ -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".