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
aaadd6ed
Commit
aaadd6ed
authored
Dec 24, 2025
by
shaw
Browse files
fix(dashboard): 修复性能指标 RPM/TPM 显示为0的问题
- 修复 Admin Dashboard Handler 遗漏返回 rpm/tpm 字段 - 将性能统计时间窗口从1分钟改为5分钟平均值,数据更稳定
parent
870b2191
Changes
5
Hide whitespace changes
Inline
Side-by-side
backend/internal/handler/admin/dashboard_handler.go
View file @
aaadd6ed
...
...
@@ -107,6 +107,10 @@ func (h *DashboardHandler) GetStats(c *gin.Context) {
// 系统运行统计
"average_duration_ms"
:
stats
.
AverageDurationMs
,
"uptime"
:
uptime
,
// 性能指标
"rpm"
:
stats
.
Rpm
,
"tpm"
:
stats
.
Tpm
,
})
}
...
...
backend/internal/pkg/usagestats/usage_log_types.go
View file @
aaadd6ed
...
...
@@ -44,8 +44,8 @@ type DashboardStats struct {
AverageDurationMs
float64
`json:"average_duration_ms"`
// 平均响应时间
// 性能指标
Rpm
int64
`json:"rpm"`
//
最近1
分钟
的
请求数
Tpm
int64
`json:"tpm"`
//
最近1
分钟
的
Token数
Rpm
int64
`json:"rpm"`
//
近5分钟平均每
分钟请求数
Tpm
int64
`json:"tpm"`
//
近5分钟平均每
分钟Token数
}
// TrendDataPoint represents a single point in trend data
...
...
@@ -121,8 +121,8 @@ type UserDashboardStats struct {
AverageDurationMs
float64
`json:"average_duration_ms"`
// 性能指标
Rpm
int64
`json:"rpm"`
//
最近1
分钟
的
请求数
Tpm
int64
`json:"tpm"`
//
最近1
分钟
的
Token数
Rpm
int64
`json:"rpm"`
//
近5分钟平均每
分钟请求数
Tpm
int64
`json:"tpm"`
//
近5分钟平均每
分钟Token数
}
// UsageLogFilters represents filters for usage log queries
...
...
backend/internal/repository/usage_log_repo.go
View file @
aaadd6ed
...
...
@@ -19,9 +19,9 @@ func NewUsageLogRepository(db *gorm.DB) *UsageLogRepository {
return
&
UsageLogRepository
{
db
:
db
}
}
// getPerformanceStats 获取 RPM 和 TPM(可选按用户过滤)
// getPerformanceStats 获取 RPM 和 TPM(
近5分钟平均值,
可选按用户过滤)
func
(
r
*
UsageLogRepository
)
getPerformanceStats
(
ctx
context
.
Context
,
userID
int64
)
(
rpm
,
tpm
int64
)
{
on
eMinuteAgo
:=
time
.
Now
()
.
Add
(
-
1
*
time
.
Minute
)
fiv
eMinute
s
Ago
:=
time
.
Now
()
.
Add
(
-
5
*
time
.
Minute
)
var
perfStats
struct
{
RequestCount
int64
`gorm:"column:request_count"`
TokenCount
int64
`gorm:"column:token_count"`
...
...
@@ -32,14 +32,15 @@ func (r *UsageLogRepository) getPerformanceStats(ctx context.Context, userID int
COUNT(*) as request_count,
COALESCE(SUM(input_tokens + output_tokens), 0) as token_count
`
)
.
Where
(
"created_at >= ?"
,
on
eMinuteAgo
)
Where
(
"created_at >= ?"
,
fiv
eMinute
s
Ago
)
if
userID
>
0
{
db
=
db
.
Where
(
"user_id = ?"
,
userID
)
}
db
.
Scan
(
&
perfStats
)
return
perfStats
.
RequestCount
,
perfStats
.
TokenCount
// 返回5分钟平均值
return
perfStats
.
RequestCount
/
5
,
perfStats
.
TokenCount
/
5
}
func
(
r
*
UsageLogRepository
)
Create
(
ctx
context
.
Context
,
log
*
model
.
UsageLog
)
error
{
...
...
frontend/src/api/usage.ts
View file @
aaadd6ed
...
...
@@ -35,8 +35,8 @@ export interface UserDashboardStats {
today_cost
:
number
;
// 今日标准计费
today_actual_cost
:
number
;
// 今日实际扣除
average_duration_ms
:
number
;
rpm
:
number
;
//
最近1
分钟
的
请求数
tpm
:
number
;
//
最近1
分钟
的
Token数
rpm
:
number
;
//
近5分钟平均每
分钟请求数
tpm
:
number
;
//
近5分钟平均每
分钟Token数
}
export
interface
TrendParams
{
...
...
frontend/src/types/index.ts
View file @
aaadd6ed
...
...
@@ -520,8 +520,8 @@ export interface DashboardStats {
uptime
:
number
;
// 系统运行时间(秒)
// 性能指标
rpm
:
number
;
//
最近1
分钟
的
请求数
tpm
:
number
;
//
最近1
分钟
的
Token数
rpm
:
number
;
//
近5分钟平均每
分钟请求数
tpm
:
number
;
//
近5分钟平均每
分钟Token数
}
export
interface
UsageStatsResponse
{
...
...
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