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

2.0 KiB
Raw Blame History

06 — 统一代理主钱包冻结与解冻

What to build: 需要预占代理主钱包资金的完整用例可以统一冻结、解冻和完成冻结资金扣除,并与普通扣款维护同一个信用边界。并发冻结、取消和完成不会造成重复处理或总可用金额越界。

Blocked by:

  • .scratch/ur38-agent-main-wallet-credit/issues/01-agent-main-wallet-credit-foundation.md — 01 — 扩展代理主钱包信用模型与领域不变量
  • .scratch/ur38-agent-main-wallet-credit/issues/05-unified-agent-wallet-debit.md — 05 — 统一代理订单、代购与钱包支付扣款
  • .scratch/tech-public-foundation/issues/02-transactional-public-outbox-write.md — 02 — 在业务事务中可靠写入公共 Outbox

Status: ready-for-agent

架构通道: 复杂写Application UseCase → Wallet Domain → Repository/Infrastructure。

完整业务边界: 本票收口代理主钱包冻结、解冻和冻结资金最终扣除的完整用例及统一并发规则。明确不迁移佣金钱包提现、资产钱包冻结或没有触碰代理主钱包的预占流程。

  • 冻结使用总可用金额作为边界,允许冻结占用信用但不把冻结金额直接计为欠款;冻结成功后版本递增。
  • 解冻只减少合法冻结金额,完成冻结资金扣除同时减少余额和冻结金额,并保持冻结金额非负及主钱包总可用金额合法。
  • 每个调用用例将业务状态、钱包版本、必要真实金额流水、Audit Event 和 Outbox 在同一事务维护,失败时整体回滚。
  • 状态条件和稳定业务引用保证重复冻结、重复取消、重复完成不会二次改变钱包;并发零受影响行可区分业务已处理与真实资金冲突。
  • 现有代理主钱包冻结相关调用点不再直接拼接现金条件或绕过 Wallet Domain佣金钱包原有提现边界保持不变。
  • 测试覆盖纯现金冻结、占用信用、超额冻结、欠款状态下解冻、部分解冻、完成扣除、重复请求和并发竞态。