{{ toast.text }}
概览
{{ c.value }}
{{ c.label }}
更新于 {{ fmtTime(stats.generated_at) }}
用户
| ID | 头像 | 昵称 | 手机号 | 角色 | 在线 | 注册时间 | 最后在线 |
|---|---|---|---|---|---|---|---|
| {{ u.id }} | {{ u.nickname }} | {{ u.phone }} | {{ roleLabel(r) }}普通 | {{ u.online ? '在线' : '离线' }} | {{ fmtTime(u.created_at) }} | {{ u.last_seen_at ? fmtTime(u.last_seen_at) : '—' }} | |
| 没有数据 | |||||||
通话
共 {{ calls.summary.total }} 次 · 语音 {{ calls.summary.audio }} · 视频 {{ calls.summary.video }} · 今日 {{ calls.summary.today }} · 进行中 {{ calls.summary.active }}
| ID | 类型 | 发起者 | 会话 | 状态 | 参与 / 接通 | 发起时间 | 时长 |
|---|---|---|---|---|---|---|---|
| {{ c.id }} | {{ c.type === 2 ? '视频' : '语音' }} | {{ c.caller_nickname }} {{ c.caller_phone }} | {{ c.conversation_type === 2 ? '群 ' + c.conversation_name : '单聊' }} #{{ c.conversation_id }} | {{ callStatus(c) }} | {{ c.member_count }} / {{ c.joined_count }} | {{ fmtTime(c.started_at) }} | {{ fmtDur(c.duration_sec) }} |
| 没有数据 | |||||||
会话
共 {{ convs.summary.total }} 个 · 单聊 {{ convs.summary.private }} · 群聊 {{ convs.summary.group }} · 消息 {{ convs.summary.messages }} 条
| ID | 类型 | 名称 | 成员 | 消息数 | 通话数 | 最近活动 |
|---|---|---|---|---|---|---|
| {{ c.id }} | {{ c.type === 2 ? '群聊' : '单聊' }} | {{ c.type === 2 ? c.name : c.members }} · 群主 {{ c.owner_nickname }} | {{ c.member_count }} 人 | {{ c.last_seq }} | {{ c.call_count }} | {{ fmtTime(c.updated_at) }} |
| 没有数据 | ||||||
应用管理
| 图标 | 名称 | 包名 / 版本 | 大小 | 分类 | 排序 | 状态 | 更新时间 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ a.name }} {{ a.description }} |
{{ a.package_name }} {{ a.version_name }} ({{ a.version_code }}) |
{{ fmtSize(a.size) }} | {{ a.category || '—' }} | {{ a.sort_order }} | {{ a.published ? '已发布' : '未发布' }} | {{ fmtTime(a.updated_at) }} | 下载 | |
| 还没有应用,先上传一个 APK | ||||||||
版本更新
| 版本 | 平台 / 渠道 | 大小 | 最低 build | 灰度 | 状态 | 下载 / 开始安装 | 更新说明 | 上传时间 | 操作 |
|---|---|---|---|---|---|---|---|---|---|
| {{ r.version_name }} ({{ r.build_number }}) | {{ r.platform }} / {{ r.channel }} | {{ r.platform === 'ios' ? '—' : fmtSize(r.size) }} | {{ r.min_build || '—' }} | {{ r.rollout_percent }}% | {{ r.published ? '已发布' : '未发布' }} | {{ r.downloads }} / {{ r.install_started }} | {{ r.release_notes || '—' }} | {{ fmtTime(r.created_at) }} | 下载 商店 |
| 还没有全量版本 | |||||||||
客户端 build 低于「最低 build」时强制更新(不受灰度限制)。灰度按 fnv(device_id + 版本 id) % 100 分桶。下载数来自客户端上报(FULL_DOWNLOADED / FULL_INSTALL_STARTED)。
服务端未配置 UPDATE_SIGNING_KEY:不能上传热更新包(见 README「App 更新」)。
签名公钥(App 内置,需与 app/lua/update_pubkey.lua 一致):{{ upd.signing.public_key }}
| 包版本 | 平台 / 渠道 | build 范围 | 大小 | 灰度 | 状态 | 下载 / 应用 / 校验失败 / 回退 | 成功率 | 更新说明 | 上传时间 | 操作 |
|---|---|---|---|---|---|---|---|---|---|---|
| #{{ b.bundle_version }}立即生效 | {{ b.platform }} / {{ b.channel }} | {{ b.min_build }} ~ {{ b.max_build || '∞' }} | {{ fmtSize(b.size) }} | {{ b.rollout_percent }}% + 白名单 {{ b.whitelist.split(',').length }} 个 |
{{ bundleStatus(b.status) }} | {{ b.downloaded }} / {{ b.applied }} / {{ b.verify_failed }} / {{ b.rolled_back }} | {{ b.success_rate == null ? '—' : (b.success_rate * 100).toFixed(1) + '%' }} | {{ b.release_notes || '—' }} | {{ fmtTime(b.created_at) }} | 下载 |
| 还没有热更新包 | ||||||||||
撤回:正在用该包的客户端下次检查时换到更低的可用包,没有则回退到 App 内置代码。成功率 = 应用成功 / 下载。只有草稿能删除。