mirror of
https://ghfast.top/https://github.com/aeroxw/tick-stock-panel.git
synced 2026-09-12 15:34:16 +08:00
Merge pull request #271 from kevin9327/fix/minute-sync-beijing-window
fix(kline): 分钟K增量同步窗口统一按北京时区
This commit is contained in:
@@ -1277,29 +1277,38 @@ def fetch_adj_factor_single(symbol: str) -> pl.DataFrame:
|
||||
return _normalize_adj_factor(raw)
|
||||
|
||||
|
||||
def _as_beijing(d: datetime) -> datetime:
|
||||
"""落盘的分钟 datetime 是北京墙钟 naive, 带上北京时区再交给取数窗口。
|
||||
|
||||
naive 值经 _datetime_to_ms 会被 .timestamp() 按服务器本地时区解释, 与同
|
||||
窗口另一端的服务器本地时间混用后整体错位 (UTC 容器上错 8 小时)。
|
||||
"""
|
||||
return d if d.tzinfo is not None else d.replace(tzinfo=CN_TZ)
|
||||
|
||||
|
||||
def _latest_minute_datetime(repo: KlineRepository) -> datetime | None:
|
||||
"""本地分钟 K 数据的最新时间。"""
|
||||
"""本地分钟 K 数据的最新时间 (北京时区)。"""
|
||||
try:
|
||||
res = repo.execute_one("SELECT max(datetime) FROM kline_minute")
|
||||
if res and res[0]:
|
||||
d = res[0]
|
||||
if isinstance(d, datetime):
|
||||
return d
|
||||
return datetime.fromisoformat(str(d))
|
||||
return _as_beijing(d)
|
||||
return _as_beijing(datetime.fromisoformat(str(d)))
|
||||
except Exception: # noqa: BLE001
|
||||
pass
|
||||
return None
|
||||
|
||||
|
||||
def _earliest_minute_datetime(repo: KlineRepository) -> datetime | None:
|
||||
"""本地分钟 K 数据的最早时间 (用于向前扩展的起点)。"""
|
||||
"""本地分钟 K 数据的最早时间 (北京时区, 用于向前扩展的起点)。"""
|
||||
try:
|
||||
res = repo.execute_one("SELECT min(datetime) FROM kline_minute")
|
||||
if res and res[0]:
|
||||
d = res[0]
|
||||
if isinstance(d, datetime):
|
||||
return d
|
||||
return datetime.fromisoformat(str(d))
|
||||
return _as_beijing(d)
|
||||
return _as_beijing(datetime.fromisoformat(str(d)))
|
||||
except Exception: # noqa: BLE001
|
||||
pass
|
||||
return None
|
||||
@@ -1421,7 +1430,9 @@ def sync_and_persist_minute(
|
||||
# 迁移:旧版按 symbol= 分区转为 date= 分区
|
||||
_migrate_symbol_to_date_partition(repo)
|
||||
|
||||
now = datetime.now()
|
||||
# 窗口两端统一为北京时区: 起止点会与本地分钟 K 的北京墙钟混用, 用服务器
|
||||
# 本地时间会让窗口整体错位 (UTC 容器上起点晚于终点, 增量补拉一个请求都发不出)。
|
||||
now = cn_now()
|
||||
|
||||
if extend_backward:
|
||||
# 向前扩展模式: 从本地最早数据往前补, 叠加已有数据避免缺口。
|
||||
|
||||
Reference in New Issue
Block a user