From 11598abcc159719bdf99b292e6a02f739f17318e Mon Sep 17 00:00:00 2001 From: Pine Date: Thu, 27 Aug 2026 18:36:16 +0800 Subject: [PATCH] =?UTF-8?q?feat(api):=20=E4=BB=BB=E5=8A=A1=E5=B9=BF?= =?UTF-8?q?=E5=9C=BA=E4=B8=8E=E4=BB=BB=E5=8A=A1=E8=AF=A6=E6=83=85=E5=85=AC?= =?UTF-8?q?=E5=BC=80=E5=8C=96(=E6=97=A0=E9=9C=80=E7=99=BB=E5=BD=95)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - GET /opc/tasks 去除 require_roles 改为公开,按 display_priority 降序返回已发布任务 - 新增 GET /opc/tasks/{task_id} 公开任务详情(仅已发布,其余404) --- app/api/routers/rbac_opc.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/app/api/routers/rbac_opc.py b/app/api/routers/rbac_opc.py index e0e792f..f56bc41 100644 --- a/app/api/routers/rbac_opc.py +++ b/app/api/routers/rbac_opc.py @@ -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="我的任务看板")