mirror of
https://github.com/R0m1k3/CollectFlow.git
synced 2026-10-22 22:48:08 +02:00
Merge: mesures par titre + relevé étiqueté
This commit is contained in:
1 file changed
+20
-2
@@ -268,6 +268,16 @@ export async function fetchNetworkMetricsPlaywright(
|
|||||||
const pickMeasure = (title: string, fallback: string) => byTitle.get(norm(title)) ?? fallback;
|
const pickMeasure = (title: string, fallback: string) => byTitle.get(norm(title)) ?? fallback;
|
||||||
const rCamag = pickMeasure("CA par Magasin N", mcamag);
|
const rCamag = pickMeasure("CA par Magasin N", mcamag);
|
||||||
const rMarge = pickMeasure("Marge % N", mmarge);
|
const rMarge = pickMeasure("Marge % N", mmarge);
|
||||||
|
// Résolution par TITRE aussi pour CA / Quantité / Nb magasins : évite tout
|
||||||
|
// décalage si un qId d'env ne pointe pas sur la mesure attendue.
|
||||||
|
const rCa = pickMeasure("CA N", mca);
|
||||||
|
const rQte = pickMeasure("Quantité N", mqte);
|
||||||
|
const rNbMag = pickMeasure("Magasin Ventes Nb N", mnb);
|
||||||
|
console.log("[qlik-pw] mesures utilisées: " + JSON.stringify({
|
||||||
|
"CA N": rCa, "Quantité N": rQte, "Magasin Ventes Nb N": rNbMag,
|
||||||
|
"CA par Magasin N": rCamag, "Marge % N": rMarge,
|
||||||
|
env: { mca, mqte, mnb },
|
||||||
|
}));
|
||||||
console.log("measures résolues par titre: " + JSON.stringify({ rCamag, rMarge }) + " (sur " + items.length + " mesures)");
|
console.log("measures résolues par titre: " + JSON.stringify({ rCamag, rMarge }) + " (sur " + items.length + " mesures)");
|
||||||
// DUMP diagnostic : inventaire des mesures + dimensions (titre + id) pour
|
// DUMP diagnostic : inventaire des mesures + dimensions (titre + id) pour
|
||||||
// identifier une mesure "Quantité" NON annuelle et/ou une dimension "Mois/Période"
|
// identifier une mesure "Quantité" NON annuelle et/ou une dimension "Mois/Période"
|
||||||
@@ -314,7 +324,7 @@ export async function fetchNetworkMetricsPlaywright(
|
|||||||
const createCubeForBatch = async (timings?: Record<string, number>, onCode15Retry?: () => void): Promise<{ handle: number; id: string }> => {
|
const createCubeForBatch = async (timings?: Record<string, number>, onCode15Retry?: () => void): Promise<{ handle: number; id: string }> => {
|
||||||
const { value: obj } = await timed("createCube", "CreateSessionObject", () => rpcWithRetry("createCube", "CreateSessionObject", { qProp: { qInfo: { qType: "cf-net" }, qHyperCubeDef: {
|
const { value: obj } = await timed("createCube", "CreateSessionObject", () => rpcWithRetry("createCube", "CreateSessionObject", { qProp: { qInfo: { qType: "cf-net" }, qHyperCubeDef: {
|
||||||
qDimensions: [{ qLibraryId: dim }],
|
qDimensions: [{ qLibraryId: dim }],
|
||||||
qMeasures: [{ qLibraryId: mca }, { qLibraryId: mqte }, { qLibraryId: mnb }, { qLibraryId: rCamag }, { qLibraryId: rMarge }],
|
qMeasures: [{ qLibraryId: rCa }, { qLibraryId: rQte }, { qLibraryId: rNbMag }, { qLibraryId: rCamag }, { qLibraryId: rMarge }],
|
||||||
qInitialDataFetch: [{ qTop: 0, qLeft: 0, qWidth: 6, qHeight: PAGE }],
|
qInitialDataFetch: [{ qTop: 0, qLeft: 0, qWidth: 6, qHeight: PAGE }],
|
||||||
} } }, doc, onCode15Retry), timings);
|
} } }, doc, onCode15Retry), timings);
|
||||||
const qReturn = obj.qReturn as { qHandle: number; qGenericId?: string; qId?: string };
|
const qReturn = obj.qReturn as { qHandle: number; qGenericId?: string; qId?: string };
|
||||||
@@ -380,7 +390,7 @@ export async function fetchNetworkMetricsPlaywright(
|
|||||||
): Promise<number> => {
|
): Promise<number> => {
|
||||||
const { value: obj } = await timed("createCube", "CreateSessionObject", () => rpcWithRetry("createCube", "CreateSessionObject", { qProp: { qInfo: { qType: "cf-net-mois" }, qHyperCubeDef: {
|
const { value: obj } = await timed("createCube", "CreateSessionObject", () => rpcWithRetry("createCube", "CreateSessionObject", { qProp: { qInfo: { qType: "cf-net-mois" }, qHyperCubeDef: {
|
||||||
qDimensions: [{ qLibraryId: dim }, { qLibraryId: moisDimId }],
|
qDimensions: [{ qLibraryId: dim }, { qLibraryId: moisDimId }],
|
||||||
qMeasures: [{ qLibraryId: mca }, { qLibraryId: mqte }, { qLibraryId: mnb }, { qLibraryId: rCamag }, { qLibraryId: rMarge }, { qLibraryId: mqteComp }],
|
qMeasures: [{ qLibraryId: rCa }, { qLibraryId: rQte }, { qLibraryId: rNbMag }, { qLibraryId: rCamag }, { qLibraryId: rMarge }, { qLibraryId: mqteComp }],
|
||||||
qInitialDataFetch: [{ qTop: 0, qLeft: 0, qWidth: 8, qHeight: PAGEM }],
|
qInitialDataFetch: [{ qTop: 0, qLeft: 0, qWidth: 8, qHeight: PAGEM }],
|
||||||
} } }, doc, onCode15Retry), timings);
|
} } }, doc, onCode15Retry), timings);
|
||||||
const qReturn = obj.qReturn as { qHandle: number; qGenericId?: string; qId?: string };
|
const qReturn = obj.qReturn as { qHandle: number; qGenericId?: string; qId?: string };
|
||||||
@@ -422,6 +432,7 @@ export async function fetchNetworkMetricsPlaywright(
|
|||||||
// selectYear = 2025 → passe complémentaire : on sélectionne l'année pour
|
// selectYear = 2025 → passe complémentaire : on sélectionne l'année pour
|
||||||
// récupérer directement ses mois (seul moyen d'obtenir août→déc N-1, que
|
// récupérer directement ses mois (seul moyen d'obtenir août→déc N-1, que
|
||||||
// COMP ne peut pas fournir puisque l'année N ne va pas jusque-là).
|
// COMP ne peut pas fournir puisque l'année N ne va pas jusque-là).
|
||||||
|
let loggedSampleRow = false;
|
||||||
const monthDimPath = async (selectYear: number | null): Promise<void> => {
|
const monthDimPath = async (selectYear: number | null): Promise<void> => {
|
||||||
const isMainPass = selectYear === null;
|
const isMainPass = selectYear === null;
|
||||||
if (yfh !== -1) {
|
if (yfh !== -1) {
|
||||||
@@ -466,6 +477,13 @@ export async function fetchNetworkMetricsPlaywright(
|
|||||||
if (isMainPass) out.push([code, ca, qte, nbMag, caMag, marge]);
|
if (isMainPass) out.push([code, ca, qte, nbMag, caMag, marge]);
|
||||||
const mm = normMois(mois);
|
const mm = normMois(mois);
|
||||||
const y = parseInt(mm.slice(0, 4), 10);
|
const y = parseInt(mm.slice(0, 4), 10);
|
||||||
|
if (!loggedSampleRow) {
|
||||||
|
loggedSampleRow = true;
|
||||||
|
console.log("[qlik-pw][mesures] échantillon ligne mensuelle: " + JSON.stringify({
|
||||||
|
code, mois: mm, "CA N": ca, "Quantité N (utilisée pour la courbe)": qte,
|
||||||
|
"Magasin Ventes Nb N": nbMag, "CA par Magasin N": caMag, "Marge % N": marge, "Quantité COMP": qteComp,
|
||||||
|
}));
|
||||||
|
}
|
||||||
(monthlyByCode[code] ??= {});
|
(monthlyByCode[code] ??= {});
|
||||||
if (isMainPass && y === yearN) {
|
if (isMainPass && y === yearN) {
|
||||||
// Mois de l'année N + son comparable N-1 (COMP = même mois, N-1).
|
// Mois de l'année N + son comparable N-1 (COMP = même mois, N-1).
|
||||||
|
|||||||
Reference in new issue
Block a user