# UAT 测试与上线准备

## 测试账号

| 角色 | 用户名 | 密码 | 说明 |
|------|--------|------|------|
| 超级管理员 | admin | Admin@123 | 平台后台 |
| 赛事管理员 | matchadmin | MatchAdmin@123 | 赛事/结算/内容，无账务权限 |
| 财务管理员 | financeadmin | FinanceAdmin@123 | 上分/下分/额度/返水/充值 |
| 客服查询员 | support1 | Support@123 | 只读查询 + 重置玩家密码 |
| 一级代理 | agent1 | Agent@123 | 管理后台 :5174 登录，授信 100000 |
| 二级代理 | agent2 | Agent@123 | 隶属 agent1（无独立前端） |
| 测试玩家 | player1 | Player@123 | 初始余额 1000 |

## MVP 验收清单（18 项）

玩法与串关规则参考：[投注玩法说明.md](./投注玩法说明.md)。

- [ ] 玩家可登录、改密码、切换语言
- [ ] 代理可创建直属玩家
- [ ] 代理可给直属玩家上分/下分
- [ ] 代理额度正确扣减和释放
- [ ] 后台可创建比赛和盘口
- [ ] 后台可批量录入波胆赔率
- [ ] 前台可展示赛事和盘口
- [ ] 玩家可单关下注
- [ ] 玩家可 2-5 串 1
- [ ] ~~同场串关被禁止~~（v1 产品决定：允许同场串关，跳过）
- [ ] 四分之一盘口不能进入串关
- [ ] 开赛自动封盘
- [ ] 后台可录入比分并生成预览
- [ ] 确认结算后钱包正确变化
- [ ] 玩家可查看注单和账变
- [ ] 玩家可查看返水明细，且与账单「反水」入账金额一致
- [ ] 后台可生成并发放返水
- [ ] Banner/公告/走马灯可配置
- [ ] 所有关键操作有日志
- [ ] 平台后台「自动化测试」运行所选套件，全部通过（约 50 条用例，含逐步 input/expected/actual 明细）

## 回归测试流程

1. 运行单元测试：`pnpm --filter @thebet365/api test`（规则类用例，不含 DB 全链路）
2. 或平台后台 → **自动化测试** → 选择套件（含「下注结算链路」）→ **运行测试**
3. 代理上分 → 玩家下注 → 封盘 → 录入比分 → 预览 → 确认结算
4. 验证钱包余额与代理额度变化
5. 测试串关限制（四分之一球、冠军竞猜；同场串关按 v1 允许）
6. 测试返水批次生成与确认
7. 返水对账：后台发放后，玩家「账单-反水」入账金额 =「返水明细」对应批次金额；账变详情可跳转返水明细

## 三角色 RBAC（SEC010–SEC012）

- [ ] **SEC010** 使用 `support1` 登录：菜单仅显示查询相关项；玩家页可查看/重置密码，无上分/下分/创建按钮；调用 `POST /admin/wallet/deposit` 返回 403
- [ ] **SEC011** 使用 `financeadmin` 登录：无赛事/结算/内容菜单；可对玩家上分、调整代理额度；调用 `POST /admin/matches` 等赛事写接口返回 403
- [ ] **SEC012** 使用 `matchadmin` 登录：有赛事/结算/内容；无上分/额度/返水确认；调用 `POST /admin/wallet/deposit` 返回 403
- [ ] **SEC013** 使用 `matchadmin` 创建/发布赛事后，在 **赛事管理 → 赛事日志**（`/matches/audit-logs`）可见记录（如 `CREATE_MATCH`、`PUBLISH_MATCH`），操作人为 `matchadmin`；侧栏「操作日志」不显示赛事类记录
- [ ] **SEC014** 使用 `financeadmin` 打开「操作日志」：**不应**看到 `matchadmin` 的记录（同角色隔离）；`financeadmin` 无赛事管理菜单；使用 `admin` 登录可在赛事日志与操作日志分别查看全部
- [ ] 自动化：`pnpm --filter @thebet365/api exec jest admin-rbac.spec.ts --runInBand` 通过

## 备份与回滚

- PostgreSQL：每日 `pg_dump` 备份（脚本：`scripts/backup-db.ps1`）
- 回滚：恢复备份 + 回退部署版本
- 结算错误：使用重结算冲正流程，禁止直接改余额

## 后台操作培训要点

1. 赛事创建：联赛 → 球队 → 比赛 → 生成盘口模板 → 录入赔率 → 发布
2. 结算：录入半场/全场比分 → 生成预览 → 核对派彩 → 确认
3. 代理管理：授信额度 → 监控占用 → 负数时禁止继续放款
4. 返水：选择周期 → 预览 → 财务确认 → 发放
