"""검증용 수동 갱신 API. POST /api/refresh/{code} body: 없음 query: ?lookback_days=7 (기본) resp: refresh_one.RefreshReport.to_dict() """ from __future__ import annotations from fastapi import APIRouter, HTTPException, Query from sqlalchemy import text from app.db.connection import get_engine from app.pipelines.refresh_one import refresh_code router = APIRouter(prefix="/api", tags=["refresh"]) def _resolve_name(code: str) -> str | None: eng = get_engine() with eng.connect() as conn: row = conn.execute(text("SELECT name FROM symbols WHERE code = :code"), {"code": code}).first() return row[0] if row else None @router.post("/refresh/{code}") def refresh_endpoint( code: str, lookback_days: int = Query(default=7, ge=1, le=365), ) -> dict: name = _resolve_name(code) if not name: raise HTTPException(status_code=404, detail=f"unknown code: {code} (symbols 테이블에 없음. 시드 필요)") report = refresh_code(code, name, lookback_days=lookback_days) return report.to_dict()