Files
junhong_cmp_fiber/.scratch/ur38-agent-main-wallet-credit/issues/05-unified-agent-wallet-debit.md
2026-07-22 17:25:12 +09:00

24 lines
2.4 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.
# 05 — 统一代理订单、代购与钱包支付扣款
**What to build:** 所有本需求触碰的代理订单支付、代购和后台套餐订购都通过同一个代理主钱包扣款能力结算。扣款统一使用总可用金额,能够在现金不足时安全使用信用,并原子维护订单事实、钱包版本、真实金额流水和可靠事件。
**Blocked by:**
- `.scratch/ur38-agent-main-wallet-credit/issues/01-agent-main-wallet-credit-foundation.md` — 01 — 扩展代理主钱包信用模型与领域不变量
- `.scratch/tech-public-foundation/issues/02-transactional-public-outbox-write.md` — 02 — 在业务事务中可靠写入公共 Outbox
- `.scratch/tech-global-audit/issues/01-audit-event-write-loop.md` — 01 — 交付不可变 Audit Event 写入闭环
**Status:** ready-for-agent
**架构通道:** 复杂写Application UseCase → Wallet Domain → Repository/InfrastructureOrder Application 为辅助编排通道。
**完整业务边界:** 本票收口代理主钱包扣款能力及现有被触碰的代理订单、代购、单资产后台订购调用点。它同时为 UR#36 的单资产套餐订购命令提供稳定钱包接缝。明确不迁移资产钱包支付、佣金钱包、不相关订单创建流程或整个订单模块。
- [ ] 统一扣款命令按代理主钱包加载聚合,以 `balance - frozen_balance + effective_credit` 判断资金边界,并安全允许账面余额在额度内变为负数。
- [ ] 钱包保存使用版本或等价行锁防止并发超额,成功后版本递增;并发请求不能让总可用金额小于零。
- [ ] 订单/业务单状态条件、钱包扣款、真实金额流水、Payment 事实、必要套餐处理、Audit Event 和 Outbox 在各完整用例的同一事务提交。
- [ ] 相同业务单重试不会重复扣款、重复建流水或重复激活;余额不足和版本冲突不会留下已支付订单或其他部分事实。
- [ ] 现有代理钱包支付、平台代理订购和代购调用点不再自行维护现金余额条件,均调用统一能力;旧 Service 如保留只能作为内部迁移门面。
- [ ] UR#36 可调用稳定的代理主钱包扣款 Application/Port 接缝,而无需复制信用公式、直接更新钱包模型或依赖旧 Store 条件。
- [ ] 集成测试逐一覆盖现金支付、部分信用、用尽信用、超额拒绝、代购付款钱包定位、并发支付、幂等重试、流水快照及 Outbox 回滚。