# 01 — 扩展代理主钱包信用模型与领域不变量

**What to build:** 系统能够在不改变历史钱包行为的前提下表达代理主钱包信用额度，并由统一 Wallet Domain 安全计算现金可用金额、总可用金额和欠款。数据库与领域层共同拒绝非法开关组合、负额度、越界结果和算术溢出。

**Blocked by:** `.scratch/tech-public-foundation/issues/01-public-migration-ownership-and-gates.md` — 01 — 建立公共迁移所有权与检查门禁

**Status:** ready-for-agent

**架构通道:** 主通道为 Infrastructure，辅助通道为复杂写 Domain。

**完整业务边界:** 本票收口代理主钱包信用字段、Wallet Domain 金额语义、数据库检查约束和历史数据兼容。明确不迁移具体扣款、冻结、充值或退款入口，不改变佣金钱包和资产钱包的业务边界。

- [ ] 迁移前置检查从目标 PostgreSQL 查询真实约束定义和异常数据；历史主钱包及佣金钱包均固化为关闭信用、额度为零，升级后原有现金行为不变。
- [ ] 代理主钱包支持信用开关和分单位 `int64` 额度；佣金钱包始终无信用并保持余额非负，数据库不存在外键或 GORM 关联标签。
- [ ] Wallet Domain 统一提供现金可用金额、有效信用额度、总可用金额、欠款状态和欠款金额，并保证关闭/0、开启/正数及总可用金额不小于零。
- [ ] 领域与数据库共同拒绝负额度、开启/0、关闭/非零、冻结金额为负、主钱包超出信用边界及所有加减法溢出场景。
- [ ] 真实 PostgreSQL 迁移测试覆盖升级、降级的安全条件、约束拒绝、重复执行检查和历史钱包兼容；出现负余额后的发布说明明确禁止回滚到旧钱包逻辑。
- [ ] 领域单元测试覆盖普通现金、部分使用信用、用尽信用、超过信用、冻结占用但未形成欠款，以及正负整数边界。
