fix: UTC+8 market chart times and archive full history K-line load

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-06-08 16:55:48 +08:00
parent 55a979eee5
commit 38f4280bb8
5 changed files with 109 additions and 14 deletions
+9 -6
View File
@@ -29,10 +29,10 @@ ARCHIVE_DEFAULT_TIMEFRAME = "15m"
ARCHIVE_SEED_LOOKBACK_DAYS = 30
ARCHIVE_VISIBLE_BARS_DEFAULT = 200
ARCHIVE_MAX_CANDLES: dict[str, int] = {
"5m": 4000,
"15m": 2500,
"1h": 1200,
"4h": 600,
"5m": 9000,
"15m": 15000,
"1h": 4000,
"4h": 2000,
}
ARCHIVE_SYNC_INTERVAL_SEC = int(os.getenv("HUB_ARCHIVE_SYNC_INTERVAL_SEC", str(4 * 3600)))
ARCHIVE_TRADE_DAYS = int(os.getenv("HUB_ARCHIVE_TRADE_DAYS", "365"))
@@ -159,6 +159,9 @@ def parse_wall_clock_ms(raw: Any, *, tz: ZoneInfo = CHART_DISPLAY_TZ) -> int | N
s = str(raw).strip().replace("Z", "").replace("T", " ")
if not s:
return None
if s.isdigit():
v = int(s)
return v if v > 1_000_000_000_000 else v * 1000
for fmt, ln in (("%Y-%m-%d %H:%M:%S", 19), ("%Y-%m-%d %H:%M", 16), ("%Y-%m-%d", 10)):
try:
dt = datetime.strptime(s[:ln], fmt)
@@ -873,8 +876,8 @@ def resolve_archive_chart(
merged = [b for b in agg if start_ms <= int(b["open_time_ms"]) <= end_ms]
max_n = ARCHIVE_MAX_CANDLES.get(tf, 2000)
if rm == "history" and merged:
merged = _trim_bars_for_cap(merged, end_ms=end_ms, max_n=max_n)
if rm == "history" and merged and len(merged) > max_n:
merged = merged[:max_n]
candles = _to_candles(merged)
if not candles: