"""Workload endpoints for skill domain.""" from __future__ import annotations from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.ext.asyncio import AsyncSession from ....database import get_db from ....dependencies import get_current_user, get_tenant_id from ....models import User from ....services import workload_service from .shared import ensure_self_or_admin router = APIRouter() @router.get("/workload/team") async def get_team_workload_board( tenant_id: int = Depends(get_tenant_id), current_user: User = Depends(get_current_user), db: AsyncSession = Depends(get_db), ): _ = current_user data = await workload_service.get_team_workload_board(db, tenant_id) return {"items": data, "total": len(data)} @router.get("/workload/users/{user_id}", response_model=dict) async def get_user_personal_workload( user_id: int, tenant_id: int = Depends(get_tenant_id), current_user: User = Depends(get_current_user), db: AsyncSession = Depends(get_db), ): ensure_self_or_admin( current_user=current_user, target_user_id=user_id, detail="仅可查询自己的负载", ) data = await workload_service.get_user_personal_workload(db, tenant_id, user_id) if not data: raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="无负载数据") return data