fix: 采购管理批量重试改为原地重试选中任务,不再新建 #303

Open
opened 2026-09-17 14:47:05 +08:00 by ila · 0 comments
Owner

来源:2026-09-17 用户原话:「失败的采购任务,点击重试时不要新建,重试执行选中的采购任务」。

问题

采购管理页勾选失败任务点「重试」,BatchRetry 一律调用 Create 新建采购任务(CG-224 → CG-234)。原任务留在列表里,任务号变化,同一条 SYB 明细的多次尝试分散在多个任务上。

方案

采购管理页批量重试改为原地重试选中任务,复用既有 Reset:任务号不变,状态回到 pending,本次尝试记入 purchase_task_attempt。

Reset 已具备全部安全检查,原样沿用:

  • 只接受 failed
  • irreversible_at / order_submit_request_id / pdd_order_no / order_submitted_at 任一有值即拒绝(可能已建订单)
  • 同一 SYB 明细已有更新任务时拒绝
  • 规格快照不完整时拒绝
  • 设备锁、能力位、设备空闲检查

ensureDeviceFree 只把租约未过期的 pending 视为占用,重置后租约为空,同一设备上勾选多条可排队执行。

批量入口保留 retryEligibility 预检(状态、档案可采购性、设备),与原先一致。

[必须] 不满足原地重试条件的任务不新建,逐条返回原因。

非目标

  • [必须] Agent 端 AgentRetry(替代商品规格已匹配、继续采购)保持新建。该场景商品已替换,不能复用原任务。拆出独立的新建路径供其使用。
  • 不改 Reset 的判据。
  • 不处理 order_result_unknown(仍走人工核对/授权重新采购)。
  • 不改单任务 Agent 端原地重置行为。

验收

  • 勾选失败任务重试后任务号不变,状态为 pending,尝试次数 +1。
  • 不产生新的采购任务。
  • 碰过下单边界的失败任务被拒绝并返回原因,不新建。
  • 同一设备勾选多条均可重试并排队。
  • 同一 requestId 重放幂等。
  • Agent 端替代商品继续采购仍新建任务。
  • 前端文案与结果展示改为「已重试」,不再称「已创建」。

验证

go test ./app/goauto/purchase/...;Web 构建。

文档影响

批量重试语义变化,更新 docs/08-agent-api-contract.md 中 batch-retry 说明。

> 来源:2026-09-17 用户原话:「失败的采购任务,点击重试时不要新建,重试执行选中的采购任务」。 ## 问题 采购管理页勾选失败任务点「重试」,`BatchRetry` 一律调用 `Create` 新建采购任务(CG-224 → CG-234)。原任务留在列表里,任务号变化,同一条 SYB 明细的多次尝试分散在多个任务上。 ## 方案 采购管理页批量重试改为**原地重试选中任务**,复用既有 `Reset`:任务号不变,状态回到 `pending`,本次尝试记入 `purchase_task_attempt`。 `Reset` 已具备全部安全检查,原样沿用: - 只接受 `failed` - `irreversible_at` / `order_submit_request_id` / `pdd_order_no` / `order_submitted_at` 任一有值即拒绝(可能已建订单) - 同一 SYB 明细已有更新任务时拒绝 - 规格快照不完整时拒绝 - 设备锁、能力位、设备空闲检查 `ensureDeviceFree` 只把租约未过期的 pending 视为占用,重置后租约为空,同一设备上勾选多条可排队执行。 批量入口保留 `retryEligibility` 预检(状态、档案可采购性、设备),与原先一致。 `[必须]` 不满足原地重试条件的任务**不新建**,逐条返回原因。 ## 非目标 - `[必须]` Agent 端 `AgentRetry`(替代商品规格已匹配、继续采购)保持新建。该场景商品已替换,不能复用原任务。拆出独立的新建路径供其使用。 - 不改 `Reset` 的判据。 - 不处理 `order_result_unknown`(仍走人工核对/授权重新采购)。 - 不改单任务 Agent 端原地重置行为。 ## 验收 - [ ] 勾选失败任务重试后任务号不变,状态为 pending,尝试次数 +1。 - [ ] 不产生新的采购任务。 - [ ] 碰过下单边界的失败任务被拒绝并返回原因,不新建。 - [ ] 同一设备勾选多条均可重试并排队。 - [ ] 同一 requestId 重放幂等。 - [ ] Agent 端替代商品继续采购仍新建任务。 - [ ] 前端文案与结果展示改为「已重试」,不再称「已创建」。 ## 验证 `go test ./app/goauto/purchase/...`;Web 构建。 ## 文档影响 批量重试语义变化,更新 `docs/08-agent-api-contract.md` 中 batch-retry 说明。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/goauto#303