PMFlow/backend/app/api/scheduler.py

38 lines
1.1 KiB
Python

"""Scheduler API 路由。"""
from fastapi import APIRouter, Depends
from sqlalchemy.ext.asyncio import AsyncSession
from ..database import get_db
from ..dependencies import require_manager_user
from ..models import User
from ..services import workload_service
router = APIRouter(prefix="/scheduler", tags=["scheduler"])
@router.get("/health")
async def scheduler_health() -> dict:
"""调度模块健康检查。"""
return {"code": 0, "message": "success", "data": {"status": "ok"}}
@router.post("/workloads/recalc")
async def trigger_workload_recalc(
current_user: User = Depends(require_manager_user),
db: AsyncSession = Depends(get_db),
) -> dict:
"""手动触发一次负载重算。"""
_ = current_user
tenant_ids = await workload_service.list_tenant_ids(db)
if not tenant_ids:
tenant_ids = [1]
total = 0
for tenant_id in tenant_ids:
total += await workload_service.recalculate_all_users_workload_ratio(db, tenant_id=tenant_id)
return {
"code": 0,
"message": "success",
"data": {"tenant_count": len(tenant_ids), "user_count": total},
}