# 钱包模块

## 模块职责

`Features/Wallet` 承接首页 `wallet` 权限入口，负责个人钱包首页、收益明细、提现记录、提现申请、银行卡设置和积分兑换。

## 代码结构

- `WalletAPI`：封装钱包、提现、银行卡、地区、积分相关接口。
- `WalletViewModel`：管理钱包汇总、收益明细分页、提现记录分页和提现资格判断。
- `WithdrawApplyViewModel`：管理提现信息、金额校验、短信验证码和提现提交。
- `WithdrawalSettingsViewModel`：管理银行卡资料、图片上传和银行卡更新提交。
- `PointsRedemptionViewModel`：管理积分概览、兑换记录和兑换申请。
- `WalletView`：钱包首页和钱包内部二级路由入口。

## 提现资格流

点击提现后先查询实名认证：

1. 未提交或驳回：进入已迁移的 `RealNameAuthView`。
2. 审核中：提示等待实名认证审核通过。
3. 实名认证通过：查询银行卡资料。
4. 无银行卡或银行卡驳回：进入 `WithdrawalSettingsView`。
5. 银行卡审核中：提示等待审核。
6. 银行卡通过：进入 `WithdrawApplyView`。

## 上传与缓存边界

银行卡正反面照片使用 `PhotosPicker` 选择后，通过 `OSSUploadService.uploadBankCardImage` 上传到 `bank_card/yyyyMMdd/scenicId/...` 路径，再把最终 URL 提交给服务端。

钱包数据只保存在各 ViewModel 内存中。短信验证码、OSS STS、提现表单、银行卡图片 Data 和积分兑换表单均不落盘。
