fix(hub,web): correct cache-aware usage accounting

via [HAPI](https://hapi.run)\n\nCo-Authored-By: HAPI <noreply@hapi.run>
This commit is contained in:
2026-08-03 14:02:55 +08:00
parent b3c49e09f1
commit 2e795f4cd4
10 changed files with 248 additions and 50 deletions
+4 -3
View File
@@ -643,7 +643,7 @@ export default {
'settings.storage.refreshing': 'Refreshing…',
'settings.usage.title': 'Token usage',
'settings.usage.summary': 'Token-only usage dashboard',
'settings.usage.description': 'Token consumption recorded by HAPI sessions. Costs are not included.',
'settings.usage.description': 'Tokens processed by HAPI sessions. Cache hits are counted once and shown separately; costs are not included.',
'settings.usage.range.label': 'Usage range',
'settings.usage.range.7d': '7 days',
'settings.usage.range.30d': '30 days',
@@ -651,10 +651,11 @@ export default {
'settings.usage.loading': 'Loading token usage…',
'settings.usage.error': 'Unable to load token usage',
'settings.usage.empty': 'No token usage recorded for this range.',
'settings.usage.total': 'Total tokens (input + output)',
'settings.usage.total': 'Processed tokens (cache included)',
'settings.usage.uncached': 'Non-cached tokens',
'settings.usage.input': 'Input tokens (includes cache)',
'settings.usage.output': 'Output tokens',
'settings.usage.cacheRead': 'Cache read (included)',
'settings.usage.cacheRead': 'Cache read (included in input)',
'settings.usage.cacheCreation': 'Cache creation (included)',
'settings.usage.requests': 'Requests',
'settings.usage.daily.title': 'Daily trend',
+4 -3
View File
@@ -647,7 +647,7 @@ export default {
'settings.storage.refreshing': '正在刷新…',
'settings.usage.title': 'Token 用量',
'settings.usage.summary': 'Token 用量看板',
'settings.usage.description': '统计 HAPI 会话记录的 Token 消耗,不包含费用估算。',
'settings.usage.description': '统计 HAPI 会话处理的 Token;缓存命中只计算一次并单独展示,不包含费用估算。',
'settings.usage.range.label': '用量范围',
'settings.usage.range.7d': '近 7 天',
'settings.usage.range.30d': '近 30 天',
@@ -655,10 +655,11 @@ export default {
'settings.usage.loading': '正在加载 Token 用量…',
'settings.usage.error': '无法加载 Token 用量',
'settings.usage.empty': '此范围内没有记录到 Token 用量。',
'settings.usage.total': ' Token输入 + 输出',
'settings.usage.total': '处理 Token含缓存',
'settings.usage.uncached': '非缓存 Token',
'settings.usage.input': '输入 Token(含缓存)',
'settings.usage.output': '输出 Token',
'settings.usage.cacheRead': '缓存命中(已计入)',
'settings.usage.cacheRead': '缓存命中(已计入输入',
'settings.usage.cacheCreation': '缓存创建(已计入)',
'settings.usage.requests': '请求数',
'settings.usage.daily.title': '每日趋势',
+2 -1
View File
@@ -76,9 +76,10 @@ export default function SettingsUsagePage() {
{query.error ? <SettingsSection><SettingsRow label={t('settings.usage.error')} description={query.error instanceof Error ? query.error.message : undefined} /></SettingsSection> : null}
{query.data ? (
<>
<div className="grid grid-cols-2 gap-2 sm:grid-cols-3">
<div className="grid grid-cols-2 gap-2 sm:grid-cols-4">
{[
['settings.usage.total', query.data.totals.totalTokens],
['settings.usage.uncached', query.data.totals.uncachedTokens],
['settings.usage.input', query.data.totals.inputTokens],
['settings.usage.output', query.data.totals.outputTokens],
['settings.usage.cacheRead', query.data.totals.cacheReadTokens],