Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
陈曦
sub2api
Commits
d4f6ad72
Commit
d4f6ad72
authored
Mar 05, 2026
by
shaw
Browse files
feat: 新增apikey的usage查询页面
parent
078fefed
Changes
5
Expand all
Hide whitespace changes
Inline
Side-by-side
frontend/src/i18n/locales/en.ts
View file @
d4f6ad72
...
...
@@ -110,6 +110,65 @@ export default {
}
},
// Key Usage Query Page
keyUsage
:
{
title
:
'
API Key Usage
'
,
subtitle
:
'
Enter your API Key to view real-time spending and usage status
'
,
placeholder
:
'
sk-ant-mirror-xxxxxxxxxxxx
'
,
query
:
'
Query
'
,
querying
:
'
Querying...
'
,
privacyNote
:
'
Your Key is processed locally in the browser and will not be stored
'
,
dateRange
:
'
Date Range:
'
,
dateRangeToday
:
'
Today
'
,
dateRange7d
:
'
7 Days
'
,
dateRange30d
:
'
30 Days
'
,
dateRangeCustom
:
'
Custom
'
,
apply
:
'
Apply
'
,
used
:
'
Used
'
,
detailInfo
:
'
Detail Information
'
,
tokenStats
:
'
Token Statistics
'
,
modelStats
:
'
Model Usage Statistics
'
,
// Table headers
model
:
'
Model
'
,
requests
:
'
Requests
'
,
inputTokens
:
'
Input Tokens
'
,
outputTokens
:
'
Output Tokens
'
,
totalTokens
:
'
Total Tokens
'
,
cost
:
'
Cost
'
,
// Status
quotaMode
:
'
Key Quota Mode
'
,
walletBalance
:
'
Wallet Balance
'
,
// Ring card titles
totalQuota
:
'
Total Quota
'
,
limit5h
:
'
5-Hour Limit
'
,
limitDaily
:
'
Daily Limit
'
,
limit7d
:
'
7-Day Limit
'
,
limitWeekly
:
'
Weekly Limit
'
,
limitMonthly
:
'
Monthly Limit
'
,
// Detail rows
remainingQuota
:
'
Remaining Quota
'
,
expiresAt
:
'
Expires At
'
,
todayExpires
:
'
(expires today)
'
,
daysLeft
:
'
({days} days)
'
,
usedQuota
:
'
Used Quota
'
,
subscriptionType
:
'
Subscription Type
'
,
subscriptionExpires
:
'
Subscription Expires
'
,
// Usage stat cells
todayRequests
:
'
Today Requests
'
,
todayTokens
:
'
Today Tokens
'
,
todayCost
:
'
Today Cost
'
,
rpmTpm
:
'
RPM / TPM
'
,
totalRequests
:
'
Total Requests
'
,
totalTokensLabel
:
'
Total Tokens
'
,
totalCost
:
'
Total Cost
'
,
avgDuration
:
'
Avg Duration
'
,
// Messages
enterApiKey
:
'
Please enter an API Key
'
,
querySuccess
:
'
Query successful
'
,
queryFailed
:
'
Query failed
'
,
queryFailedRetry
:
'
Query failed, please try again later
'
,
},
// Setup Wizard
setup
:
{
title
:
'
Sub2API Setup
'
,
...
...
frontend/src/i18n/locales/zh.ts
View file @
d4f6ad72
...
...
@@ -110,6 +110,65 @@ export default {
}
},
// Key Usage Query Page
keyUsage
:
{
title
:
'
API Key 用量查询
'
,
subtitle
:
'
输入您的 API Key 以查看实时消费金额与使用状态
'
,
placeholder
:
'
sk-ant-mirror-xxxxxxxxxxxx
'
,
query
:
'
查询
'
,
querying
:
'
查询中...
'
,
privacyNote
:
'
您的 Key 仅在浏览器本地处理,不会被存储
'
,
dateRange
:
'
统计范围:
'
,
dateRangeToday
:
'
今日
'
,
dateRange7d
:
'
7 天
'
,
dateRange30d
:
'
30 天
'
,
dateRangeCustom
:
'
自定义
'
,
apply
:
'
应用
'
,
used
:
'
已使用
'
,
detailInfo
:
'
详细信息
'
,
tokenStats
:
'
Token 统计
'
,
modelStats
:
'
模型用量统计
'
,
// Table headers
model
:
'
模型
'
,
requests
:
'
请求数
'
,
inputTokens
:
'
输入 Tokens
'
,
outputTokens
:
'
输出 Tokens
'
,
totalTokens
:
'
总 Tokens
'
,
cost
:
'
费用
'
,
// Status
quotaMode
:
'
Key 限额模式
'
,
walletBalance
:
'
钱包余额
'
,
// Ring card titles
totalQuota
:
'
总额度
'
,
limit5h
:
'
5 小时限额
'
,
limitDaily
:
'
日限额
'
,
limit7d
:
'
7 天限额
'
,
limitWeekly
:
'
周限额
'
,
limitMonthly
:
'
月限额
'
,
// Detail rows
remainingQuota
:
'
剩余额度
'
,
expiresAt
:
'
过期时间
'
,
todayExpires
:
'
(今日到期)
'
,
daysLeft
:
'
({days} 天)
'
,
usedQuota
:
'
已用额度
'
,
subscriptionType
:
'
订阅类型
'
,
subscriptionExpires
:
'
订阅到期
'
,
// Usage stat cells
todayRequests
:
'
今日请求
'
,
todayTokens
:
'
今日 Tokens
'
,
todayCost
:
'
今日费用
'
,
rpmTpm
:
'
RPM / TPM
'
,
totalRequests
:
'
累计请求
'
,
totalTokensLabel
:
'
累计 Tokens
'
,
totalCost
:
'
累计费用
'
,
avgDuration
:
'
平均耗时
'
,
// Messages
enterApiKey
:
'
请输入 API Key
'
,
querySuccess
:
'
查询成功
'
,
queryFailed
:
'
查询失败
'
,
queryFailedRetry
:
'
查询失败,请稍后重试
'
,
},
// Setup Wizard
setup
:
{
title
:
'
Sub2API 安装向导
'
,
...
...
frontend/src/router/index.ts
View file @
d4f6ad72
...
...
@@ -102,6 +102,15 @@ const routes: RouteRecordRaw[] = [
title
:
'
Reset Password
'
}
},
{
path
:
'
/key-usage
'
,
name
:
'
KeyUsage
'
,
component
:
()
=>
import
(
'
@/views/KeyUsageView.vue
'
),
meta
:
{
requiresAuth
:
false
,
title
:
'
Key Usage
'
,
}
},
// ==================== User Routes ====================
{
...
...
frontend/src/views/KeyUsageView.vue
0 → 100644
View file @
d4f6ad72
This diff is collapsed.
Click to expand it.
frontend/vite.config.ts
View file @
d4f6ad72
...
...
@@ -115,6 +115,10 @@ export default defineConfig(({ mode }) => {
target
:
backendUrl
,
changeOrigin
:
true
},
'
/v1
'
:
{
target
:
backendUrl
,
changeOrigin
:
true
},
'
/setup
'
:
{
target
:
backendUrl
,
changeOrigin
:
true
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment