fix(qlik): dérive les mois N-1 depuis Quantité COMP (vrais 12 mois)

Le cube [Article Code, Mois] ne renvoie que les mois de l'année N (les
mesures 'N' sont nulles ailleurs → lignes supprimées). Le code cherchait
des lignes d'année N-1 qui n'existent pas, donc 'Quantité COMP' n'était
jamais exploitée → seulement ~7 mois affichés.

'Quantité COMP' étant le comparable N-1, à la ligne Mois=YYYYMM elle donne
la quantité du MÊME mois l'année précédente. On dérive donc deux points
par ligne : YYYY-MM (Quantité N) et (YYYY-1)-MM (Quantité COMP) → 12 mois
sans ligne supplémentaire ni requête en plus.

UI : l'en-tête du modal affiche le nombre RÉEL de mois disponibles au lieu
de '12 derniers mois' en dur.
This commit is contained in:
Claude committed 2026-07-25 21:31:15 +00:00
1 parent 1633d5e407
commit 99097b6eca
2 files changed
+14 -4

No files matched your search

+13 -3
View File
@@ -443,12 +443,22 @@ export async function fetchNetworkMetricsPlaywright(
const got = await timed("cube", "batch", () => fetchMonthCube((code, mois, ca, qte, nbMag, caMag, marge, qteComp) => {
if (!code || code === "-") return;
out.push([code, ca, qte, nbMag, caMag, marge]);
// 12 mois glissants : mois de l'année N → Quantité N, mois N-1 → Quantité COMP.
// 12 mois glissants. Le cube ne renvoie que les mois de l'année N
// (les mesures "N" sont nulles ailleurs → lignes supprimées).
// "Quantité COMP" = comparable N-1 : à la ligne Mois=YYYYMM elle
// donne la quantité du MÊME mois l'année précédente. On dérive donc
// deux points par ligne : YYYY-MM (N) et (YYYY-1)-MM (N-1).
const mm = normMois(mois);
const y = parseInt(mm.slice(0, 4), 10);
const qtyMonth = y === yearN ? qte : qteComp;
(monthlyByCode[code] ??= {});
monthlyByCode[code][mm] = (monthlyByCode[code][mm] ?? 0) + qtyMonth;
if (y === yearN) {
monthlyByCode[code][mm] = (monthlyByCode[code][mm] ?? 0) + qte;
const mmPrev = String(y - 1) + mm.slice(4); // "2026-03" → "2025-03"
monthlyByCode[code][mmPrev] = (monthlyByCode[code][mmPrev] ?? 0) + qteComp;
} else {
// Ligne d'une autre année (cas non observé) : on prend la mesure N.
monthlyByCode[code][mm] = (monthlyByCode[code][mm] ?? 0) + qte;
}
}, timings, () => { code15Retries++; }), timings);
aggBatches++;
aggCode15Retries += code15Retries;