#!/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
    "MARKET_GUARD_ENABLED":         "false",   # ← 검증 끝나면 "true"
    "MARKET_GUARD_5MIN_DROP_PCT":   "2.0",     # 5분 -2% 하락 → PANIC
    "MARKET_GUARD_DAILY_DROP_PCT":  "3.0",     # 일중 -3% 하락 → PANIC
    "MARKET_GUARD_RECOVERY_PCT":    "1.0",     # 5분 +1% 반등 → 해제
    "MARKET_GUARD_INDEX_CODE":      "both",    # KOSPI + KOSDAQ 둘 다 감시
    "MARKET_GUARD_POLL_SEC":        "30",      # 30초마다 지수 조회
    }
    if not my_updates:
        print("⚠️ 업데이트할 값이 없습니다.")
        print("   update_env_simple.py 파일을 열어서 my_updates 딕셔너리에 값을 입력하세요.")
        sys.exit(1)
    
    update_env(my_updates)
