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
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 }>();
bsrData
.filter(r => r.market === resolvedMarket && r.topLevelBSR != null)
.filter(r => r.market === resolvedMarket && (r.detailLevelBSR != null || r.topLevelBSR != null))
.forEach(r => {
const bsr = r.detailLevelBSR ?? r.topLevelBSR!;
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
@@ -136,7 +137,7 @@ export const BSRUnitsCorrelationChart: React.FC<Props> = ({ bsrData, combinedSal
}, [pearsonCorrelation]);
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'];
return [value, name];
};
@@ -149,7 +150,7 @@ export const BSRUnitsCorrelationChart: React.FC<Props> = ({ bsrData, combinedSal
<div>
<h3 className="text-[17px] font-semibold text-white tracking-wide">BSR vs Units Sold</h3>
<p className="text-[13px] text-[#64748b] mt-0.5">
Weekly correlation · {currentYear} · Top-level category BSR
Weekly correlation · {currentYear} · Detail category BSR
</p>
</div>
<button