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="我的任务看板")