7
正在验证管理会话 请稍候...

Game Center / {{ activeTabLabel }}

{{ activeGame.name }} 运营后台

{{ auth.username || 'admin' }} {{ status }}
管理 API {{ settings.apiBase || "同源" }}
登录账号 {{ auth.username || '-' }}
PLATFORM / ALL TENANTS

全租户实际 RTP

启用且非压测租户,按各租户固定游戏比例统一至 {{ fmtMoney(platformRtp.basisGameRatio || 3000) }} 后加权。

当前累计 RTP {{ Number(platformRtp.normalizedTotalBet || 0) > 0 ? fmtRtp(platformRtp.actualRtp) : '-' }} 标准化派彩 ÷ 标准化下注
原始金币 RTP
{{ Number(platformRtp.rawTotalBet || 0) > 0 ? fmtRtp(platformRtp.rawCoinRtp) : '-' }}
累计局数
{{ fmtMoney(platformRtp.rounds) }}
标准化下注
{{ fmtMoney(platformRtp.normalizedTotalBet) }}
标准化派彩
{{ fmtMoney(platformRtp.normalizedTotalWin) }}
有统计租户
{{ fmtMoney(platformRtp.dataTenantCount) }} / {{ fmtMoney(platformRtp.tenantCount) }}

比例配置需检查:{{ fmtMoney(platformRtp.fallbackRatioTenantCount) }} 个租户使用 3000 默认值, {{ fmtMoney(platformRtp.inconsistentRatioTenantCount) }} 个租户存在多个比例。

近 7 天趋势 UTC 自然日
{{ platformDailyRTPDataDays }} / 7 天有数据
{{ fmtRtp(line.value) }} {{ fmtRtp(point.rtp) }} 无数据 {{ point.label }} {{ point.hasData ? `${point.date}:${fmtRtp(point.rtp)},${fmtMoney(point.rounds)} 局,标准化下注 ${fmtMoney(point.totalBet)},标准化派彩 ${fmtMoney(point.totalWin)},原始金币 RTP ${fmtRtp(point.rawCoinRtp)}` : `${point.date}:无投注数据` }}
暂无平台 RTP 数据
当前租户 {{ tenantOptionLabel(activeTenant) }}
{{ item.label }} {{ item.value }} {{ item.hint }}

RTP 水位

{{ overview.mode || '-' }}
{{ fmtRtp(overview.stats?.actualRtp) }} 目标 {{ fmtRtp(overview.rtpConfig?.targetRtp) }}
偏差{{ rtpDeltaText() }}
离线 95% 下界{{ fmtRtp(overview.rtpMonitoring?.expectedLower95) }}
离线 95% 上界{{ fmtRtp(overview.rtpMonitoring?.expectedUpper95) }}

奖池库存

{{ overview.reason || 'normal' }}
{{ fmtMoney(overview.snapshot?.pool?.balance) }} 安全线 {{ fmtMoney(overview.riskConfig?.minPoolBalance) }}
低水位告警{{ fmtMoney(overview.riskConfig?.poolAlertLowBalance) }}
高水位观察{{ fmtMoney(overview.riskConfig?.poolAlertHighBalance) }}
抽水{{ overview.riskConfig?.poolContributionBps || 0 }} BPS

中奖类型派彩

{{ fmtMoney(reports.winTypes?.totalWin) }}
{{ row.label }}
{{ fmtMoney(row.value) }} {{ row.hint }}
暂无中奖数据

单局最终倍率概率

每局只统计一次最终复合倍率,柱高使用平方根刻度以保留稀有倍率的可读性。

{{ fmtMoney(reports.winTypes?.totalRounds) }} 局
实际概率 理论概率
暂无倍率数据

近 7 天当前租户 RTP

按 UTC 自然日汇总当前租户派彩总额 ÷ 投注总额;绿色虚线为当前租户目标 RTP。

{{ screenDailyRTPDataDays }} / 7 天有数据
{{ fmtRtp(line.value) }} 目标 {{ fmtRtp(screenDailyRTPChart.target) }} {{ fmtRtp(point.rtp) }} 无数据 {{ point.label }} {{ point.hasData ? `${point.date}:${fmtRtp(point.rtp)},${fmtMoney(point.rounds)} 局,投注 ${fmtMoney(point.totalBet)},派彩 ${fmtMoney(point.totalWin)}` : `${point.date}:无投注数据` }}
暂无近 7 天 RTP 数据

近 12 个月经营数据

从 2026 年 8 月开始,按自然月汇总活跃用户、投注局数、投注总额、派彩总额和月 RTP。

{{ reports.operations?.generatedAt ? date(reports.operations.generatedAt) : '-' }}

累计投注局数 Top 50

按玩家累计投注局数排序;相同局数时优先展示投注总额较高的玩家。

{{ screenTopVolumePlayers.length }} 名玩家

事件构成

{{ events.length }}
{{ row.label }}
{{ row.value }}

风险玩家

{{ riskPlayers.length }}
{{ row.label }}
{{ row.value }}

今日榜单

Top {{ screenTopRanks.length }}
  1. {{ row.rank || '-' }} {{ row.nickname || row.userId }} {{ fmtMoney(row.amount ?? row.coins ?? row.payNum) }}

近期事件流

{{ screenRecentEvents.length }}
{{ categoryText(row.category) }} {{ reasonText(row.reason) }} {{ row.userId || '-' }} · {{ date(row.createdAt) }}
暂无事件
部分监控数据读取失败 {{ warning }}
监控状态 {{ overview.mode || overview.stats?.mode || '-' }} {{ overview.reason || '无触发原因' }}
实时 RTP {{ fmtRtp(overview.stats?.actualRtp) }} 离线 95% 分位 {{ fmtRtp(overview.rtpMonitoring?.expectedLower95) }} - {{ fmtRtp(overview.rtpMonitoring?.expectedUpper95) }} 样本不足,至少需要 {{ overview.rtpMonitoring?.quantileSampleRounds || 100 }} 局
奖池库存 {{ fmtMoney(overview.snapshot?.pool?.balance) }} 安全线 {{ fmtMoney(overview.riskConfig?.minPoolBalance) }}
当前玩家余额 {{ fmtMoney(overview.balance) }} {{ settings.userId || '-' }}
当前在线 {{ overview.online?.available ? fmtMoney(overview.online.currentPlayers) : '-' }} {{ overview.online?.onlineWindowSeconds || 45 }} 秒心跳窗口
今日在线峰值 {{ overview.online?.available ? fmtMoney(overview.online.todayPeakPlayers) : '-' }} {{ overview.online?.peakTimezone || 'Asia/Shanghai' }}
5 分钟活跃 {{ overview.online?.available ? fmtMoney(overview.online.activePlayers5m) : '-' }} 最近 {{ overview.online?.activeWindowSeconds || 300 }} 秒有游戏心跳
峰值时间 {{ overview.online?.available ? timeOnly(overview.online.peakAt) : '-' }} {{ overview.online?.peakAt ? dateOnly(overview.online.peakAt) : '今日尚无在线记录' }}
统计待汇总 {{ fmtMoney(overview.pendingSpinStats) }} 正常情况下应快速回落到 0
待恢复结算 {{ fmtMoney(overview.pendingSettlements) }} Kome 钱包状态机
人工复核 {{ fmtMoney(overview.manualReviewSettlements) }} 确认外部账务状态后再重试

租户统计

总下注{{ fmtMoney(overview.stats?.totalBet) }}
总派彩{{ fmtMoney(overview.stats?.totalWin) }}
总局数{{ fmtMoney(overview.stats?.rounds) }}
小时统计{{ periodLine(overview.snapshot?.tenantHour) }}
今日统计{{ periodLine(overview.snapshot?.tenantDay) }}

玩家快照

玩家 ID{{ playerId }}
余额{{ fmtMoney(playerDetail.balance ?? overview.balance) }}
累计下注{{ fmtMoney(playerStats.totalBet) }}
累计中奖{{ fmtMoney(playerStats.totalWin) }}
累计局数{{ fmtMoney(playerStats.rounds) }}
玩家 RTP{{ fmtRtp(playerStats.actualRtp) }}

公平性窗口

只读取当前数学版本最近 100 / 500 / 2000 局,使用离线 Monte Carlo 95% 分位数。

{{ overview.rtpMonitoring?.status !== 'ready' ? '样本不足' : (overview.rtpMonitoring?.withinExpectedRange ? '当前版本在离线区间内' : '当前版本偏离离线区间') }}
最近 {{ window.requestedRounds }} 局{{ window.status === 'ready' ? window.sampleRounds + ' 个样本' : '样本不足 ' + window.sampleRounds + '/' + window.requestedRounds }}
RTP{{ fmtRtp(window.rtp) }}
RTP 离线 95%{{ fmtRtp(window.expectedRtpLower95) }} - {{ fmtRtp(window.expectedRtpUpper95) }}
近期 EWMA RTP{{ fmtRtp(window.ewmaRtp) }}
命中率{{ pct(window.hitRate) }}
命中率离线 95%{{ pct(window.expectedHitRateLower95) }} - {{ pct(window.expectedHitRateUpper95) }}
最长连续未中{{ window.longestMissRun }} 局
最大回撤{{ fmtMoney(window.maxDrawdown) }}

风险玩家

仅显示 riskScore 大于 0 的玩家,按玩家、等级、原因过滤。

排行榜

最近赢分、日榜、周榜、总榜集中查看。

对局记录

当前玩家最近对局,可按 Round、玩家、下注和中奖过滤。

风控事件

调控、配置、风险事件记录。

Kome 结算恢复队列

结果和交易号已冻结。系统会自动重试;人工重试仍复用原交易号,不会重新抽奖。

队列正常 当前没有待恢复结算
{{ settlementStatusText(row.status, row.resumeStatus) }} {{ row.roundId }} {{ row.userId }} · {{ date(row.updatedAt) }}
下注{{ fmtMoney(row.betAmount) }}
派彩{{ fmtMoney(row.winAmount) }}
尝试{{ row.attemptCount || 0 }}
下次重试{{ date(row.nextRetryAt) }}

{{ row.lastError || '等待下一阶段处理' }}

总局数 {{ fmtMoney(reports.winTypes?.totalRounds) }} 当前租户全部对局
中奖局数 {{ fmtMoney(reports.winTypes?.winRounds) }} 中奖率 {{ pct(reports.winTypes?.winRoundRate) }}
中奖事件数 {{ fmtMoney(reports.winTypes?.winEvents) }} 多线中奖会按多条事件统计
总派彩 {{ fmtMoney(reports.winTypes?.totalWin) }} 所有中奖局 win_amount 汇总
复合中奖局 {{ fmtMoney(reports.winTypes?.compositeRounds) }} 总局占比 {{ pct(reports.winTypes?.compositeRoundRate) }}
全屏中奖局 {{ fmtMoney(reports.winTypes?.fullScreenRounds) }} 总局占比 {{ pct(reports.winTypes?.fullScreenRate) }}

单局最终倍率分布

一局只统计一次;复合倍率是同局全部中奖线倍率相加。实际概率与当前数学版本理论概率直接对比。

中奖线类型占比

按每条中奖线或全屏奖统计:该类型次数 / 全部中奖事件次数。

结果模型 {{ overview.mathModel?.model || '-' }} 固定概率,运行指标只监控不改赔率
理论 RTP {{ fmtRtp(overview.mathModel?.theoreticalRtp) }} 由当前派奖档位概率精确计算
理论命中率 {{ fmtRtp(overview.mathModel?.hitRate) }} 任意中奖局占全部局数
波动标准差 {{ Number(overview.mathModel?.standardDeviation || 0).toFixed(2) }}x 越大表示大奖更集中、短期波动更强
RNG 版本 {{ overview.mathRelease?.rngVersion || '-' }} 每局独立 256 位种子,结果可审计
配置哈希 {{ overview.mathRelease?.configHash || '-' }} 发布内容不可变,用于识别每局实际规则
发布清单哈希 {{ overview.mathRelease?.manifestHash || '-' }} 绑定赔付表、支付线、映射、RNG、构建证据和离线分位数

当前数学发布

概率只随版本发布变更。RTP、奖池和个人风控指标不会改写随机结果。

{{ overview.mathRelease?.status || 'active' }}
空奖{{ overview.mathRelease?.model?.missBps || 0 }} BPS
小奖{{ overview.mathRelease?.model?.smallWinBps || 0 }} BPS
中等奖{{ overview.mathRelease?.model?.mediumWinBps || 0 }} BPS
大奖{{ overview.mathRelease?.model?.bigWinBps || 0 }} BPS
全屏奖{{ overview.mathRelease?.model?.fullScreenWinBps || 0 }} BPS
x2 实际概率{{ pct(experienceProfile.x2) }}
x5 实际概率{{ pct(experienceProfile.x5) }}
x10 实际概率{{ pct(experienceProfile.x10) }}
x25 实际概率{{ pct(experienceProfile.x25) }}
全屏平均间隔约 {{ fmtMoney(experienceProfile.fullScreenInterval) }} 局
100 局遇到全屏{{ pct(experienceProfile.fullScreenWithin100) }}
300 局遇到全屏{{ pct(experienceProfile.fullScreenWithin300) }}
500 局遇到全屏{{ pct(experienceProfile.fullScreenWithin500) }}
精确倍率分布 多线倍率为同一局全部中奖线倍率之和
{{ item.multiplier === 0 ? '未中奖' : `x${item.multiplier}` }} {{ pct(item.probability) }} 约 {{ fmtMoney(item.interval) }} 局一次

租户

{{ tenants.length }} 个租户

{{ tenantEditor.persisted ? '编辑租户' : '新增租户' }}

{{ tenantEditor.persisted ? tenantEditor.id : '创建后租户 ID 不可修改' }}

包体配置

{{ activeTenantName }} · {{ packageProfiles.length }} 个包体

{{ packageProfilesManagementMode }}

Git 托管模式:包体配置只读,请修改 deploy/package-profiles.json。

{{ packageEditor.persisted ? '编辑包体' : '新增包体' }}

{{ settings.tenantId || '-' }}

大厅分类

下一次定向中奖

给当前玩家设置一次性结果,玩家下一次 Spin 会按指定组合结算,执行后自动失效。

生产策略已禁用定向结果。仅可在隔离测试环境通过 ENABLE_ADMIN_FORCE_SPIN=true 临时开启。

自定义九宫格按屏幕从上到下、从左到右填写。
待执行{{ overview.hasPendingForce ? '是' : '否' }}
预览倍数{{ forceResult.multiplier ? forceResult.multiplier + 'x' : '-' }}
预览派奖{{ fmtMoney(forceResult.pay) }}
设置时间{{ date(overview.pendingForceSpin?.createdAt) }}
{{ pretty(forceResult) }}

RTP 模拟器

只计算结果,不扣款,不写入对局。

{{ pretty(simResult) }}

后台测试 Spin

调用真实 Spin 链路,适合验证接口。

{{ pretty(spinResult) }}

多玩家事务压测

使用与生产一致的概率与数据库事务,数据仅写入隔离测试租户。

{{ stressStatusText }}
{{ fmtMoney(stressResult.doneRounds || 0) }} / {{ fmtMoney(stressResult.targetRounds || stress.rounds) }} 局 {{ pct(stressProgress) }} {{ duration(stressResult.elapsedMs) }}
吞吐{{ Number(stressResult.qps || 0).toFixed(1) }}局/秒
成功率{{ pct(1 - Number(stressResult.errorRate || 0)) }}{{ fmtMoney(stressResult.failed || 0) }} 失败
实际 RTP{{ fmtRtp(stressResult.rtp) }}理论 {{ fmtRtp(stressResult.model?.theoreticalRtp) }}
命中率{{ pct(stressResult.hitRate) }}理论 {{ pct(stressResult.model?.hitRate) }}
p95{{ ms(stressResult.p95Ms) }}p99 {{ ms(stressResult.p99Ms) }}
最大延迟{{ ms(stressResult.maxMs) }}平均 {{ ms(stressResult.avgMs) }}
测试初始余额{{ fmtMoney(stressResult.initialBalance || 0) }}每名虚拟玩家

概率分布

观察值 / 理论值
{{ row.label }}
{{ pct(row.actual) }} {{ pct(row.expected) }}

统计门禁

当前发布离线 95% 分位
RTP{{ fmtRtp(stressResult.validation?.expectedRtpLower95) }} - {{ fmtRtp(stressResult.validation?.expectedRtpUpper95) }}
命中率{{ pct(stressResult.validation?.expectedHitLower95) }} - {{ pct(stressResult.validation?.expectedHitUpper95) }}
错误率{{ pct(stressResult.errorRate) }}

单局最终倍率概率

实际样本与本次压测锁定的理论分布对比;柱高采用平方根刻度。

{{ fmtMoney(stressResult.success || 0) }} 个成功样本
实际概率 理论概率
启动压测后显示倍率概率

玩家体验分布

{{ stressResult.playerDistribution?.sampledPlayers || 0 }} 名玩家
玩家 RTP P05{{ fmtRtp(stressResult.playerDistribution?.rtp?.p05) }}
玩家 RTP 中位数{{ fmtRtp(stressResult.playerDistribution?.rtp?.p50) }}
玩家 RTP P95{{ fmtRtp(stressResult.playerDistribution?.rtp?.p95) }}
最长未中 P50{{ stressResult.playerDistribution?.longestMissStreak?.p50 || 0 }} 局
最长未中 P95{{ stressResult.playerDistribution?.longestMissStreak?.p95 || 0 }} 局
最长未中最大值{{ stressResult.playerDistribution?.longestMissStreak?.max || 0 }} 局
错误样本 {{ item }}
原始结果
{{ pretty(stressResult) }}