mirror of
https://github.com/christianvidalwolf-prog/CrazeAnalytix.git
synced 2026-08-03 17:35:23 +02:00
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:
co-authored by
Claude Sonnet 4.6
parent
f1e11ca79a
commit
31d1755122
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user