chore: sync channel drawer and current test database documentation

This commit is contained in:
Yvan
2026-11-06 22:34:43 +08:00
parent 870c83efea
commit 64aca495f2
2 changed files with 25 additions and 10 deletions
+2 -2
View File
@@ -15,7 +15,7 @@
- 后端仅绑定 `127.0.0.1:9602`,前端仅绑定 `127.0.0.1:9601`。
- 宝塔 `sw2.fuhua91.com` 代理至 9601,前端容器将 `/api/` 转发至后端并去除前缀,支持 WebSocket、SSE 和文件上传。
测试数据库为 `sw10`。程序和部署入口会自动识别旧商务库并完成整套升级;已有 `disable_auto_migrate` 配置不会跳过商务升级。平台别名为 `lx/hw/yq/oa`,其中三个 SDK 别名连接 `game_lx/game_hw/game_yq` 测试库,Redis 沿用当前关闭状态。生产配置使用 `admin.app.env: production`,关闭开发 Swagger。七条常规任务启用(四条商务/区服日汇总、预警检测、两条有效端刷新),两个历史回填停用。**使用同一 sw10 时只运行一个调度实例,切换到服务器前停止本机的后端服务。**
测试数据库为 `sw9`,由 `sw8` 副本完成自动迁移验证。程序和部署入口会自动识别旧商务库并完成整套升级;已有 `disable_auto_migrate` 配置不会跳过商务升级。平台别名为 `lx/hw/yq/oa`,其中三个 SDK 别名连接 `game_lx/game_hw/game_yq` 测试库,Redis 沿用当前关闭状态。生产配置使用 `admin.app.env: production`,关闭开发 Swagger。七条常规任务启用(四条商务/区服日汇总、预警检测、两条有效端刷新),两个历史回填停用。**使用同一 sw9 时只运行一个调度实例,切换到服务器前停止本机的后端服务。**
## 全自动数据库升级
@@ -53,7 +53,7 @@ Windows 本机安装 Go、Node、pnpm、tar,先提交源代码,再执行:
```bash
bash /www/wwwroot/sw2.fuhua91.com/releases/<commit>/deploy.sh <commit> --build-only
# 构建和容器配置检查通过后,停止连接同一 sw10 的本机后端。
# 构建和容器配置检查通过后,停止连接同一 sw9 的本机后端。
bash /www/wwwroot/sw2.fuhua91.com/releases/<commit>/deploy.sh <commit>
```
@@ -1,12 +1,14 @@
<template>
<el-drawer class="sw-dialog" v-model="visible" append-to-body destroy-on-close :title="`推广游戏数据 — ${channel?.nickname || channel?.account || ''}`" size="min(560px, 100vw)">
<p class="mb-4">该渠道在各推广游戏的注册与充值分布(累计口径)。</p>
<el-alert v-if="error" type="warning" :closable="false" :title="error" />
<el-table scrollbar-always-on v-else v-loading="loading" :data="games">
<el-table-column label="游戏名称" min-width="140" show-overflow-tooltip><template #default="{ row }">{{ row.gameName || '—' }}</template></el-table-column>
<el-table-column label="玩家数量" min-width="110" align="right"><template #default="{ row }"><metric-value :value="row.registerCount" /></template></el-table-column>
<el-table-column label="充值金额" min-width="150" align="right"><template #default="{ row }"><metric-value kind="money" :value="row.payAmount" /></template></el-table-column>
</el-table>
<el-drawer class="sw-dialog channel-game-drawer" v-model="visible" append-to-body destroy-on-close :title="`推广游戏数据 — ${channel?.nickname || channel?.account || ''}`" size="min(560px, 100vw)">
<p class="game-intro">该渠道在各推广游戏的注册与充值分布(累计口径)。</p>
<el-alert v-if="error" class="game-alert" type="warning" :closable="false" :title="error" />
<div v-else class="game-table-wrap">
<el-table scrollbar-always-on height="100%" v-loading="loading" :data="games">
<el-table-column label="游戏名称" min-width="140" show-overflow-tooltip><template #default="{ row }">{{ row.gameName || '—' }}</template></el-table-column>
<el-table-column label="玩家数量" min-width="110" align="right"><template #default="{ row }"><metric-value :value="row.registerCount" /></template></el-table-column>
<el-table-column label="充值金额" min-width="150" align="right"><template #default="{ row }"><metric-value kind="money" :value="row.payAmount" /></template></el-table-column>
</el-table>
</div>
</el-drawer>
</template>
@@ -39,3 +41,16 @@ watch(() => [props.modelValue, props.channel], ([open]) => { if (open) void load
onBeforeUnmount(reset)
onDeactivated(() => { visible.value = false; reset() })
</script>
<style scoped>
.game-intro { flex-shrink: 0; margin: 0 0 16px; }
.game-alert { flex-shrink: 0; }
.game-table-wrap { flex: 1; min-height: 0; }
</style>
<!-- 抽屉被 teleport 到 body,scoped 样式到不了抽屉容器 -->
<style>
.channel-game-drawer .el-drawer__body {
display: flex;
flex-direction: column;
overflow: hidden;
}
</style>