feat(api): 任务广场与任务详情公开化(无需登录)

- GET /opc/tasks 去除 require_roles 改为公开,按 display_priority 降序返回已发布任务
- 新增 GET /opc/tasks/{task_id} 公开任务详情(仅已发布,其余404)
This commit is contained in:
Pine
2026-08-27 18:36:16 +08:00
parent 9160183a3c
commit 11598abcc1
+17 -3
View File
@@ -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="我的任务看板")