""" 视频分析API路由 (T-024) GET /api/v1/videos/{item_id}/analysis """ from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.ext.asyncio import AsyncSession from app.database import get_db from app.services.video_analysis import get_video_analysis_data from app.services.yuntu_api import YuntuAPIError router = APIRouter(prefix="/videos", tags=["视频分析"]) @router.get("/{item_id}/analysis") async def get_video_analysis( item_id: str, db: AsyncSession = Depends(get_db), ): """ 获取视频分析数据。 返回6大类指标: - 基础信息 (8字段) - 触达指标 (7字段) - A3指标 (3字段) - 搜索指标 (5字段) - 费用指标 (3字段) - 成本指标 (6字段,计算得出) Args: item_id: 视频ID Returns: 视频分析数据 Raises: 404: 视频不存在 500: API调用失败 """ try: result = await get_video_analysis_data(db, item_id) return { "success": True, "data": result, } except ValueError as e: raise HTTPException(status_code=404, detail=str(e)) except YuntuAPIError as e: # API失败但有降级数据时不抛错 raise HTTPException(status_code=500, detail=f"API Error: {e.message}") except Exception as e: raise HTTPException(status_code=500, detail=f"Internal error: {str(e)}")