Pending Project WorkTask 列表与取消支持 (2026-08-04)

本文中“pending WorkTask 进入 Commission 列表”的规则已被 Pending Commission 隐藏与延后创建 Group 取代。取消接口仍然有效,但 pending WorkTask 只通过 Open Call / Project Request 数据提供给前端。

接口变更

user

  • POST /api/work_tasks/list
    • 功能:获取当前用户的 WorkTask 列表
    • 变更:未传 status 时默认包含 pending;修复 type=project 的类型筛选
  • POST /api/work_tasks/cancel
    • 功能:用户取消尚未开始的 WorkTask
    • 变更:明确支持取消 Project 流程创建的 pending WorkTask

artist_center

接口示例

user

POST /api/work_tasks/list

  • 功能说明:获取当前登录用户的 WorkTask 列表。
  • 变更说明:Project 选中应征后、等待画师确认的 pending WorkTask 现在进入默认列表。

请求参数

字段类型必填说明
typestring否service / project,实际按 work_tasks.busable_type 筛选
statusstring[]否WorkTask 状态;不传时默认查询 pending、working、finished
pagenumber否页码,默认 1
sizenumber否每页数量,默认 15,最大 50

请求示例

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

响应说明

Project 流程创建的列表项包含:

{
  "id": 123,
  "busable_type": "project",
  "reqable_type": "project_request",
  "status": "pending"
}

错误响应

422:筛选参数校验失败。

POST /api/work_tasks/cancel

  • 功能说明:用户取消自己的 WorkTask。
  • 变更说明:pending 和 wait_pay 均可取消;取消后状态为 user_canceled。

请求参数

字段类型必填说明
idnumber是当前用户的 WorkTask ID

请求示例

{
  "id": 123
}

响应示例

{
  "ok": true
}

错误响应

  • 403:WorkTask 当前状态不可取消
  • 404:WorkTask 不属于当前用户
  • 422:id 校验失败

artist_center

POST /api/artist_center/work_tasks/list

  • 功能说明:获取当前登录画师的 WorkTask 列表。
  • 变更说明:Project 选中应征后、等待画师确认的 pending WorkTask 现在进入默认列表。

请求参数

字段类型必填说明
busable_typestring否service / project
statusstring[]否WorkTask 状态;不传时默认查询 pending、working、finished
pagenumber否页码,默认 1
sizenumber否每页数量,默认 15,最大 50

请求示例

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

响应说明

返回的 Project WorkTask 结构与 User 列表一致,并带有对应的 project_request 快照和关联数据。

错误响应

422:筛选参数校验失败。

POST /api/artist_center/work_tasks/cancel

  • 功能说明:画师取消自己的 WorkTask。
  • 变更说明:pending 和 wait_pay 均可取消;取消后状态为 artist_canceled。

请求参数

字段类型必填说明
idnumber是当前画师的 WorkTask ID

请求示例

{
  "id": 123
}

响应示例

{
  "ok": true
}

错误响应

  • 403:WorkTask 当前状态不可取消
  • 404:WorkTask 不属于当前画师
  • 422:id 校验失败

前端配合

  • 如果列表请求显式传入 status,后端严格按传入值筛选,不会自动追加 pending。
  • User 和 Artist 后台当前的“进行中”列表参数需要从 ["working", "wait_pay"] 调整为 ["pending", "working", "wait_pay"]。
  • pending 详情页的取消按钮需要放开;后端现有取消接口已经支持该状态。
  • 取消其中一个 WorkTask 不会回退关联 project_requests.status,同一应征下的其他 WorkTask 不受影响。