From dadd4e48ee8e7e51cf90f5d980293d4a4b926dac Mon Sep 17 00:00:00 2001 From: Kevin Codex Date: Wed, 11 Nov 2026 15:55:38 +0800 Subject: [PATCH] fix(points): final-price lookback includes the hour exactly 7 days back quoteUsdAtHour documents rows 'at most FINAL_PRICE_LOOKBACK_MS older', but the query used a strict bound and dropped a quote whose last captured hour sat exactly on the edge of the window. --- app/src/lib/points/server.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/lib/points/server.ts b/app/src/lib/points/server.ts index 6afedf53..a30dd131 100644 --- a/app/src/lib/points/server.ts +++ b/app/src/lib/points/server.ts @@ -192,7 +192,7 @@ export const FINAL_PRICE_LOOKBACK_MS = 7 * 24 * 3_600_000; export async function quoteUsdAtHour(read: Db, ms: number): Promise> { const rows = await read<{ chain_id: number; quote: string; usd: number }[]>` SELECT DISTINCT ON (chain_id, quote) chain_id, quote, usd FROM bb_quote_usd_hourly - WHERE hour <= ${hourIso(ms)} AND hour > ${hourIso(ms - FINAL_PRICE_LOOKBACK_MS)} + WHERE hour <= ${hourIso(ms)} AND hour >= ${hourIso(ms - FINAL_PRICE_LOOKBACK_MS)} ORDER BY chain_id, quote, hour DESC`; return new Map(rows.map((r) => [`${r.chain_id}:${r.quote.toLowerCase()}`, Number(r.usd)])); }