mirror of
https://github.com/R0m1k3/CollectFlow.git
synced 2026-10-11 17:26:32 +02:00
feat: introduce AI analysis engine with refined product recommendation hierarchy and update task plan to reflect BMAD agent workflow.
This commit is contained in:
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}
|
||||
|
||||
|
||||
@@ -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".
|
||||
Reference in new issue
Block a user