fix: use detailLevelBSR in BSR vs Units chart with topLevel fallback

Detail category BSR is more granular and relevant per ASIN. Falls back
to topLevelBSR if detailLevelBSR is null for a record.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Christian Vidal Wolf
2026-03-09 11:07:54 +01:00
co-authored by Claude Sonnet 4.6
parent f1e11ca79a
commit 31d1755122
+6 -5
View File
@@ -76,13 +76,14 @@ export const BSRUnitsCorrelationChart: React.FC<Props> = ({ bsrData, combinedSal
// Per-market chart data: BSR avg + units sum aligned by week // Per-market chart data: BSR avg + units sum aligned by week
const { chartData, pearsonCorrelation } = useMemo(() => { const { chartData, pearsonCorrelation } = useMemo(() => {
// BSR: average topLevelBSR per week // BSR: average detailLevelBSR per week (falls back to topLevelBSR if detail is unavailable)
const bsrByWeek = new Map<number, { sum: number; count: number }>(); const bsrByWeek = new Map<number, { sum: number; count: number }>();
bsrData bsrData
.filter(r => r.market === resolvedMarket && r.topLevelBSR != null) .filter(r => r.market === resolvedMarket && (r.detailLevelBSR != null || r.topLevelBSR != null))
.forEach(r => { .forEach(r => {
const bsr = r.detailLevelBSR ?? r.topLevelBSR!;
const e = bsrByWeek.get(r.week) ?? { sum: 0, count: 0 }; const e = bsrByWeek.get(r.week) ?? { sum: 0, count: 0 };
bsrByWeek.set(r.week, { sum: e.sum + r.topLevelBSR!, count: e.count + 1 }); bsrByWeek.set(r.week, { sum: e.sum + bsr, count: e.count + 1 });
}); });
// Units: sum unitsTotal per week for current year // Units: sum unitsTotal per week for current year
@@ -136,7 +137,7 @@ export const BSRUnitsCorrelationChart: React.FC<Props> = ({ bsrData, combinedSal
}, [pearsonCorrelation]); }, [pearsonCorrelation]);
const tooltipFormatter = (value: unknown, name: string) => { const tooltipFormatter = (value: unknown, name: string) => {
if (name === 'BSR') return [typeof value === 'number' ? value.toLocaleString('de-DE') : '', 'BSR Rank']; if (name === 'BSR') return [typeof value === 'number' ? value.toLocaleString('de-DE') : '', 'Detail BSR'];
if (name === 'Units') return [typeof value === 'number' ? value.toLocaleString('de-DE') : '', 'Units Sold']; if (name === 'Units') return [typeof value === 'number' ? value.toLocaleString('de-DE') : '', 'Units Sold'];
return [value, name]; return [value, name];
}; };
@@ -149,7 +150,7 @@ export const BSRUnitsCorrelationChart: React.FC<Props> = ({ bsrData, combinedSal
<div> <div>
<h3 className="text-[17px] font-semibold text-white tracking-wide">BSR vs Units Sold</h3> <h3 className="text-[17px] font-semibold text-white tracking-wide">BSR vs Units Sold</h3>
<p className="text-[13px] text-[#64748b] mt-0.5"> <p className="text-[13px] text-[#64748b] mt-0.5">
Weekly correlation · {currentYear} · Top-level category BSR Weekly correlation · {currentYear} · Detail category BSR
</p> </p>
</div> </div>
<button <button