7.5 KiB
默认数据说明
执行 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 |
一级代理 | 仅 dev seed 写入,授信额度 100,000 |
agent2 |
Agent@123 |
二级代理 | 仅 dev seed 写入,上级为 agent1,授信 30,000 |
player1 |
Player@123 |
玩家 | 仅 dev seed 写入,挂靠 agent1 |
生产模式 seed 只写入 admin 和赛事目录数据,不写入代理、玩家、充值流水或注单。
| 入口 | 地址 |
|---|---|
| 管理后台(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 |
三、默认赛事与盘口
联赛
| 代码 | 名称 |
|---|---|
WC2026 |
2026 世界杯(加拿大、墨西哥、美国) |
已发布场次
- 世界杯小组赛 72 场:含 2026-06 固定日期、场馆、分组、球队中英文名。
- 球队图片使用公开 FlagCDN 国旗 URL,例如
https://flagcdn.com/fr.svg;不再使用旧的赛事图片源。 - 默认赛事全部为非热门赛事,玩家首页不会因为 seed 数据自动出现热门赛事。
每场在尚无盘口时会自动创建演示玩法,包括但不限于:
- 全场 / 半场:独赢、让球、大小、单双
- 全场:波胆(多档比分选项)
默认足球盘口模板与赛事 seed 不创建 HT_CORRECT_SCORE(上半场波胆)和 SH_CORRECT_SCORE(下半场波胆)。这两个盘口类型仍保留在系统识别能力中,便于兼容历史数据或后续手动扩展。
赔率均为种子脚本中的示例数值,可在管理后台赛事相关流程中调整(非冠军盘)。
世界杯 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 |
| 示例注单 | 默认不写入演示注单 |
五、运营内容(玩家首页)
| 类型 | 数量 | 说明 |
|---|---|---|
| Banner | 3 | 欢迎投注、首存礼遇、热门赛事 |
| 走马灯(TICKER) | 1 | 欢迎语 + 理性投注提示 |
| 公告(NOTICE) | 1 | 每周一 04:00–05: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 |
八、玩家端看不到「优胜冠军」时
- 使用 玩家账号 登录(
player1/Player@123),代理或管理员账号无法访问GET /player/outrights。 - 确认 API 已启动:
pnpm dev:api。 - 确认已种子:
pnpm db:seed(或管理端 优胜冠军 → 导入世界杯 48 强)。 - 进入 投注 页,点顶部 优胜冠军(不是「赛事」标签)。
- 浏览器 F12 → Network,看
/api/player/outrights是否 200 且data数组非空。
后台有数据、玩家端没有:多为玩家接口原先只查 OPEN 盘口,与后台查询不一致;现已改为与管理端「优胜冠军」页共用 OutrightService 数据源。修改后需 重启 API。
九、如何查看 / 重置
# 可视化浏览所有表
pnpm db:studio
# 重新写入种子(不删表,多为 upsert)
pnpm db:seed
仅想恢复 48 强夺冠赔率 为代码基准:管理后台 → 优胜冠军 → 导入世界杯 48 强。
清空数据库后重来:
docker compose down -v # 会删除 Docker 数据卷,慎用
docker compose up -d
pnpm db:migrate
pnpm db:seed
生产服务器如需清空业务数据并写入正规默认数据,优先使用脚本:
CONFIRM=YES ./scripts/prod-init-db.sh
该脚本会先备份 PostgreSQL 到 backups/*.sql.gz 并生成 .sha256,再执行 Prisma 迁移,然后以 production 模式清空业务表并写入 admin、WC2026 小组赛 72 场和 48 强优胜盘。