Skip to content

项目成员

管理项目成员的角色和权限。

源码: apps/backend/src/routes/schedules.ts(成员管理端点与定时任务定义在同一路由文件中)

所有端点都需要认证(combinedAuth),路由挂载在 /projects/:projectId/members 下。


GET /projects/:projectId/members

获取项目成员列表及其角色、权限信息,同时返回可添加的候选人(团队中尚未分配项目角色的成员)。

认证方式

JWT Token / API Key(combinedAuth

权限要求

项目访问权限(团队成员)

请求参数

Path 参数

参数类型必填说明
projectIdstring项目 UUID

响应格式

状态码: 200

json
{
  "members": [
    {
      "user_id": "uuid",
      "display_name": "张三",
      "avatar_url": "https://...",
      "email": null,
      "roles": [
        {
          "id": "role-uuid",
          "code": "admin",
          "name": "管理员",
          "user_role_id": "user-role-uuid"
        }
      ],
      "direct_permissions": [
        {
          "code": "execute",
          "user_permission_id": "user-perm-uuid"
        }
      ]
    }
  ],
  "candidates": [
    {
      "user_id": "uuid",
      "display_name": "李四",
      "avatar_url": "https://...",
      "email": null
    }
  ],
  "canManage": true
}
字段类型说明
membersMember[]项目成员列表(含角色和直接权限)
candidatesCandidate[]可添加的候选人(团队成员中尚无项目角色/权限的)
canManageboolean当前用户是否有管理权限(admin)

错误码

状态码错误说明
403无权访问该项目非团队成员
404项目不存在项目不存在或已删除

POST /projects/:projectId/members

添加项目成员(为用户分配角色或直接权限)。

认证方式

JWT Token / API Key(combinedAuth

权限要求

项目管理员权限(admin)

请求参数

Path 参数

参数类型必填说明
projectIdstring项目 UUID

Body 参数

json
{
  "user_id": "uuid",
  "role_id": "role-uuid",
  "permission_codes": ["execute", "write"]
}
参数类型必填说明
user_idstring目标用户 UUID
role_idstring角色 UUID(需 scope=project)
permission_codesstring[]直接权限码列表(自由人模式)

role_idpermission_codes 至少提供一个。

响应格式

状态码: 201

json
{
  "success": true,
  "assigned": {
    "roles": ["admin"],
    "permissions": ["execute", "write"]
  }
}
字段类型说明
assigned.rolesstring[]已分配的角色 code 列表
assigned.permissionsstring[]已分配的权限 code 列表

错误码

状态码错误说明
400user_id 为必填缺少 user_id
400需要指定 role_id 或 permission_codes两者都未提供
400角色不存在或不适用于项目role_id 无效或 scope 不是 project
400用户不是团队成员目标用户不在项目所属团队中
403需要项目管理员权限缺少 admin 权限
404项目不存在项目不存在

PUT /projects/:projectId/members/:userId

更新项目成员的角色和权限(替换模式:传入新列表替换旧列表)。

认证方式

JWT Token / API Key(combinedAuth

权限要求

项目管理员权限(admin)

请求参数

Path 参数

参数类型必填说明
projectIdstring项目 UUID
userIdstring目标用户 UUID

Body 参数

json
{
  "role_ids": ["role-uuid-1", "role-uuid-2"],
  "permission_codes": ["execute"]
}
参数类型必填说明
role_idsstring[]新的角色 UUID 列表(替换现有角色)
permission_codesstring[]新的权限码列表(替换现有直接权限)

注意:传入 role_idspermission_codes 时,会先软删除该用户在此项目的所有现有角色/权限,再添加新的。

响应格式

状态码: 200

json
{
  "success": true
}

错误码

状态码错误说明
403需要项目管理员权限缺少 admin 权限

DELETE /projects/:projectId/members/:userId

移除项目成员(软删除该用户在此项目的所有角色和直接权限)。

认证方式

JWT Token / API Key(combinedAuth

权限要求

项目管理员权限(admin)

请求参数

Path 参数

参数类型必填说明
projectIdstring项目 UUID
userIdstring目标用户 UUID

响应格式

状态码: 200

json
{
  "success": true
}

限制

  • 不能移除自己(防止管理员误操作)

错误码

状态码错误说明
400不能移除自己的权限尝试移除自己
403需要项目管理员权限缺少 admin 权限

AI Workflow Editor