feat: 管理端 RBAC 权限体系与员工管理

新增多角色权限控制(赛事/财务/客服管理员),支持员工 CRUD、路由菜单按权限显隐、审计日志范围过滤;登录返回角色与权限列表。玩家端赛事列表增加静默刷新避免图片闪烁。Seed 补充演示员工账号与充值相关权限。附带 RBAC/审计范围单元测试及 UAT 文档更新。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-15 17:52:39 +08:00
parent be5b4a4921
commit 567ec9ec8a
44 changed files with 1717 additions and 125 deletions

View File

@@ -5,6 +5,9 @@
| 角色 | 用户名 | 密码 | 说明 |
|------|--------|------|------|
| 超级管理员 | 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 |
@@ -44,6 +47,13 @@
6. 测试返水批次生成与确认
7. 返水对账:后台发放后,玩家「账单-反水」入账金额 =「返水明细」对应批次金额;账变详情可跳转返水明细
## 三角色 RBACSEC010SEC012
- [ ] **SEC010** 使用 `support1` 登录:菜单仅显示查询相关项;玩家页可查看/重置密码,无上分/下分/创建按钮;调用 `POST /admin/wallet/deposit` 返回 403
- [ ] **SEC011** 使用 `financeadmin` 登录:无赛事/结算/内容菜单;可对玩家上分、调整代理额度;调用 `POST /admin/matches` 等赛事写接口返回 403
- [ ] **SEC012** 使用 `matchadmin` 登录:有赛事/结算/内容;无上分/额度/返水确认;调用 `POST /admin/wallet/deposit` 返回 403
- [ ] 自动化:`pnpm --filter @thebet365/api exec jest admin-rbac.spec.ts --runInBand` 通过
## 备份与回滚
- PostgreSQL每日 `pg_dump` 备份(脚本:`scripts/backup-db.ps1`

View File

@@ -24,6 +24,9 @@
| 用户名 | 密码 | 角色 | 说明 |
|--------|------|------|------|
| `admin` | `Admin@123` | 平台管理员 | 绑定 `SUPER_ADMIN` 角色 |
| `matchadmin` | `MatchAdmin@123` | 赛事管理员 | 仅 dev seed`MATCH_ADMIN` 角色 |
| `financeadmin` | `FinanceAdmin@123` | 财务管理员 | 仅 dev seed`FINANCE_ADMIN` 角色 |
| `support1` | `Support@123` | 客服/查询员 | 仅 dev seed`SUPPORT` 角色 |
| `agent1` | `Agent@123` | 一级代理 | 仅 dev seed 写入,授信额度 **100,000** |
| `agent2` | `Agent@123` | 二级代理 | 仅 dev seed 写入,上级为 agent1授信 **30,000** |
| `player1` | `Player@123` | 玩家 | 仅 dev seed 写入,挂靠 agent1 |