feat(t223): generate tasks from freight items

This commit is contained in:
QiuSW
2026-07-28 23:51:59 +08:00
parent 6d052b0462
commit 433db45100
25 changed files with 2697 additions and 48 deletions
+28 -5
View File
@@ -257,18 +257,41 @@ Connector 未登录、找不到货运单、响应协议错误和暂时不可用
### `POST /api/v1/freight-items/{item_id}/procurement-request`
T-223 创建或重放该商品当前 revision 的采购需求。标题、SKU/规格或数量不合法时返回
`422 FREIGHT_ITEM_NOT_PURCHASABLE`;不调用 VLM 补字段。
T-223 创建或重放该商品当前 revision 的采购需求。ERP 数字状态不自动解释,ADMIN
必须显式确认仍需采购:
```json
{"confirm_procurement_needed":true}
```
请求快照保留 title、product spec、SKU、quantity、来源 hash/revision 和当时的取消/
采购状态。缺标题、SKU、正整数数量或来源明确取消时创建为 `BLOCKED`,不调用 VLM
补字段;字段合格但没有受控参考图时为 `NEEDS_IMAGE`。
### `PUT /api/v1/procurement-requests/{id}/reference-asset`
绑定当前 ADMIN 已上传的 `TASK_REFERENCE` asset。asset 必须尚未属于其他任务/请求,
内容仍走既有解码、像素、规范化和 hash 校验。
内容仍走既有解码、像素、规范化和 hash 校验。请求体:
```json
{"image_asset_id":"2bbc1bf2-30f7-497e-a52b-bcb4c61d57c3"}
```
绑定成功后进入 `READY`。来源 revision/hash 或货运取消标记已变化时返回
`409 PROCUREMENT_SOURCE_CHANGED`。
### `POST /api/v1/procurement-requests/{id}/purchase-task`
必须带 `Idempotency-Key`。只有 `READY` request 可生成任务;同一 request revision
并发或重试返回同一 task。来源后续更新不修改已生成任务。
必须带 `Idempotency-Key`,请求体是空 JSON 对象 `{}`。只有 `READY` request 可生成
任务;task、`purchase_task_sources` 和 request 的 `TASK_CREATED` 状态在同一事务内
提交。同一 request revision 即使使用不同幂等 key 重试也返回同一 task。来源后续
更新只显示 `source_changed=true`,不修改 PENDING、CLAIMED、RUNNING 或终态任务。
管理 Web 在 `/freight/{id}` 内提供对应的人工确认、参考图上传和生成任务操作;写操作
分别使用 `/freight/items/{id}/procurement-request`、
`/freight/procurement-requests/{id}/reference` 和
`/freight/procurement-requests/{id}/purchase-task`,均受 ADMIN session 与 CSRF
保护。
## 采购任务