mirror of
https://github.com/R0m1k3/CollectFlow.git
synced 2026-10-18 20:56:43 +02:00
main a beaucoup avancé (53 commits) pendant que cette branche construisait l'API. La fusion a révélé que /produits, sur main, fait la même chose que la page Recherche réseau d'ici, en plus abouti : fiche produit, opportunités, URL partageables, et sa propre chaîne Qlik (lib/qlik-search, pgSearchProduits). Résolution, main prioritaire : - sidebar, heatmap-grid, qlik-playwright : version de main telle quelle. Son travail sur la tendance et Qlik est postérieur et plus complet. - get-product-rows : import NB_MAGASINS_RESEAU de main, plus l'appel upsertGridRows d'ici — sans lui /api/v1 n'aurait aucune donnée à servir. - settings : les deux côtés (ServerLogs de main + les sections API d'ici). Suppression du doublon : page recherche-reseau, /api/qlik/search, ses types et composants. searchNetworkProductsPlaywright disparaît avec la version main de qlik-playwright ; rien d'autre ne l'utilisait. api-enrich se branche désormais sur le module de tendance de main (features/grid/lib/network-trend) plutôt que sur le mien, supprimé : sa mesure est meilleure — variation sur la quantité par magasin vendeur, ce qui distingue « vend mieux » de « est distribué plus largement » — et l'API renvoie ainsi exactement ce qu'affiche la Grille. Le champ trend gagne surQteParMagasin et nouveau. Apport conservé de la branche : l'API /api/v1, absente de main. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y26nRZxTR57K7h8yqsF675
41 lines
1.6 KiB
TypeScript
41 lines
1.6 KiB
TypeScript
import { NextRequest } from "next/server";
|
|
import { requireApiAuth } from "@/lib/api-auth";
|
|
import { ok, fail } from "@/lib/api-response";
|
|
import { getNetworkMetricsByCodeCentrale } from "@/lib/qlik-network-cache";
|
|
|
|
export const runtime = "nodejs";
|
|
export const dynamic = "force-dynamic";
|
|
|
|
/**
|
|
* GET /api/v1/network/:codeCentrale
|
|
*
|
|
* Métriques réseau Qlik d'un produit (CA, quantité, nombre de magasins, CA/magasin,
|
|
* marge %) et sa courbe de quantités mensuelles sur 12 mois glissants.
|
|
*
|
|
* Lecture **exclusive** de la table `qlik_network_metrics` : aucun appel à Qlik n'est
|
|
* déclenché. Pour interroger Qlik en direct (y compris sur des produits que nous ne
|
|
* référençons pas), c'est la page Produits — bien plus lente, et volontairement
|
|
* séparé de cette API.
|
|
*/
|
|
export async function GET(
|
|
req: NextRequest,
|
|
ctx: { params: Promise<{ codeCentrale: string }> },
|
|
) {
|
|
const authCtx = await requireApiAuth(req);
|
|
if (authCtx instanceof Response) return authCtx;
|
|
|
|
const { codeCentrale } = await ctx.params;
|
|
if (!codeCentrale) return fail("bad_request", "Paramètre 'codeCentrale' requis.");
|
|
|
|
const metrics = await getNetworkMetricsByCodeCentrale([codeCentrale]);
|
|
const found = metrics.get(codeCentrale);
|
|
if (!found) {
|
|
return fail(
|
|
"not_found",
|
|
`Aucune donnée réseau en cache pour le code centrale « ${codeCentrale} ». Lancez une synchronisation Qlik ou une recherche réseau.`,
|
|
);
|
|
}
|
|
|
|
return ok({ codeCentrale, ...found }, { meta: { fetchedAt: found.fetchedAt, source: "cache" } });
|
|
}
|