Files
thebet365/docs/默认数据说明.md
Mars 27580b2479 feat(admin,player,api): 优胜冠军通用管理与界面精简
管理端新增冠军盘列表/编辑、展开懒加载与 ECharts 修复;各列表页去掉重复标题。玩家端支持多赛事冠军盘、分批加载与语言切换刷新。API 扩展 outright CRUD 与列表性能优化。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-04 09:17:01 +08:00

191 lines
6.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 默认数据说明
执行 `pnpm db:migrate` 后数据库仅有**表结构**;执行 **`pnpm db:seed`** 后会写入下文演示数据。
种子脚本位置:`apps/api/prisma/seed.ts`
> **注意**:以下为开发演示用途。生产环境务必修改密码、`JWT_SECRET`,勿直接使用默认账号。
---
## migrate 与 seed 的区别
| 命令 | 作用 |
|------|------|
| `pnpm db:migrate` | 按 Prisma 迁移**建表 / 改表**(用户、赛事、盘口、注单等) |
| `pnpm db:seed` | 在已有表结构中**写入演示账号、赛事、赔率、内容等** |
推荐顺序:先 `db:migrate`,再 `db:seed`
种子多为 **upsert**重复执行一般不会重复创建用户但会补全赛事、48 强夺冠盘等。
---
## 一、默认账号
| 用户名 | 密码 | 角色 | 说明 |
|--------|------|------|------|
| `admin` | `Admin@123` | 平台管理员 | 绑定 `SUPER_ADMIN` 角色 |
| `agent1` | `Agent@123` | 一级代理 | 授信额度 **100,000** |
| `agent2` | `Agent@123` | 二级代理 | 上级为 agent1授信 **30,000** |
| `player1` | `Player@123` | 玩家 | 挂靠 agent1 |
| 入口 | 地址 |
|------|------|
| 管理后台admin / agent1 / agent2 | http://localhost:5174 |
| 玩家前台player1 | http://localhost:5173 |
| 接口 | 路径 |
|------|------|
| 管理端登录 | `POST /api/manage/auth/login` |
| 玩家端登录 | `POST /api/player/auth/login` |
---
## 二、默认环境与端口
| 项 | 默认值 |
|----|--------|
| API | http://localhost:3000 ,全局前缀 `/api` |
| Swagger | http://localhost:3000/api/docs |
| 管理后台 | http://localhost:5174 |
| 玩家前台 | http://localhost:5173 |
| Docker PostgreSQL | 用户/密码/库:`thebet365` @ `localhost:5432` |
| Docker Redis | `localhost:6379`(当前 API 逻辑以 Postgres 为主) |
`apps/api/.env` 模板见根目录 `.env.example`,主要项:
| 变量 | 示例 | 说明 |
|------|------|------|
| `DATABASE_URL` | `postgresql://thebet365:thebet365@localhost:5432/thebet365` | 数据库连接 |
| `JWT_SECRET` | 长随机串 | **生产必须修改** |
| `JWT_PLAYER_EXPIRES` | `24h` | 玩家 Token |
| `JWT_ADMIN_EXPIRES` | `2h` | 管理员 Token |
| `JWT_AGENT_EXPIRES` | `8h` | 代理 Token |
| `PORT` | `3000` | API 端口 |
| `UPLOAD_DIR` | 空 | 默认 `apps/api/uploads` |
---
## 三、默认赛事与盘口
### 联赛
| 代码 | 名称 |
|------|------|
| `EPL` | 英超 / Premier League |
| `WC2026` | 2026 世界杯(加拿大、墨西哥、美国) |
### 已发布场次(约 9 场)
- **英超 2 场**:如曼联 vs 切尔西(开球时间为相对当前的演示时间)
- **世界杯 7 场**:如墨西哥-南非、美国-巴拉圭、法国-阿根廷等2026-06 固定日期)
每场在尚无盘口时会自动创建演示玩法,包括但不限于:
- 全场 / 半场:独赢、让球、大小、单双
- 全场 / 半场 / 下半场:波胆(多档比分选项)
赔率均为种子脚本中的**示例数值**,可在管理后台赛事相关流程中调整(非冠军盘)。
### 世界杯 48 强夺冠盘
| 项 | 说明 |
|----|------|
| 数据来源 | `apps/api/src/domains/catalog/wc2026-outright-teams.ts` |
| 队伍数 | **48** 支,含排名与中英文名 |
| 默认赔率 | 如法国 4.95、英格兰 6.3、苏格兰 2500 等 |
| 玩家端 | 投注页 `/bet`**「优胜冠军」**:按后台已发布赛事折叠展示,多赛事可分别展开;选项过多时点击 **加载更多**(须玩家账号) |
| 管理端 | 菜单 **「优胜冠军」** → 选择赛事 → 可增删队伍、改赔率;世界杯可 **导入 48 强基准** |
| 恢复基准 | **优胜冠军** 页点击 **「导入世界杯 48 强」** 与代码表对齐 |
`pnpm db:seed` 会以 `forceCanonical: true` 同步 48 强;已有选项的赔率仅在「应用基准」或重新 seed 时按文件覆盖。
---
## 四、玩家演示数据player1
| 项 | 默认值 |
|----|--------|
| 可用余额 | **88,888.88** |
| 账变流水 | 2 笔演示充值(`DEMO-DEP-001` / `DEMO-DEP-002` |
| 语言偏好 | `zh-CN` |
| 示例注单 | `DEMO-BET-001`:待结算单关;`DEMO-BET-002`:已赢且已结算单关 |
---
## 五、运营内容(玩家首页)
| 类型 | 数量 | 说明 |
|------|------|------|
| Banner | 3 | 欢迎投注、首存礼遇、热门赛事 |
| 走马灯TICKER | 1 | 欢迎语 + 理性投注提示 |
| 公告NOTICE | 1 | 每周一 04:0005:00 维护通知 |
图片路径示例:`/uploads/banners/welcome.svg` 等。
重复执行 seed 时,已存在的同类内容可能因 `catch` 跳过,不会无限重复插入。
---
## 六、权限与库内多语言
### 角色与权限
- 角色:`SUPER_ADMIN`(超级管理员)
- 权限示例:`users.create``users.view``agents.create``agents.view``wallet.deposit``wallet.withdraw``matches.manage``settlement.confirm``cashback.confirm``content.manage``reports.view`
### i18n_messages 表
种子仅写入少量玩家端 key中 / 英 / 马来),例如 `nav.home``bet.place_bet`
**管理后台与玩家端大部分文案在代码内**`admin-messages``player` 内 vue-i18n不全部存数据库。
---
## 七、管理后台默认行为
| 项 | 默认 |
|----|------|
| 界面语言 | 中文 `zh-CN``localStorage``admin_locale` |
| 可选语言 | 中文、English、Bahasa Melayu |
| 登录页 | 若开启「快速登录(调试)」可一键 admin / agent |
---
## 八、玩家端看不到「优胜冠军」时
1. 使用 **玩家账号** 登录(`player1` / `Player@123`),代理或管理员账号无法访问 `GET /player/outrights`
2. 确认 API 已启动:`pnpm dev:api`
3. 确认已种子:`pnpm db:seed`(或管理端 **优胜冠军 → 导入世界杯 48 强**)。
4. 进入 **投注** 页,点顶部 **优胜冠军**(不是「赛事」标签)。
5. 浏览器 F12 → Network`/api/player/outrights` 是否 200 且 `data` 数组非空。
**后台有数据、玩家端没有**:多为玩家接口原先只查 `OPEN` 盘口,与后台查询不一致;现已改为与管理端「优胜冠军」页共用 `OutrightService` 数据源。修改后需 **重启 API**
---
## 九、如何查看 / 重置
```bash
# 可视化浏览所有表
pnpm db:studio
# 重新写入种子(不删表,多为 upsert
pnpm db:seed
```
仅想恢复 **48 强夺冠赔率** 为代码基准:管理后台 → **优胜冠军****导入世界杯 48 强**
清空数据库后重来:
```bash
docker compose down -v # 会删除 Docker 数据卷,慎用
docker compose up -d
pnpm db:migrate
pnpm db:seed
```
---
## 十、相关文档
- [项目启动指南.md](./项目启动指南.md) — 安装、启动、排错
- [README.md](../README.md) — 项目概览