mirror of
https://github.com/christianvidalwolf-prog/CrazeAnalytix.git
synced 2026-08-03 12:25:22 +02:00
debug: add diagnostic strip to BSR chart to identify data mismatch
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
31d1755122
commit
9bdb7a5c4a
@@ -75,15 +75,18 @@ export const BSRUnitsCorrelationChart: React.FC<Props> = ({ bsrData, combinedSal
|
||||
}, [combinedSalesData]);
|
||||
|
||||
// Per-market chart data: BSR avg + units sum aligned by week
|
||||
const { chartData, pearsonCorrelation } = useMemo(() => {
|
||||
const { chartData, pearsonCorrelation, debugInfo } = useMemo(() => {
|
||||
// BSR: average detailLevelBSR per week (falls back to topLevelBSR if detail is unavailable)
|
||||
// Coerce week to number to guard against string values at runtime
|
||||
const bsrByWeek = new Map<number, { sum: number; count: number }>();
|
||||
bsrData
|
||||
.filter(r => r.market === resolvedMarket && (r.detailLevelBSR != null || r.topLevelBSR != null))
|
||||
const bsrRecordsForMarket = bsrData.filter(r => r.market === resolvedMarket);
|
||||
bsrRecordsForMarket
|
||||
.filter(r => 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 + bsr, count: e.count + 1 });
|
||||
const week = Number(r.week);
|
||||
const e = bsrByWeek.get(week) ?? { sum: 0, count: 0 };
|
||||
bsrByWeek.set(week, { sum: e.sum + bsr, count: e.count + 1 });
|
||||
});
|
||||
|
||||
// Units: sum unitsTotal per week for current year
|
||||
@@ -91,9 +94,18 @@ export const BSRUnitsCorrelationChart: React.FC<Props> = ({ bsrData, combinedSal
|
||||
combinedSalesData
|
||||
.filter(r => r.customer === resolvedMarket && r.year === currentYear && r.week)
|
||||
.forEach(r => {
|
||||
unitsByWeek.set(r.week, (unitsByWeek.get(r.week) ?? 0) + r.unitsTotal);
|
||||
const week = Number(r.week);
|
||||
unitsByWeek.set(week, (unitsByWeek.get(week) ?? 0) + r.unitsTotal);
|
||||
});
|
||||
|
||||
const debugInfo = {
|
||||
bsrTotal: bsrData.length,
|
||||
bsrForMarket: bsrRecordsForMarket.length,
|
||||
bsrWithValues: bsrByWeek.size,
|
||||
unitsWeeks: unitsByWeek.size,
|
||||
uniqueMarkets: Array.from(new Set(bsrData.map(r => r.market))).join(', '),
|
||||
};
|
||||
|
||||
const allWeeks = Array.from(
|
||||
new Set([...bsrByWeek.keys(), ...unitsByWeek.keys()])
|
||||
).sort((a, b) => a - b);
|
||||
@@ -115,7 +127,7 @@ export const BSRUnitsCorrelationChart: React.FC<Props> = ({ bsrData, combinedSal
|
||||
paired.map(d => d.units as number)
|
||||
);
|
||||
|
||||
return { chartData, pearsonCorrelation: r };
|
||||
return { chartData, pearsonCorrelation: r, debugInfo };
|
||||
}, [resolvedMarket, bsrData, combinedSalesData, currentYear]);
|
||||
|
||||
const config = MARKET_CONFIG[resolvedMarket] ?? { label: '?', color: '#94a3b8', flag: '🌍' };
|
||||
@@ -324,6 +336,13 @@ export const BSRUnitsCorrelationChart: React.FC<Props> = ({ bsrData, combinedSal
|
||||
</span>
|
||||
</div>
|
||||
|
||||
{/* Temporary debug strip — remove once BSR line is confirmed working */}
|
||||
<div className="px-3 py-2 rounded-lg bg-slate-900/60 border border-slate-800 text-[10px] font-mono text-slate-500 space-y-0.5">
|
||||
<div>BSR records total: <span className="text-slate-300">{debugInfo.bsrTotal}</span> · for {resolvedMarket}: <span className="text-slate-300">{debugInfo.bsrForMarket}</span> · with values: <span className="text-slate-300">{debugInfo.bsrWithValues} weeks</span></div>
|
||||
<div>Units weeks found: <span className="text-slate-300">{debugInfo.unitsWeeks}</span> · year: <span className="text-slate-300">{currentYear}</span></div>
|
||||
<div>Markets in BSR data: <span className="text-slate-300">{debugInfo.uniqueMarkets || '(none)'}</span></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user