From e92cbc1bc40fb6ba65b11406fe7a47d0873ef213 Mon Sep 17 00:00:00 2001 From: Viktor Barzin Date: Sat, 28 Feb 2026 11:05:37 +0000 Subject: [PATCH] fix: trade log Invalid Date and equity curve duplicate timestamp crash - TradeLog: use created_at (from API) instead of timestamp for date display - EquityCurve: deduplicate data by day before passing to lightweight-charts, preventing "data must be asc ordered by time" assertion failure when multiple snapshots exist on the same day Made-with: Cursor --- dashboard/src/components/EquityCurve.tsx | 12 ++++++++---- dashboard/src/pages/TradeLog.tsx | 3 ++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/dashboard/src/components/EquityCurve.tsx b/dashboard/src/components/EquityCurve.tsx index f215565..2c9ba1c 100644 --- a/dashboard/src/components/EquityCurve.tsx +++ b/dashboard/src/components/EquityCurve.tsx @@ -68,10 +68,14 @@ export function EquityCurve({ data, height = 300 }: EquityCurveProps) { useEffect(() => { if (!seriesRef.current || !data.length) return; - const chartData = data.map((point) => ({ - time: point.timestamp.split('T')[0] as string, - value: point.value, - })); + const byDay = new Map(); + for (const point of data) { + const day = point.timestamp.split('T')[0]; + byDay.set(day, point.value); + } + const chartData = Array.from(byDay.entries()) + .sort(([a], [b]) => a.localeCompare(b)) + .map(([time, value]) => ({ time, value })); seriesRef.current.setData(chartData as any); diff --git a/dashboard/src/pages/TradeLog.tsx b/dashboard/src/pages/TradeLog.tsx index 298ee4a..80eeb09 100644 --- a/dashboard/src/pages/TradeLog.tsx +++ b/dashboard/src/pages/TradeLog.tsx @@ -11,6 +11,7 @@ interface Trade { pnl: number | null; strategy_name: string; timestamp: string; + created_at: string; status: string; signal_detail?: { direction: string; @@ -210,7 +211,7 @@ export default function TradeLog() { {trade.strategy_name} - {new Date(trade.timestamp).toLocaleString()} + {new Date(trade.created_at || trade.timestamp).toLocaleString()}