Files
junhong_cmp_fiber/.scratch/ur36-bulk-package-purchase/issues/08-offline-bulk-row-purchase.md
2026-07-22 17:25:05 +09:00

25 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 领取和单行事务回滚。