feat(api): 任务广场与任务详情公开化(无需登录)
- GET /opc/tasks 去除 require_roles 改为公开,按 display_priority 降序返回已发布任务
- 新增 GET /opc/tasks/{task_id} 公开任务详情(仅已发布,其余404)
This commit is contained in:
@@ -55,12 +55,26 @@ async def opc_agent(
|
||||
}
|
||||
|
||||
|
||||
@router.get("/tasks", summary="任务广场(已发布平台任务)")
|
||||
@router.get("/tasks", summary="任务广场(已发布平台任务,公开可见)")
|
||||
async def opc_task_square(
|
||||
db: Database = Depends(get_db),
|
||||
_u: dict = Depends(require_roles("opc_member")),
|
||||
):
|
||||
return {"items": await db.tasks.list(status="published")}
|
||||
"""任务广场公开可见:返回已发布(published)任务,按展示优先级降序。查看无需登录。"""
|
||||
items = await db.tasks.list_published()
|
||||
items.sort(key=lambda t: -(t.get("display_priority") or 0))
|
||||
return {"items": items}
|
||||
|
||||
|
||||
@router.get("/tasks/{task_id}", summary="任务详情(公开可见)")
|
||||
async def opc_task_detail(
|
||||
task_id: str,
|
||||
db: Database = Depends(get_db),
|
||||
):
|
||||
"""任务详情,公开可见:仅返回已发布任务;否则 404。"""
|
||||
item = await db.tasks.get(task_id)
|
||||
if item is None or item.get("status") != "published":
|
||||
raise HTTPException(status_code=404, detail="任务不存在")
|
||||
return item
|
||||
|
||||
|
||||
@router.get("/my-tasks", summary="我的任务看板")
|
||||
|
||||
Reference in New Issue
Block a user