#!/usr/bin/env python3 """ 환경변수 DB 업데이트 스크립트 (간단 버전) - 딕셔너리로 직접 값을 넣어서 업데이트 """ import sys from pathlib import Path SCRIPT_DIR = Path(__file__).resolve().parent sys.path.insert(0, str(SCRIPT_DIR)) from database import TradeDB def update_env(updates): """ 환경변수 업데이트 Args: updates: 업데이트할 환경변수 딕셔너리 예: { "KIS_APP_KEY": "your_app_key", "KIS_APP_SECRET": "your_app_secret", "MM_BOT_TOKEN_": "your_token", ... } """ db_path = SCRIPT_DIR / "quant_bot.db" db = TradeDB(db_path=str(db_path)) # 기존 최신 설정 불러오기 latest = db.get_latest_env() if latest and latest.get("snapshot"): current = latest["snapshot"] print(f"📋 기존 설정 불러옴 (ID: {latest['id']})") else: current = {} print("⚠️ 기존 설정 없음 - 새로 생성") # 기존 값과 병합 new_snapshot = {**current, **updates} # 새 스냅샷 저장 env_id = db.insert_env_snapshot(new_snapshot) if env_id: print(f"✅ 환경변수 저장 완료! (새 스냅샷 ID: {env_id})") print(f" 업데이트된 키: {', '.join(updates.keys())}") else: print("❌ 저장 실패!") db.close() return env_id if __name__ == "__main__": # 여기에 업데이트할 값들을 딕셔너리로 넣으세요 my_updates = { # ── 시세/조회 = 항상 실키 정책 (코드 패치 B안과 짝) ── # main.py 의 _build_market_client() 가 시세 전용 실키 KISClient 를 만들어 # ws/전략/조건/랭킹에 주입함. KIS_MOCK 은 매매·계좌(주문/잔고)에만 적용. # "KIWOOM_MOCK": "false", # 키움도 시세만 받으니 실키 # # 키움이 죽어도 실키 KIS 로 안전 폴백 (모의 도메인 호출이 없으므로 500 안 남) # "WS_GAP_FILL_KIS_FALLBACK": "true", # 시장 급락 서킷브레이커 — 처음엔 false 로 두고 1~2주 모니터 후 true "STRATEGY_UPDOW_ENABLED": "false", # ← 검증 끝나면 "true" } if not my_updates: print("⚠️ 업데이트할 값이 없습니다.") print(" update_env_simple.py 파일을 열어서 my_updates 딕셔너리에 값을 입력하세요.") sys.exit(1) update_env(my_updates)