来源:2026-09-17 用户原话:「失败的采购任务,点击重试时不要新建,重试执行选中的采购任务」。
采购管理页勾选失败任务点「重试」,BatchRetry 一律调用 Create 新建采购任务(CG-224 → CG-234)。原任务留在列表里,任务号变化,同一条 SYB 明细的多次尝试分散在多个任务上。
BatchRetry
Create
采购管理页批量重试改为原地重试选中任务,复用既有 Reset:任务号不变,状态回到 pending,本次尝试记入 purchase_task_attempt。
Reset
pending
purchase_task_attempt
Reset 已具备全部安全检查,原样沿用:
failed
irreversible_at
order_submit_request_id
pdd_order_no
order_submitted_at
ensureDeviceFree 只把租约未过期的 pending 视为占用,重置后租约为空,同一设备上勾选多条可排队执行。
ensureDeviceFree
批量入口保留 retryEligibility 预检(状态、档案可采购性、设备),与原先一致。
retryEligibility
[必须] 不满足原地重试条件的任务不新建,逐条返回原因。
[必须]
AgentRetry
order_result_unknown
go test ./app/goauto/purchase/...;Web 构建。
go test ./app/goauto/purchase/...
批量重试语义变化,更新 docs/08-agent-api-contract.md 中 batch-retry 说明。
docs/08-agent-api-contract.md
No dependencies set.
The note is not visible to the blocked user.
问题
采购管理页勾选失败任务点「重试」,
BatchRetry一律调用Create新建采购任务(CG-224 → CG-234)。原任务留在列表里,任务号变化,同一条 SYB 明细的多次尝试分散在多个任务上。方案
采购管理页批量重试改为原地重试选中任务,复用既有
Reset:任务号不变,状态回到pending,本次尝试记入purchase_task_attempt。Reset已具备全部安全检查,原样沿用:failedirreversible_at/order_submit_request_id/pdd_order_no/order_submitted_at任一有值即拒绝(可能已建订单)ensureDeviceFree只把租约未过期的 pending 视为占用,重置后租约为空,同一设备上勾选多条可排队执行。批量入口保留
retryEligibility预检(状态、档案可采购性、设备),与原先一致。[必须]不满足原地重试条件的任务不新建,逐条返回原因。非目标
[必须]Agent 端AgentRetry(替代商品规格已匹配、继续采购)保持新建。该场景商品已替换,不能复用原任务。拆出独立的新建路径供其使用。Reset的判据。order_result_unknown(仍走人工核对/授权重新采购)。验收
验证
go test ./app/goauto/purchase/...;Web 构建。文档影响
批量重试语义变化,更新
docs/08-agent-api-contract.md中 batch-retry 说明。