이번에 들어간 내용
한투 호가 = 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 키 정리도 같이 들어갔습니다. 파일 단위로 나눌 수 없어서입니다.
This commit is contained in:
@@ -29,7 +29,7 @@ from typing import List, Dict, Optional, Tuple
|
||||
|
||||
import requests
|
||||
|
||||
ROOT = Path(__file__).resolve().parent
|
||||
ROOT = Path(__file__).resolve().parent.parent # repo root (이 파일은 legacy/)
|
||||
sys.path.insert(0, str(ROOT))
|
||||
|
||||
from database import TradeDB
|
||||
@@ -269,15 +269,14 @@ def set_stock_config(db: TradeDB, code: str, name: str, params: Dict):
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
def _get_kis_token(db: TradeDB) -> Tuple[str, str, str, bool]:
|
||||
"""
|
||||
env_config에서 KIS 인증 정보 조회.
|
||||
env_auth_config에서 KIS 인증 정보 조회.
|
||||
KIS_MOCK=true → 모의 키/도메인 사용 (시세 조회도 모의 도메인에서 동작)
|
||||
KIS_MOCK=false → 실전 키/도메인 사용
|
||||
None 값은 빈 문자열로 안전 처리.
|
||||
"""
|
||||
row = db.conn.execute("SELECT * FROM env_config ORDER BY id DESC LIMIT 1").fetchone()
|
||||
if not row:
|
||||
raise RuntimeError("env_config 테이블이 비어 있습니다.")
|
||||
r = dict(row)
|
||||
r = db.get_auth_env()
|
||||
if not r:
|
||||
raise RuntimeError("env_auth_config 테이블이 비어 있습니다.")
|
||||
|
||||
def safe(val):
|
||||
return val if val else ""
|
||||
@@ -1956,10 +1955,7 @@ class HoldingTrader:
|
||||
except Exception as _te:
|
||||
logger.warning(f"토큰 자동갱신 건너뜀: {_te}")
|
||||
|
||||
cfg_row = self.db.conn.execute(
|
||||
"SELECT * FROM env_config ORDER BY id DESC LIMIT 1"
|
||||
).fetchone()
|
||||
r = dict(cfg_row) if cfg_row else {}
|
||||
r = self.db.get_auth_env()
|
||||
|
||||
def safe(v): return v if v else ""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user