优化任务列表性能和本地登录代理
This commit is contained in:
@@ -208,6 +208,24 @@ def _visible_huya_tasks_query(db: Session, current: User):
|
||||
raise HTTPException(status_code=403, detail="无权查看虎牙任务")
|
||||
|
||||
|
||||
def _huya_task_summary(query):
|
||||
"""按状态汇总虎牙任务,避免概览页拉完整任务列表。"""
|
||||
rows = (
|
||||
query.enable_eagerloads(False)
|
||||
.order_by(None)
|
||||
.with_entities(HuyaTask.status, func.count(HuyaTask.id))
|
||||
.group_by(HuyaTask.status)
|
||||
.all()
|
||||
)
|
||||
status_counts = {status or "": count for status, count in rows}
|
||||
return {
|
||||
"total": sum(status_counts.values()),
|
||||
"success": status_counts.get("success", 0),
|
||||
"failed": sum(status_counts.get(status, 0) for status in ("failed", "error")),
|
||||
"status_counts": status_counts,
|
||||
}
|
||||
|
||||
|
||||
def _require_huya_task_account_access(db: Session, current: User, account_ids: list[int]) -> None:
|
||||
"""确保任务只会提交到当前用户可操作的虎牙账号。"""
|
||||
requested_ids = set(account_ids)
|
||||
@@ -1379,6 +1397,15 @@ def list_tasks(
|
||||
return [_task_out(task, include_images=include_images) for task in tasks]
|
||||
|
||||
|
||||
@router.get("/tasks/summary")
|
||||
def tasks_summary(
|
||||
db: Session = Depends(get_db),
|
||||
current: User = Depends(require_permission("huya:task")),
|
||||
):
|
||||
"""虎牙任务统计。"""
|
||||
return _huya_task_summary(_visible_huya_tasks_query(db, current))
|
||||
|
||||
|
||||
@router.get("/tasks/{task_id}", response_model=HuyaTaskOut)
|
||||
def get_task(
|
||||
task_id: int,
|
||||
|
||||
Reference in New Issue
Block a user