한투 호가 = 2번째 앱키 전용 키 없거나 start 실패 시 메인에 H0STASP0 안 붙임. 운영설정 WS_ORDERBOOK_SAVE_KIS 빨간 danger. LS RAM 합집합 후보∪보유∪영구∪grace. sync_targets와 split reconcile 둘 다. 틱 DB 영구 게이트는 그대로. 분봉 쓰레기 → 다음 소스 봉 통째 그 분 틱 0건이거나 전부 봉끝 대비 LIVE_FEED_FALLBACK_MAX_AGE_SEC 초과면 구멍. 메인 WS → 2차 → LS → REST → rollup. CANDLE_GARBAGE_FALLBACK 기본 true. 파일: feed_fallback.py(신규), ws_manager.py, kis_ws.py, candle_series.py, bt_candle_source.py, live_config_schema.py, database.py, 스모크, MD 2개. 같은 ws_manager/database/kis_ws/live_config에는 직전 커밋 이후 쌓여 있던 시세 폴백·ENV 키 정리도 같이 들어갔습니다. 파일 단위로 나눌 수 없어서입니다.
33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
#!/usr/bin/env python3
|
|
from __future__ import annotations
|
|
import sys
|
|
from pathlib import Path
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
if str(ROOT) not in sys.path:
|
|
sys.path.insert(0, str(ROOT))
|
|
from database import TradeDB
|
|
|
|
db = TradeDB()
|
|
# skip 로그: 09:08:49 fid20=090844 025980 — DB에 09:08:49 recv + tick 090844 있는지
|
|
rows = db.conn.execute(
|
|
"SELECT code, tick_time, tick_time_raw, recv_ts, price FROM ws_ticks "
|
|
"WHERE source=%s AND code=%s AND recv_ts >= %s AND recv_ts <= %s "
|
|
"ORDER BY recv_ts LIMIT 20",
|
|
("kiwoom", "025980", "2026-08-19 09:08:40", "2026-08-19 09:09:00"),
|
|
).fetchall()
|
|
print("025980 around skip 09:08:49")
|
|
for r in rows:
|
|
print(dict(r))
|
|
|
|
rows2 = db.conn.execute(
|
|
"SELECT code, tick_time, tick_time_raw, recv_ts, price FROM ws_ticks "
|
|
"WHERE source=%s AND tick_time_raw=%s AND recv_ts >= %s AND recv_ts <= %s "
|
|
"LIMIT 10",
|
|
("kiwoom", "090844", "2026-08-19 09:08:40", "2026-08-19 09:09:10"),
|
|
).fetchall()
|
|
print("tick_time_raw=090844 near 09:08:49")
|
|
for r in rows2:
|
|
print(dict(r))
|
|
if not rows2:
|
|
print("(없음 — skip된 catch-up이 DB에 안 들어간 것)")
|