""" Benchmark comparison API endpoints. """ from typing import List from fastapi import APIRouter, Depends, HTTPException, Query from sqlalchemy.orm import Session from app.core.database import get_db from app.api.deps import CurrentUser from app.schemas.benchmark import ( BenchmarkCompareResponse, BenchmarkIndexInfo, BenchmarkType, PeriodType, ) from app.services.benchmark import BenchmarkService router = APIRouter(prefix="/api/benchmark", tags=["benchmark"]) @router.get("/indices", response_model=List[BenchmarkIndexInfo]) async def list_indices(): """사용 가능한 벤치마크 목록 반환.""" return [ BenchmarkIndexInfo( code="kospi", name="KOSPI", description="코스피 종합지수", ), BenchmarkIndexInfo( code="deposit", name="정기예금", description="정기예금 금리 (연 3.5%)", ), ] @router.get("/compare/{portfolio_id}", response_model=BenchmarkCompareResponse) async def compare_with_benchmark( portfolio_id: int, current_user: CurrentUser, db: Session = Depends(get_db), benchmark: BenchmarkType = Query(BenchmarkType.KOSPI), period: PeriodType = Query(PeriodType.ONE_YEAR), ): """포트폴리오 성과를 벤치마크와 비교.""" service = BenchmarkService(db) try: result = service.compare_with_benchmark( portfolio_id=portfolio_id, benchmark_type=benchmark.value, period=period.value, user_id=current_user.id, ) except ValueError as e: raise HTTPException(status_code=404, detail=str(e)) return result