from __future__ import annotations import json from fastapi import APIRouter, Depends from sqlalchemy.ext.asyncio import AsyncSession from app.dependencies import get_admin_user, get_db from app.models.user import User from app.schemas.video_upscale import VideoUpscaleConfigOut, VideoUpscaleConfigSaveRequest from app.services.operation_log import log_operation from app.services.video_upscale.config_service import get_video_upscale_config, save_video_upscale_config router = APIRouter(prefix="/admin/video-upscale", tags=["admin-video-upscale"]) @router.get("/config", response_model=VideoUpscaleConfigOut, summary="获取视频超分配置") async def get_config( admin: User = Depends(get_admin_user), db: AsyncSession = Depends(get_db), ): _ = admin return await get_video_upscale_config(db) @router.put("/config", response_model=VideoUpscaleConfigOut, summary="保存视频超分配置") async def save_config( req: VideoUpscaleConfigSaveRequest, admin: User = Depends(get_admin_user), db: AsyncSession = Depends(get_db), ): before = await get_video_upscale_config(db) result = await save_video_upscale_config(db, req.data) await log_operation( db, admin.id, admin.username, "保存视频超分配置", "PUT", "/admin/video-upscale/config", detail=json.dumps( { "before_version": before["data"].get("version"), "after_version": result["data"].get("version"), "enabled": result["data"].get("enabled"), "delete_source_after_success": result["data"].get("delete_source_after_success"), "rule_count": len(result["data"].get("rules") or []), }, ensure_ascii=False, ), ) await db.commit() return result