diff --git a/src/features/ai-copilot/components/ai-insight-block.tsx b/src/features/ai-copilot/components/ai-insight-block.tsx index 95b0311..40a262a 100644 --- a/src/features/ai-copilot/components/ai-insight-block.tsx +++ b/src/features/ai-copilot/components/ai-insight-block.tsx @@ -25,7 +25,7 @@ export function AiInsightBlock({ row }: AiInsightBlockProps) { const status = insight?.status ?? "idle"; - const handleAnalyze = () => { + const handleAnalyze = async () => { if (status === "loading") return; // Reset Visuel Immédiat @@ -35,6 +35,20 @@ export function AiInsightBlock({ row }: AiInsightBlockProps) { const allRows = useGridStore.getState().rows; const rayonRows = allRows.filter(r => r.libelleNiveau2 === row.libelleNiveau2); + // Fetch local context if needed + let supplierContext = ""; + if (row.codeFournisseur) { + try { + const ctxRes = await fetch(`/api/ai/context?fournisseur=${row.codeFournisseur}`); + if (ctxRes.ok) { + const data = await ctxRes.json(); + supplierContext = data.context || ""; + } + } catch (err) { + console.error("Failed to load supplier context for AI", err); + } + } + // Préparation du ScoringEngine const regScore = Object.values(row.sales12m || {}).filter((v: any) => v > 0).length; const weight = (row.workingStores?.length || 1) === 1 ? 2 : 1; @@ -94,6 +108,7 @@ export function AiInsightBlock({ row }: AiInsightBlockProps) { totalFournisseurCa: row.totalFournisseurCa, codeFournisseur: row.codeFournisseur, totalMagasins: 2, + supplierContext: supplierContext, scoring: { compositeScore: scoringResult.compositeScore, decision: scoringResult.decision.recommendation, diff --git a/src/features/grid/components/bulk-ai-analyzer.tsx b/src/features/grid/components/bulk-ai-analyzer.tsx index a754c0f..4d99d20 100644 --- a/src/features/grid/components/bulk-ai-analyzer.tsx +++ b/src/features/grid/components/bulk-ai-analyzer.tsx @@ -61,6 +61,20 @@ export function BulkAiAnalyzer() { } }); + // 1. Fetch AI Context for the Supplier + let supplierContext = ""; + if (supplierCode) { + try { + const ctxRes = await fetch(`/api/ai/context?fournisseur=${supplierCode}`); + if (ctxRes.ok) { + const data = await ctxRes.json(); + supplierContext = data.context || ""; + } + } catch (err) { + console.error("Failed to load supplier context for AI", err); + } + } + const initialPayloads: ProductAnalysisInput[] = rows.map((r) => { const sc = r.workingStores?.length || 1; const weight = sc === 1 ? 2 : 1; @@ -108,6 +122,7 @@ export function BulkAiAnalyzer() { projectedTotalCa: regScore > 0 ? (r.totalCa || 0) * weight * (12 / regScore) : (r.totalCa || 0) * weight, lastMonthWithSale: lastMonth, inactivityMonths: inactivity, + supplierContext: supplierContext }; }); diff --git a/src/features/grid/components/supplier-ai-context-modal.tsx b/src/features/grid/components/supplier-ai-context-modal.tsx index f0196e7..e6d1f27 100644 --- a/src/features/grid/components/supplier-ai-context-modal.tsx +++ b/src/features/grid/components/supplier-ai-context-modal.tsx @@ -71,7 +71,7 @@ export function SupplierAiContextModal({ codeFournisseur, nomFournisseur }: Supp Règles IA - + Contexte IA - {nomFournisseur || codeFournisseur}