需要管理员账号登录后才能访问后台
系统统计
用户、会话、API 用量和存储健康概览
Users
{{ formatNumber(stats.users.total) }}
{{ formatNumber(stats.users.newUsers) }} 新增
Online
{{ formatNumber(stats.users.onlineUsers || 0) }}
{{ formatNumber(stats.users.activeSessions || 0) }} 会话
API Tokens
{{ compactNumber(statsApiUsage.totalTokens) }}
{{ formatNumber(statsApiUsage.requests) }} 请求
Models
{{ formatNumber(statsApiUsage.activeModels) }}
{{ formatNumber(statsApiUsage.activeUsers) }} 用户调用
Cards
{{ formatNumber(stats.cards.total) }}
{{ formatNumber(stats.cards.pending) }} 待审核
Database
{{ formatBytes(statsStorage.database?.totalBytes) }}
{{ formatPercent(statsStorage.database?.freeRatio) }} 空闲
Image Cache
{{ formatBytes(statsStorage.imageCache?.bytes) }}
{{ formatNumber(statsStorage.imageCache?.images) }} 张图
Sync Data
{{ formatBytes(statsStorage.syncStorage?.totalBytes) }}
{{ formatNumber(statsStorage.syncStorage?.missingHashes) }} 缺 hash
运行趋势
{{ statsRangeLabel }} · 登录、新用户与 API tokens
Tokens
登录
新增
{{ formatStatsBucket(tick.date) }}
资源健康
SQLite
{{ formatBytes(statsStorage.database?.dbBytes) }}
图片缓存
{{ formatBytes(statsStorage.imageCache?.bytes) }}
同步存储
{{ formatBytes(statsStorage.syncStorage?.totalBytes) }}
公共库
{{ formatNumber(stats.cards.pending) }} 待审
用户管理
| ID | 用户名 | 昵称 | 角色 | 状态 | 会话 | 注册时间 | 最近登录 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ u.id }} | {{ u.username }} | {{ u.displayName || '-' }} | {{ u.role==='admin'?'管理员':'用户' }} | {{ statusLabel(u.status) }} | {{ formatNumber(u.activeSessions) }} | {{ formatDateTime(u.createdAt) }} | {{ u.lastLoginAt?formatDateTime(u.lastLoginAt):'从未' }} | |
| 暂无数据 | ||||||||
共 {{ users.total }} 条 · 第 {{ users.page }} / {{ Math.ceil(users.total/users.pageSize) || 1 }} 页
在线会话
查看当前登录态,按用户、IP 或设备筛选,并清理过期 token
Online Users
{{ formatNumber(sessionStats.onlineUsers) }}
当前有效登录用户
Active Sessions
{{ formatNumber(sessionStats.activeSessions) }}
仍可刷新登录
Expired
{{ formatNumber(sessionStats.expiredSessions) }}
可安全清理
Listed
{{ formatNumber(sessions.total) }}
当前筛选结果
| ID | 用户 | 状态 | 设备 | IP | 创建 | 最近刷新 | 过期 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ s.id }} |
{{ s.username || ('#'+s.userId) }}
当前
同账号
UID {{ s.userId }} · {{ s.displayName || '-' }}
|
{{ sessionStateLabel(s.state) }} |
{{ s.device }}
{{ s.userAgent || '-' }}
|
{{ s.ip || '-' }} | {{ formatDateTime(s.createdAt) }} | {{ formatDateTime(s.lastSeenAt) }} |
{{ formatDateTime(s.expiresAt) }}
{{ formatRelativeTime(s.expiresAt) }}
|
|
| {{ sessions.loading ? '正在加载会话...' : '暂无会话' }} | ||||||||
共 {{ sessions.total }} 条 · 第 {{ sessions.page }} / {{ Math.ceil(sessions.total/sessions.pageSize) || 1 }} 页
角色卡审核
| ID | 名称 | 作者 | 状态 | 下载 | 提交时间 | 操作 |
|---|---|---|---|---|---|---|
| {{ c.id }} | {{ c.name || '(未命名)' }} | {{ c.authorName || '-' }} | {{ cardStatusLabel(c.status) }} | {{ c.downloadCount }} | {{ formatDateTime(c.createdAt) }} | |
| 暂无数据 | ||||||
共 {{ lib.total }} 条 · 第 {{ lib.page }} / {{ Math.ceil(lib.total/lib.pageSize) || 1 }} 页
公告管理
| 标题 | 类型 | 状态 | 置顶 | 过期时间 | 创建时间 | 操作 |
|---|---|---|---|---|---|---|
| {{ a.title }} | {{ annTypeLabel(a.type) }} | {{ announcementStatusLabel(a) }} | {{ a.pinned?'是':'否' }} | {{ a.expiresAt?formatDateTime(a.expiresAt):'永不过期' }} | {{ formatDateTime(a.createdAt) }} | |
| 暂无公告 | ||||||
API 用量仪表盘
请求、Token、模型和用户分布概览
Requests
{{ formatNumber(usageTotals.requests) }}
平均 {{ formatNumber(usageTotals.avgTokens) }} tokens / 次
Total Tokens
{{ compactNumber(usageTotals.totalTokens) }}
完整消耗量
Prompt
{{ compactNumber(usageTotals.promptTokens) }}
{{ usageTokenPart('prompt') }}% 输入占比
Completion
{{ compactNumber(usageTotals.completionTokens) }}
{{ usageTokenPart('completion') }}% 输出占比
Active Users
{{ formatNumber(usageTotals.activeUsers) }}
当前周期活跃
Models
{{ formatNumber(usageTotals.activeModels) }}
被调用模型数
用量趋势
{{ usageRangeLabel }} · Tokens 与请求次数
Tokens
请求
{{ formatUsageBucket(tick.start) }}
接口来源
{{ formatEndpoint(e.endpoint) }}
{{ compactNumber(e.totalTokens) }}
暂无接口数据
模型用量
按 Token 排序
{{ m.model || 'unknown' }}
{{ formatNumber(m.requests) }} 次 · {{ compactNumber(m.promptTokens) }} / {{ compactNumber(m.completionTokens) }}
{{ compactNumber(m.totalTokens) }}
暂无模型数据
用户用量 Top 20
| 用户 | 请求 | 输入 | 输出 | Tokens |
|---|---|---|---|---|
| {{ u.username || '#'+u.userId }} | {{ formatNumber(u.requests) }} | {{ compactNumber(u.promptTokens) }} | {{ compactNumber(u.completionTokens) }} | {{ compactNumber(u.totalTokens) }} |
暂无用户用量
最近请求
最近 12 条
| 时间 | 用户 | 模型 | 接口 | 输入 | 输出 | Tokens |
|---|---|---|---|---|---|---|
| {{ formatDateTime(r.createdAt) }} | {{ r.username || '#'+r.userId }} | {{ r.model || '-' }} | {{ formatEndpoint(r.endpoint) }} | {{ formatNumber(r.promptTokens) }} | {{ formatNumber(r.completionTokens) }} | {{ formatNumber(r.totalTokens) }} |
暂无请求记录
用量明细
分页查看完整记录,可按用户 ID 过滤
| 时间 | 用户 | 模型 | 接口 | 输入 | 输出 | Tokens |
|---|---|---|---|---|---|---|
| {{ formatDateTime(r.createdAt) }} | {{ r.username || '#'+r.userId }} | {{ r.model || '-' }} | {{ formatEndpoint(r.endpoint) }} | {{ formatNumber(r.promptTokens) }} | {{ formatNumber(r.completionTokens) }} | {{ formatNumber(r.totalTokens) }} |
{{ usageDetails.loading ? '正在加载明细...' : '暂无明细记录' }}
共 {{ usageDetails.total }} 条 · 第 {{ usageDetails.page }} / {{ Math.ceil(usageDetails.total/usageDetails.pageSize) || 1 }} 页
正在加载用量数据...
数据维护
同步存储、图片缓存和低风险维护操作
正在读取维护数据...
Sync Records
{{ formatNumber(maintenanceSync.records) }}
{{ formatBytes(maintenanceSync.totalBytes) }} 同步数据
Chat Saves
{{ formatNumber(maintenanceSync.chatRecords) }}
{{ formatNumber(maintenanceSync.scopedRecords) }} scoped 项
Missing Hash
{{ formatNumber(maintenanceSync.missingHashes) }}
旧数据可补齐
Cached Images
{{ formatNumber(maintenanceImages.images) }}
{{ formatBytes(maintenanceImages.imageBytes) }}
Cache Users
{{ formatNumber(maintenanceImages.users) }}
有图片缓存的用户
Temp Files
{{ formatNumber(maintenanceImages.tempFiles) }}
{{ formatBytes(maintenanceImages.tempBytes) }}
Database
{{ formatBytes(maintenanceDatabase.totalBytes) }}
{{ maintenanceDatabase.journalMode || '-' }} · {{ formatNumber(maintenanceDatabase.pageCount) }} 页
Free Pages
{{ formatNumber(maintenanceDatabase.freelistCount) }}
{{ formatBytes(maintenanceDatabase.freelistBytes) }} 可回收
数据库健康
{{ maintenanceDatabase.file || 'rphub.db' }} · {{ formatPercent(maintenanceDatabase.freeRatio) }} 空闲页占比
DB 文件
{{ formatBytes(maintenanceDatabase.dbBytes) }}
WAL 日志
{{ formatBytes(maintenanceDatabase.walBytes) }}
SHM 文件
{{ formatBytes(maintenanceDatabase.shmBytes) }}
页面 / 空闲
{{ formatNumber(maintenanceDatabase.pageCount) }} / {{ formatNumber(maintenanceDatabase.freelistCount) }}
同步字段占用
{{ formatBytes(maintenanceSync.totalBytes) }}
{{ item.name }}
{{ formatBytes(item.bytes) }}
暂无同步数据
用户同步占用
Top 12
{{ item.username || '#'+item.userId }}
{{ formatBytes(item.bytes) }}
暂无用户同步数据
最大同步项
用于排查大包
{{ item.username || '#'+item.userId }} · {{ item.scope }}/{{ item.name }}
{{ formatBytes(item.bytes) }}
暂无大项数据
图片缓存占用
{{ formatBytes(maintenanceImages.bytes) }}
用户 #{{ item.userId }}
{{ formatBytes(item.bytes) }}
暂无图片缓存
维护操作
补齐旧同步哈希
只更新缺失 hash 的同步记录,用于减少 bootstrap-diff 返回完整数据的概率。
清理临时图片缓存
仅清理上传过程中残留且超过 1 小时的临时文件,不删除正式图片缓存。
优化数据库
执行 SQLite optimize 与 WAL 截断;仅在空闲页较多时自动 VACUUM。
审计日志
| 时间 | 用户 | 操作 | 目标 | 详情 | IP |
|---|---|---|---|---|---|
| {{ formatDateTime(l.createdAt) }} | {{ l.username || '#'+l.userId }} | {{ auditActionLabel(l.action) }} | {{ l.target }} | {{ l.detail }} | {{ l.ip }} |
| 暂无日志 | |||||
共 {{ audit.total }} 条 · 第 {{ audit.page }} 页