From 09f80b35cb78956e44b722e56fae82da024891db Mon Sep 17 00:00:00 2001 From: Michael SCHAL Date: Tue, 31 Mar 2026 13:40:08 +0200 Subject: [PATCH] chore: add diag-fournisseurs endpoint to investigate fouadr1 sit_code and naming --- src/app/api/diag-fournisseurs/route.ts | 64 ++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 src/app/api/diag-fournisseurs/route.ts diff --git a/src/app/api/diag-fournisseurs/route.ts b/src/app/api/diag-fournisseurs/route.ts new file mode 100644 index 0000000..3540aef --- /dev/null +++ b/src/app/api/diag-fournisseurs/route.ts @@ -0,0 +1,64 @@ +import { NextResponse } from "next/server"; +import { db } from "@/db"; +import { sql } from "drizzle-orm"; + +export async function GET() { + try { + // 1. Tous les sit_code distincts dans fouadr1 + const sitCodes = await db.execute(sql` + SELECT sit_code, COUNT(*) AS nb + FROM fouadr1 + GROUP BY sit_code + ORDER BY nb DESC + `); + + // 2. D005 dans tous les sit_code + const d005 = await db.execute(sql` + SELECT sit_code, code, raisonsociale, ville, pays + FROM fouadr1 + WHERE code = 'D005' + ORDER BY sit_code + `); + + // 3. Liste complète des fournisseurs actifs (avec CA récent) par sit_code + // → comparer la même liste sur sit_code='000' vs le vrai sit_code utilisé + const allSitCodes = (sitCodes.rows as any[]).map(r => r.sit_code); + + // 4. Top fournisseurs dans chaque sit_code pour D005, J009, M0341 + const sample = await db.execute(sql` + SELECT sit_code, code, raisonsociale + FROM fouadr1 + WHERE code IN ('D005','J009','M0341','L0091','S053','B0071','C024','T015') + ORDER BY code, sit_code + `); + + // 5. Liste complète fouadr1 sans filtre sit_code pour avoir tous les noms + const fullList = await db.execute(sql` + SELECT DISTINCT ON (code) code, raisonsociale, sit_code + FROM fouadr1 + WHERE raisonsociale IS NOT NULL + AND raisonsociale != '' + ORDER BY code, sit_code + LIMIT 200 + `); + + // 6. Est-ce qu'il y a une autre table de fournisseurs ? + const otherTables = await db.execute(sql` + SELECT table_name + FROM information_schema.tables + WHERE table_schema = 'public' + AND table_name ILIKE '%fou%' + ORDER BY table_name + `); + + return NextResponse.json({ + sit_codes_in_fouadr1: sitCodes.rows, + d005_all_sit_codes: d005.rows, + sample_known_suppliers: sample.rows, + full_list_no_filter: fullList.rows, + tables_with_fou: otherTables.rows, + }); + } catch (e) { + return NextResponse.json({ error: String(e) }, { status: 500 }); + } +}