"""调度器相关路由""" 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, get_settings_repo from app.api.common import success_response router = APIRouter(prefix="/api/scheduler", tags=["scheduler"]) async def _save_auto_validate_setting(enabled: bool, settings_repo: SettingsRepository): """保存自动验证设置""" async with get_db() as db: await settings_repo.save(db, {"auto_validate": enabled}) @router.post("/start") async def start_scheduler( scheduler: SchedulerService = Depends(get_scheduler_service), settings_repo: SettingsRepository = Depends(get_settings_repo), ): if scheduler.running: return success_response("验证调度器已在运行", {"running": True}) try: await _save_auto_validate_setting(True, settings_repo) except Exception: return success_response("启动调度器失败(设置保存异常)", {"running": False}) await scheduler.start() return success_response("验证调度器已启动", {"running": True}) @router.post("/stop") async def stop_scheduler( scheduler: SchedulerService = Depends(get_scheduler_service), settings_repo: SettingsRepository = Depends(get_settings_repo), ): if not scheduler.running: return success_response("验证调度器未运行", {"running": False}) try: await _save_auto_validate_setting(False, settings_repo) except Exception: return success_response("停止调度器失败(设置保存异常)", {"running": True}) await scheduler.stop() 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}, )