From c33e22f7ebb513f2a7024606c71d2961d3d48714 Mon Sep 17 00:00:00 2001 From: Michael SCHAL Date: Wed, 18 Mar 2026 14:57:49 +0100 Subject: [PATCH] fix: extractList includes API-specific wrapper keys, diag uses real codefou - extractList now explicitly checks "mouvements", "articles", "fournisseurs", "ventes", "stocks", "commandes" wrapper keys before generic array fallback - Diag endpoint auto-fetches first real codefou from fournisseurs instead of hardcoded "AUXENCE" (which was supplier nom, not actual codefou) Co-Authored-By: Claude Sonnet 4.6 --- src/app/api/diag/route.ts | 13 ++++++++++++- src/lib/api-ff-client.ts | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/app/api/diag/route.ts b/src/app/api/diag/route.ts index 1fa34be..753e4ca 100644 --- a/src/app/api/diag/route.ts +++ b/src/app/api/diag/route.ts @@ -30,13 +30,24 @@ async function probe(url: string) { export async function GET(req: NextRequest) { const { searchParams } = new URL(req.url); - const codefou = searchParams.get("codefou") ?? "AUXENCE"; // Date range: 12 derniers mois const now = new Date(); const dateFin = new Date(now.getFullYear(), now.getMonth(), 0).toISOString().slice(0, 10); const dateDebut = new Date(now.getFullYear(), now.getMonth() - 12, 1).toISOString().slice(0, 10); + // Récupérer le premier codefou réel depuis l'API (si pas fourni en param) + let codefou = searchParams.get("codefou"); + if (!codefou) { + try { + const res = await fetch(`${FF_API_BASE}/api/fournisseurs?limit=1`, { cache: "no-store" }); + const data = await res.json(); + const list = Array.isArray(data) ? data : (Object.values(data).find(v => Array.isArray(v)) as unknown[] ?? []); + if (list.length > 0) codefou = (list[0] as Record).codefou as string ?? null; + } catch { /* ignore */ } + codefou ??= "D001"; + } + const [ fournisseurs, articles, diff --git a/src/lib/api-ff-client.ts b/src/lib/api-ff-client.ts index 4e19ebb..871b9ce 100644 --- a/src/lib/api-ff-client.ts +++ b/src/lib/api-ff-client.ts @@ -85,7 +85,7 @@ function extractList(data: unknown): any[] { if (Array.isArray(data)) return data; const d = data as Record; // Essaie les wrappers courants - for (const key of ["items", "data", "result", "results", "records", "list"]) { + for (const key of ["items", "data", "result", "results", "records", "list", "mouvements", "articles", "fournisseurs", "ventes", "stocks", "commandes"]) { if (Array.isArray(d[key])) return d[key] as unknown[]; } // Cherche la première propriété qui est un tableau