fix: adapt experiment calculation engine to consume both CombinedKPIs and SalesRecord data structures

This commit is contained in:
Christian Vidal Wolf
2026-02-21 22:51:38 +01:00
parent 411448e4d2
commit 99d524db12
2 changed files with 22 additions and 10 deletions
+10 -6
View File
@@ -260,25 +260,29 @@ export const calculateExperimentPerformance = async (
const baselineData = salesData.filter(r => {
const recordDate = new Date(r.year, 0, 1 + (r.week - 1) * 7);
return asinSet.has(r.asin.toUpperCase()) &&
const mkt = (r.marketplace || (r as any).customer || '').toLowerCase();
const isMarket = !experiment.marketplace || experiment.marketplace === 'All' || mkt.includes(experiment.marketplace.toLowerCase());
return isMarket && asinSet.has(r.asin.toUpperCase()) &&
recordDate >= baselineStart && recordDate < baselineEnd;
});
const experimentData = salesData.filter(r => {
const recordDate = new Date(r.year, 0, 1 + (r.week - 1) * 7);
return asinSet.has(r.asin.toUpperCase()) &&
const mkt = (r.marketplace || (r as any).customer || '').toLowerCase();
const isMarket = !experiment.marketplace || experiment.marketplace === 'All' || mkt.includes(experiment.marketplace.toLowerCase());
return isMarket && asinSet.has(r.asin.toUpperCase()) &&
recordDate >= startDate && recordDate <= endDate;
});
const baseline_units = baselineData.reduce((sum, r) => sum + (r.unitsTotal || 0), 0);
const baseline_revenue = baselineData.reduce((sum, r) => sum + (r.salesTotal || 0), 0);
const baseline_units = baselineData.reduce((sum, r) => sum + (r.unitsTotal ?? (r as any).units ?? 0), 0);
const baseline_revenue = baselineData.reduce((sum, r) => sum + (r.salesTotal ?? (r as any).sellOut ?? 0), 0);
const baseline_gv = baselineData.reduce((sum, r) => sum + (r.glanceViews || 0), 0);
const baseline_cvr = baseline_gv > 0 ? (baseline_units / baseline_gv) * 100 : 0;
const baseline_spend = baselineData.reduce((sum, r) => sum + (r.cost || 0), 0);
const baseline_acos = baseline_revenue > 0 ? (baseline_spend / baseline_revenue) * 100 : 0;
const experiment_units = experimentData.reduce((sum, r) => sum + (r.unitsTotal || 0), 0);
const experiment_revenue = experimentData.reduce((sum, r) => sum + (r.salesTotal || 0), 0);
const experiment_units = experimentData.reduce((sum, r) => sum + (r.unitsTotal ?? (r as any).units ?? 0), 0);
const experiment_revenue = experimentData.reduce((sum, r) => sum + (r.salesTotal ?? (r as any).sellOut ?? 0), 0);
const experiment_gv = experimentData.reduce((sum, r) => sum + (r.glanceViews || 0), 0);
const experiment_cvr = experiment_gv > 0 ? (experiment_units / experiment_gv) * 100 : 0;
const experiment_spend = experimentData.reduce((sum, r) => sum + (r.cost || 0), 0);