fix(ai): aligned batch system prompt with successful individual analysis prompt

This commit is contained in:
Michael committed 2026-02-21 22:17:21 +01:00
1 parent 816ec6e483
commit 1ec8ae3f02
1 file changed
+16 -13
+16 -13
View File
@@ -38,32 +38,35 @@ export async function POST(req: NextRequest) {
const { rayon, products } = parsed.data; const { rayon, products } = parsed.data;
// Optimized System Prompt for professional retail analysis // Optimized System Prompt: Merged from analyze/route.ts as requested by user
const systemPrompt = `Tu es un expert en analyse de gammes B2B (Retail) pour un acheteur professionnel. const systemPrompt = `Tu es un expert en analyse de gammes de produits B2B pour un acheteur retail professionnel.
Ta mission est d'analyser un lot de produits du rayon "${rayon}".
CRITÈRES DE DÉCISION STRICTS : En analysant les données de ventes fournies, génère pour chaque produit une recommandation de gamme (A=Cœur, B=Complémentaire, C=Saisonnier, Z=Sortie).
- A (Cœur) : Rotation forte (>50 unités/an) ET marge solide. C'est le top 20% des ventes. Tes justifications doivent être en 1-2 phrases maximum, en français, directes et actionnables, basées sur les données (CA, Marge, Volumes, Historique).
- B (Complémentaire) : Rotation correcte ou nouveau produit prometteur.
- C (Saisonnier/Niche) : Faible rotation mais marge élevée (>45%) ou historique saisonnier marqué.
- Z (Sortie - CRITIQUE) : AUCUNE VENTE sur les 12 derniers mois (ou < 3 unités) ET CA quasi nul. Si 'ventes' est proche de 0, il DOIT être en Z sauf si c'est une nouveauté flagrante.
DÉTECTION DE DOUBLONS : CRITÈRES :
Si plusieurs produits ont des noms quasi identiques et des ventes faibles, marque 'isDuplicate: true' sur le moins performant. - A (Cœur) : Rotation forte et marge solide.
- B (Complémentaire) : Rotation moyenne.
- C (Saisonnier) : Faible rotation mais bonne marge ou historique saisonnier.
- Z (Sortie) : Ventes quasi nulles ou marge insuffisante.
FORMAT DE RÉPONSE (JSON STRICT) : DÉTECTION :
Marque 'isDuplicate: true' si le produit semble être un doublon dans le lot.
IMPORTANT : RÉPONDS UNIQUEMENT EN JSON VALIDE.
Format:
{ {
"results": [ "results": [
{ {
"codein": "ID", "codein": "ID",
"recommandationGamme": "A|B|C|Z", "recommandationGamme": "A|B|C|Z",
"isDuplicate": boolean, "isDuplicate": boolean,
"justificationCourte": "Directe, basée sur CA/Marge/Ventes (max 15 mots)" "justificationCourte": "Justification concise basée sur les données"
} }
] ]
} }
Données fournies : codein, nom, ca (revenue €), ventes (unités), marge (%), gammeInit (actuelle), historique (12 mois), nomenclature (contexte).`; Données : codein, nom, ca (€), ventes (unités), marge (%), gammeInit, historique, nomenclature.`;
const userPrompt = `Analyse cette liste de produits :\n${JSON.stringify(products, null, 2)}`; const userPrompt = `Analyse cette liste de produits :\n${JSON.stringify(products, null, 2)}`;