Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions changelog/unreleased/usage-page-consolidation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
### English

- Overview no longer carries the usage breakdown and credit deduction history panels; it keeps the gateway status, traffic, account pool, resources and ranking cards.
- The credit expiry distribution moved from Overview to Usage, where it sits under the Stats tab and follows the same time window as the tables above it.
- Overview and Usage both default to the "Today" window; Usage also offers Today on its Quota tab, which previously started at the full retained range.

### 中文

- 概览移除「用量明细」与「积分扣除历史」,只保留网关状态、流量、账号池、资源与排行卡片。
- 「积分到期分布」从概览移到用量页,位于「统计」标签页内,并跟随上方表格的时间窗口。
- 概览与用量页的时间查询都默认「今天」;用量页的「额度」标签页也新增「今天」,此前默认是全部留存范围。
66 changes: 0 additions & 66 deletions frontend/src/api/logs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -176,63 +176,6 @@ export type RequestStats = {
series: RequestStatsPoint[]
}

export type RequestUsageTotals = {
total_tokens: number
prompt_tokens: number
completion_tokens: number
cache_hit_tokens: number
cache_miss_tokens: number
requests: number
errors: number
avg_latency_ms?: number | null
avg_tokens_per_second?: number | null
credits: number
credit_tokens: number
credit_samples: number
credits_per_1m_tokens?: number | null
success_rate: number
}

export type RequestUsageRow = {
key: string
realm?: string
extra?: string
total_tokens: number
prompt_tokens: number
completion_tokens: number
cache_hit_tokens: number
cache_miss_tokens: number
requests: number
errors: number
avg_latency_ms?: number | null
avg_tokens_per_second?: number | null
}

export type RequestUsageCreditRow = {
key: string
nickname?: string
realm?: string
rate?: number | null
requests: number
credit_samples: number
credits: number
credit_tokens: number
credits_per_1m_tokens?: number | null
cache_hit_tokens: number
cache_miss_tokens: number
}

export type RequestUsage = {
window: RequestStatsWindow
totals: RequestUsageTotals
by_account: RequestUsageRow[]
by_model: RequestUsageRow[]
by_realm: RequestUsageRow[]
credit_by_account: RequestUsageCreditRow[]
credit_by_model: RequestUsageCreditRow[]
series: RequestStatsPoint[]
}

export type RequestLogQuery = {
account?: string
status?: string
Expand Down Expand Up @@ -264,15 +207,6 @@ export function fetchRequestStats(query: { hours?: number; from?: string; to?: s
return api<RequestStats>(`/api/logs/stats${suffix}`)
}

export function fetchRequestUsage(query: { hours?: number; from?: string; to?: string } = {}) {
const params = new URLSearchParams()
if (query.hours != null) params.set('hours', String(query.hours))
if (query.from) params.set('from', query.from)
if (query.to) params.set('to', query.to)
const suffix = params.toString() ? `?${params}` : ''
return api<RequestUsage>(`/api/logs/usage${suffix}`)
}

export function fetchRequestLogs(query: RequestLogQuery = {}) {
const params = new URLSearchParams()
if (query.account) params.set('account', query.account)
Expand Down
Loading
Loading