# wallet Specification (Delta)

## Purpose
钱包系统架构变更：废弃统一钱包设计，拆分为 `agent-wallet`（代理钱包）和 `card-wallet`（卡钱包）两个完全独立的系统，实现数据层和代码层的完全隔离。

## REMOVED Requirements

### Requirement: 钱包实体定义

**Reason**: 废弃统一钱包设计，拆分为代理钱包（AgentWallet）和卡钱包（CardWallet）两个独立实体，使用独立的数据表。

**Migration**:
- 代理钱包（shop 类型）迁移到 `tb_agent_wallet` 表，参见 `agent-wallet` spec
- 卡钱包（iot_card 和 device 类型）迁移到 `tb_card_wallet` 表，参见 `card-wallet` spec
- 代码层使用新的 Model：`model.AgentWallet` 和 `model.CardWallet`
- 代码层使用新的 Store：`AgentWalletStore` 和 `CardWalletStore`

---

### Requirement: 钱包明细记录

**Reason**: 废弃统一交易记录表，拆分为代理钱包交易记录（tb_agent_wallet_transaction）和卡钱包交易记录（tb_card_wallet_transaction）两个独立表。

**Migration**:
- 代理钱包交易记录迁移到 `tb_agent_wallet_transaction` 表，参见 `agent-wallet` spec
- 卡钱包交易记录迁移到 `tb_card_wallet_transaction` 表，参见 `card-wallet` spec
- 代码层使用新的 Model：`model.AgentWalletTransaction` 和 `model.CardWalletTransaction`

---

### Requirement: 充值记录管理

**Reason**: 废弃统一充值记录表，拆分为代理充值记录（tb_agent_recharge_record）和卡充值记录（tb_card_recharge_record）两个独立表。

**Migration**:
- 代理充值记录迁移到 `tb_agent_recharge_record` 表，参见 `agent-wallet` spec
- 卡充值记录迁移到 `tb_card_recharge_record` 表，参见 `card-wallet` spec
- 代码层使用新的 Model：`model.AgentRechargeRecord` 和 `model.CardRechargeRecord`
- 充值服务拆分为 `agent_recharge` 和 `card_recharge` 两个独立 Service

---

### Requirement: 钱包余额操作

**Reason**: 余额操作逻辑拆分到代理钱包和卡钱包两个独立系统，使用各自的 Store 实现。

**Migration**:
- 代理钱包余额操作使用 `AgentWalletStore`，参见 `agent-wallet` spec
- 卡钱包余额操作使用 `CardWalletStore`，参见 `card-wallet` spec
- 并发控制（乐观锁）机制保持不变，继续使用 `version` 字段

---

### Requirement: 钱包数据校验

**Reason**: 数据校验规则拆分到代理钱包和卡钱包两个独立系统，针对各自的字段设计优化。

**Migration**:
- 代理钱包数据校验：使用 `shop_id` + `wallet_type`，参见 `agent-wallet` spec
- 卡钱包数据校验：使用 `resource_type` + `resource_id`，参见 `card-wallet` spec

---

### Requirement: 钱包归属资源规则

**Reason**: 归属规则拆分到代理钱包和卡钱包两个独立系统，业务语义更清晰。

**Migration**:
- 代理钱包归属店铺（shop_id），不支持转手，参见 `agent-wallet` spec
- 卡钱包归属资源（iot_card / device），支持转手，参见 `card-wallet` spec

---

## MODIFIED Requirements

无修改的 requirements，所有原有 requirements 均已废弃并在新系统中重新定义。

---
