# 08 — 逐行完成线下支付批量订购 **What to build:** 文件校验通过的线下支付任务可以严格按 CSV 行号逐行订购套餐。每行按资产当前归属确定结算代理,调用统一单资产订购命令创建已支付订单并激活套餐;一行业务失败只记录该行中文原因并继续,成功订单都能追溯批次及整批凭证。 **Blocked by:** - `.scratch/ur36-bulk-package-purchase/issues/05-single-asset-package-purchase-command.md` — 05 — 提供统一的单资产套餐订购命令 - `.scratch/ur36-bulk-package-purchase/issues/07-validate-csv-persist-items.md` — 07 — 完整校验 CSV 并固化逐行明细 **Status:** ready-for-agent **架构通道:** 复杂写,Application → Order/Package Domain。 **完整业务边界:** 本票收口批量任务的 `offline` 逐行执行、结果记录和任务终态。明确不建设凭证金额核销、跨批唯一、自动财务对账、单行重试或钱包扣款。 - [ ] Worker 仅按 `row_no ASC` 串行领取待处理或过期处理中明细,不并发改变业务顺序,已有成功或失败终态不可被覆盖。 - [ ] 每行重新读取资产当前归属并解析结算代理,任务创建时不存在单一代理快照,也不接受前端提供的 `shop_id`。 - [ ] 有效行调用统一单资产套餐订购命令,按结算代理当前授权、价格和套餐规则创建已支付订单并激活套餐,不扣任何代理钱包。 - [ ] 整批凭证 Key 快照关联到每个成功订单和批次审计;凭证可以被其他批次使用,不建立内容或金额唯一性。 - [ ] 资产、归属、授权、下架、价格、组合及订单业务错误写稳定失败码和中文原因后继续下一行,底层错误不原样返回。 - [ ] 成功行的订单、套餐使用与激活、明细成功状态、逐行关联、Audit Event 和 Outbox 原子提交;事务失败不会留下可重复执行的部分事实。 - [ ] 所有业务行处理完后任务进入已完成;全部成功、部分成功或全部业务失败只通过计数表达,`processed_count = success_count + fail_count = total_count`。 - [ ] 测试覆盖多代理、凭证 1 个和 5 个、未授权、下架、全部失败、部分成功、重复 Worker 领取和单行事务回滚。