feat: 定时任务调度功能
All checks were successful
continuous-integration/drone/push Build is passing

- 新增 platform_scheduled_tasks 和 platform_task_logs 数据表
- 实现 APScheduler 调度器服务(支持简单模式和CRON表达式)
- 添加定时任务 CRUD API
- 支持手动触发执行和查看执行日志
- 前端任务管理页面
This commit is contained in:
2026-01-28 11:27:42 +08:00
parent e45fe8128c
commit ed88099cf0
7 changed files with 1319 additions and 1 deletions

View File

@@ -15,8 +15,10 @@ from .routers.alerts import router as alerts_router
from .routers.cost import router as cost_router
from .routers.quota import router as quota_router
from .routers.tool_configs import router as tool_configs_router
from .routers.tasks import router as tasks_router
from .middleware import TraceMiddleware, setup_exception_handlers, RequestLoggerMiddleware
from .middleware.trace import setup_logging
from .services.scheduler import start_scheduler, shutdown_scheduler
# 配置日志(包含 TraceID
setup_logging(level=logging.INFO, include_trace=True)
@@ -68,6 +70,27 @@ app.include_router(alerts_router, prefix="/api")
app.include_router(cost_router, prefix="/api")
app.include_router(quota_router, prefix="/api")
app.include_router(tool_configs_router, prefix="/api")
app.include_router(tasks_router, prefix="/api")
@app.on_event("startup")
async def startup_event():
"""应用启动时初始化调度器"""
try:
start_scheduler()
logging.info("Scheduler started successfully")
except Exception as e:
logging.error(f"Failed to start scheduler: {e}")
@app.on_event("shutdown")
async def shutdown_event():
"""应用关闭时停止调度器"""
try:
shutdown_scheduler()
logging.info("Scheduler shutdown successfully")
except Exception as e:
logging.error(f"Failed to shutdown scheduler: {e}")
@app.get("/")