From 7a228a4123922ea75b979061a2e26275019f76c4 Mon Sep 17 00:00:00 2001 From: Cloud User Date: Tue, 17 Mar 2026 14:25:46 +0900 Subject: [PATCH] fix: detect only upward peaks (zScore > 5), min 15min zoom padding - Changed Math.abs(zScore) > threshold to zScore > threshold so only upward spikes are detected (not dips below average) - Zoom padding minimum 15 minutes on each side for short peak intervals Co-Authored-By: Claude Opus 4.6 --- src/components/charts/NetworkChart.tsx | 3 ++- src/components/charts/TimeSeriesChart.tsx | 3 ++- src/lib/analytics.ts | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/components/charts/NetworkChart.tsx b/src/components/charts/NetworkChart.tsx index e99314c..a60ee89 100644 --- a/src/components/charts/NetworkChart.tsx +++ b/src/components/charts/NetworkChart.tsx @@ -31,7 +31,8 @@ export default forwardRef(function Networ const maxTime = Math.max(...allTimes); const range = maxTime - minTime; if (range === 0) return; - const padding = (endMs - startMs) * 0.5; + const MIN_PADDING = 15 * 60 * 1000; // 15분 + const padding = Math.max(MIN_PADDING, (endMs - startMs) * 0.5); const s = Math.max(0, ((startMs - padding - minTime) / range) * 100); const e = Math.min(100, ((endMs + padding - minTime) / range) * 100); chart.dispatchAction({ type: 'dataZoom', start: s, end: e }); diff --git a/src/components/charts/TimeSeriesChart.tsx b/src/components/charts/TimeSeriesChart.tsx index 4ee565f..55bbf12 100644 --- a/src/components/charts/TimeSeriesChart.tsx +++ b/src/components/charts/TimeSeriesChart.tsx @@ -37,7 +37,8 @@ export default forwardRef(function TimeSeries const maxTime = Math.max(...allTimes); const range = maxTime - minTime; if (range === 0) return; - const padding = (endMs - startMs) * 0.5; + const MIN_PADDING = 15 * 60 * 1000; // 15분 + const padding = Math.max(MIN_PADDING, (endMs - startMs) * 0.5); const s = Math.max(0, ((startMs - padding - minTime) / range) * 100); const e = Math.min(100, ((endMs + padding - minTime) / range) * 100); chart.dispatchAction({ type: 'dataZoom', start: s, end: e }); diff --git a/src/lib/analytics.ts b/src/lib/analytics.ts index 35cde3c..0130871 100644 --- a/src/lib/analytics.ts +++ b/src/lib/analytics.ts @@ -43,7 +43,7 @@ export function detectPeaks( const points = dataPoints.map((d) => { const zScore = stddev === 0 ? 0 : (d.value - mean) / stddev; - return { ...d, zScore, isPeak: Math.abs(zScore) > threshold }; + return { ...d, zScore, isPeak: zScore > threshold }; }); const peaks: PeakInfo[] = [];