"""调度器相关路由""" from fastapi import APIRouter, Depends from app.services.scheduler_service import SchedulerService from app.repositories.settings_repo import SettingsRepository from app.core.db import get_db from app.api.deps import get_scheduler_service from app.api.common import success_response router = APIRouter(prefix="/api/scheduler", tags=["scheduler"]) settings_repo = SettingsRepository() async def _save_auto_validate_setting(enabled: bool): """保存自动验证设置""" async with get_db() as db: settings = await settings_repo.get_all(db) settings["auto_validate"] = enabled from app.models.schemas import SettingsSchema await settings_repo.save(db, SettingsSchema(**settings).model_dump()) @router.post("/start") async def start_scheduler(scheduler: SchedulerService = Depends(get_scheduler_service)): if scheduler.running: return success_response("验证调度器已在运行", {"running": True}) await scheduler.start() await _save_auto_validate_setting(True) return success_response("验证调度器已启动", {"running": True}) @router.post("/stop") async def stop_scheduler(scheduler: SchedulerService = Depends(get_scheduler_service)): if not scheduler.running: return success_response("验证调度器未运行", {"running": False}) await scheduler.stop() await _save_auto_validate_setting(False) return success_response("验证调度器已停止", {"running": False}) @router.post("/validate-now") async def validate_now(scheduler: SchedulerService = Depends(get_scheduler_service)): job_id = scheduler.validate_all_now() return success_response("已开始全量验证", {"started": True, "job_id": job_id}) @router.get("/status") async def scheduler_status(scheduler: SchedulerService = Depends(get_scheduler_service)): return success_response( "获取状态成功", {"running": scheduler.running, "interval_minutes": scheduler.interval_minutes}, )