Pending Commission 隐藏与延后创建 Group (2026-08-05)

接口变更

user

  • POST /api/project_requests/choose
    • 功能:用户选定 Open Call 应征并创建 WorkTask
    • 变更:非自动接受只创建 pending WorkTask,不创建 Group 和 Commission 页面事件
  • POST /api/project_requests/requested_list
    • 功能:获取 Open Call 的应征及关联 WorkTask
    • 变更:继续返回 pending WorkTask,供前端展示等待确认按钮和取消弹窗
  • POST /api/projects/list
    • 功能:获取 User Center 的 Open Call 列表及 Commission 摘要
    • 变更:created_commissions_count 和顶层 work_tasks 排除 pending;chosen_project_requests[].work_tasks 继续保留 pending
  • POST /api/work_tasks/list
    • 功能:获取 User Commission 列表
    • 变更:无论是否显式传入 status=pending,列表都排除 pending WorkTask
  • POST /api/work_tasks/cancel
    • 功能:取消 pending WorkTask
    • 变更:接口能力不变,改由 Open Call 弹窗调用
  • POST /api/groups/list
    • 功能:获取 Group 列表
    • 变更:隐藏历史数据中已经关联 pending WorkTask 的 Group
  • POST /api/groups/new_groups
    • 功能:增量获取 Group
    • 变更:隐藏历史数据中已经关联 pending WorkTask 的 Group
  • POST /api/groups/info
    • 功能:按 Group ID 或 WorkTask ID 获取 Group
    • 变更:pending WorkTask 的历史 Group 按不存在处理
  • POST /api/groups/open
    • 功能:打开 Group
    • 变更:禁止打开 pending WorkTask 的历史 Group

artist_center

echo / event

  • GroupCreated
    • 功能:广播新 Group
    • 变更:非自动接受流程延后到 Artist 接受后触发
  • GroupMessageCreated
    • 功能:广播 Group 新消息
    • 变更:Open Call 创建 Commission 统一复用现有 worktask.created 系统消息

接口示例

user

POST /api/project_requests/choose

  • 功能说明:用户选定 Open Call 应征并创建 WorkTask 和阶段。
  • 变更说明:根据 project_request.auto_accept 决定是否立即进入可见 Commission 流程。

分支行为

auto_acceptWorkTask 状态Commission 列表Group页面事件Group 消息
truewait_pay立即可见立即创建User、Artist 各创建现有 created现有 worktask.created
falsepending两端隐藏不创建不创建不发送

非自动接受时仍会向 Artist 发送原有的 Project Request 被选中通知,用于提示 Artist 前往 Open Call / User Center 处理;该通知不属于 Commission 页面提示或 Group 消息。

请求参数与响应

没有变化,成功响应仍为:

{
  "ok": true
}

错误响应

无新增,沿用原有错误语义。

POST /api/project_requests/requested_list

  • 功能说明:获取当前 User 的 Open Call 应征列表。
  • 变更说明:pending WorkTask 不进入 Commission 列表,但仍保留在 data[].work_tasks[]。

前端状态映射

{
  "id": 201,
  "status": "user_chosen",
  "work_tasks": [
    {
      "id": 58,
      "status": "pending"
    }
  ]
}
  • 存在目标 work_tasks[].status === "pending":展示等待画师接受按钮;点击后打开弹窗,弹窗内使用 WorkTask ID 调用取消接口。
  • 对应 WorkTask 已进入 wait_pay、working 或 finished:展示 View Commission,跳转 Commission 详情。
  • 不要通过 Commission 列表查找 pending WorkTask。

错误响应

无新增,沿用原有错误语义。

POST /api/projects/list

  • 功能说明:获取 User Center 的 Open Call 列表、应征预览和 Commission 摘要。
  • 变更说明:pending WorkTask 仍通过 chosen_project_requests[].work_tasks[] 返回,供前端展示等待接受和取消入口;但不计入 created_commissions_count,也不会出现在顶层 work_tasks[] Commission 预览中。

前端字段用途

  • chosen_project_requests[].work_tasks[]:判断 Open Call 应征当前是 pending 还是已接受。
  • created_commissions_count:只统计已进入可见 Commission 流程的 WorkTask。
  • 顶层 work_tasks[]:只返回已进入可见 Commission 流程的 Commission 预览。

错误响应

无新增,沿用原有错误语义。

POST /api/work_tasks/list

  • 功能说明:获取 User Commission 列表。
  • 变更说明:查询始终追加 status != pending。即使请求传入 status: ["pending"],也返回空列表。

请求示例

{
  "type": "project",
  "status": ["pending", "wait_pay", "working"]
}

该请求只可能返回 wait_pay、working,不会返回 pending。

错误响应

无新增,沿用原有错误语义。

POST /api/work_tasks/cancel

  • 功能说明:User 取消自己的 pending WorkTask。
  • 变更说明:接口没有变化;入口从 Commission 页面移动到 Open Call 的确认弹窗。

请求示例

{
  "id": 58
}

响应示例

{
  "ok": true
}

错误响应

  • 403:WorkTask 当前状态不可取消
  • 404:WorkTask 不属于当前 User
  • 422:参数校验失败

POST /api/groups/list

  • 功能说明:获取 Group 列表。
  • 变更说明:分页前排除关联 pending WorkTask 的 Group,保证历史数据不会产生空页或错误数量。

请求参数与响应

没有变化。

错误响应

无新增,沿用原有错误语义。

POST /api/groups/new_groups

  • 功能说明:按时间游标增量获取 Group。
  • 变更说明:游标分页前排除关联 pending WorkTask 的 Group。

请求参数与响应

没有变化。

错误响应

无新增,沿用原有错误语义。

POST /api/groups/info

  • 功能说明:查询当前 User 的 Group。
  • 变更说明:如果 Group 关联的 WorkTask 为 pending,返回 data: null。

响应示例

{
  "data": null
}

错误响应

无新增,沿用原有错误语义。

POST /api/groups/open

  • 功能说明:打开 Group 并更新当前用户的 Group 排序时间。
  • 变更说明:如果 Group 关联的 WorkTask 为 pending,返回 404。

错误响应

  • 404:Group 不存在、不属于当前用户或关联 pending WorkTask

artist_center

POST /api/artist_center/project_request/list_by_chosen

  • 功能说明:获取当前 Artist 已被选中的 Open Call 应征。
  • 变更说明:data[].work_tasks[] 继续包含 pending WorkTask,Artist 通过其中的 ID 调用接受接口。

请求参数与响应

没有变化。

错误响应

无新增,沿用原有错误语义。

POST /api/artist_center/work_tasks/list

  • 功能说明:获取 Artist Commission 列表。
  • 变更说明:查询始终追加 status != pending;显式请求 pending 也不会返回。

请求参数与响应

除 pending 隐藏规则外没有变化。

错误响应

无新增,沿用原有错误语义。

POST /api/artist_center/work_tasks/accept

  • 功能说明:Artist 接受 Open Call 的 pending WorkTask。
  • 变更说明:接口成功后一次性完成以下动作:
    • WorkTask 从 pending 进入 wait_pay
    • 创建 Group;历史数据已有 Group 时复用原 Group
    • 为 User、Artist 各创建一条现有 created 页面事件
    • 向 Group 发送现有 worktask.created 系统消息
    • 触发 GroupCreated(仅新建 Group 时)

请求示例

{
  "id": 58
}

响应示例

{
  "ok": true
}

错误响应

  • 400:WorkTask 不是 Open Call Project Request 来源
  • 403:WorkTask 当前不是 pending
  • 404:WorkTask 不属于当前 Artist
  • 422:参数校验失败

echo / event

GroupCreated

  • 自动接受:用户选择时触发。
  • 非自动接受:Artist 调用接受接口并成功创建 Group 后触发。
  • 历史 pending 数据已有 Group 时不重复触发,也不会重复创建 Group。

GroupMessageCreated

  • 自动接受和 Artist 接受后的 Group 消息都统一使用 scene=worktask.created。
  • 不再为非自动接受流程生成 project_request.user_choosen 或 project_request.artist_accepted Group 消息。
  • 不再新建 project_artist_confirmation_pending、project_artist_accepted Commission 页面事件。

前端对接清单

  • User、Artist Commission 列表不再请求或展示 pending。
  • User Center 的 created_commissions_count 和顶层 work_tasks[] 不包含 pending;等待接受状态从 chosen_project_requests[].work_tasks[] 读取。
  • User 在 Open Call 应征项中根据关联 WorkTask 状态展示等待确认按钮或 View Commission。
  • pending 按钮点击后打开确认弹窗,取消动作只放在弹窗中。
  • Artist 从已选中的 Project Request 数据取得 pending WorkTask ID,并调用接受接口。
  • Artist 接受后刷新 Project Request、Commission 列表和 Group 列表。
  • Commission 页面事件只需继续处理已有 created 类型;此前新增的两个 project_artist_* 类型不再用于新数据。
  • Group 只处理已有的 worktask.created 创建消息,不再新增 Open Call 专用 Group 话术。

兼容性说明

  • pending WorkTask 数据不删除,取消和接受接口保持可用。
  • 历史 pending WorkTask 已有 Group 时,Group API 会临时隐藏;接受后复用并重新显示该 Group。
  • 历史 project_artist_confirmation_pending / project_artist_accepted 页面事件仍可读取,并在接受、拒绝或取消时按原逻辑关闭;新流程不再创建这两类事件。
  • API 请求和成功响应结构没有变化,本次主要调整列表可见性和副作用触发时机。