feat(prototype): redesign procurement task workbench

This commit is contained in:
QiuSW
2026-08-03 15:00:49 +08:00
parent cad00877d3
commit 9c3c2b2cab
13 changed files with 741 additions and 283 deletions
+24 -1
View File
@@ -53,7 +53,8 @@
| `POST` | `/login` | 建立管理会话 |
| `POST` | `/logout` | 销毁会话 |
| `GET` | `/tasks` | 任务列表,支持 `q`、`status`、`days`、`cursor` |
| `POST` | `/tasks` | 手工建单(F-001) |
| `POST` | `/tasks` | 手工建单,初始状态为 `DRAFT`(F-001) |
| `POST` | `/tasks/start-trials` | 批量把 `DRAFT` 原子转为 `PENDING`,开始第一趟试选(F-018) |
| `GET` | `/tasks/{id}` | 任务详情 |
| `POST` | `/tasks/{id}/cancel` | 取消任务 |
| `POST` | `/tasks/{id}/order-authorizations` | 确认试选结果并签发授权(F-008) |
@@ -64,6 +65,28 @@
> Excel 导入(`/tasks/import`)与 ERP 货运(`/freight*`)已移出 MVP,见
> [需求](02-requirements.md)第三节后续迭代表。
### `POST /tasks/start-trials`
管理页面以带 CSRF 的表单提交结构化任务版本列表:
```json
{
"start_key": "<幂等键>",
"tasks": [
{ "id": "018f...", "expected_task_version": 1 },
{ "id": "0190...", "expected_task_version": 3 }
]
}
```
- 只接受当前状态为 `DRAFT` 的任务;该动作含义是允许 desk 端领取第一趟试选,**不签发下单
授权、不建立提交围栏、不创建订单、不付款**。
- 服务端在一个事务内校验全部任务存在、属于当前管理范围、状态仍为 `DRAFT` 且版本匹配,
然后统一转 `PENDING` 并递增版本。任一项失败返回 `409 conflict`,整批不产生部分成功。
- `tasks` 为空或包含重复 id 返回 `400 invalid_argument`;重复 `start_key` 返回第一次的结果,
不重复推进版本。
- SSR 成功后 `303` 返回原任务列表查询地址;冲突时保留筛选条件,刷新表格并要求重新选择。
### `POST /tasks/{id}/order-authorizations`
```json