""" 적응형 전략 엔진 API 엔드포인트 현재 적응형 파라미터 조회, 수동 갱신, 모드 변경 이력 조회. """ import logging from fastapi import APIRouter, Depends from app.core.security import require_api_key logger = logging.getLogger(__name__) router = APIRouter(prefix="/adaptive-strategy", tags=["adaptive-strategy"]) @router.get("/status") async def get_adaptive_status(): """현재 적응형 전략 상태 조회. Returns: trading_mode, params, condition 포함 딕셔너리 """ try: from app.services.adaptive_strategy import get_adaptive_status as _get_status return _get_status() except Exception as e: logger.error("[Adaptive API] 상태 조회 실패: %s", e) return {"error": "상태 조회 실패 — 서버 로그 확인", "trading_mode": "normal", "fallback_used": True} @router.post("/refresh", dependencies=[Depends(require_api_key)]) async def refresh_adaptive_params(): """적응형 파라미터 수동 갱신. KODEX200 데이터를 다시 조회하여 파라미터를 재계산. """ try: from app.services.adaptive_strategy import ( refresh_adaptive_params as _refresh, get_adaptive_status as _get_status, ) await _refresh() return {"result": "refreshed", **_get_status()} except Exception as e: logger.error("[Adaptive API] 수동 갱신 실패: %s", e) return {"error": "갱신 실패 — 서버 로그 확인"} @router.get("/history") async def get_mode_history(days: int = 30): """모드 변경 이력 조회. Args: days: 조회 기간 (일, 기본 30일) """ try: from app.services.adaptive_strategy import get_strategy_history history = await get_strategy_history(days=days) return {"history": history, "count": len(history)} except Exception as e: logger.error("[Adaptive API] 이력 조회 실패: %s", e) return {"history": [], "count": 0, "error": "이력 조회 실패 — 서버 로그 확인"}