From fde95fcd0f4b3b44ea9d3a57fd31b176dc439493 Mon Sep 17 00:00:00 2001 From: nagi330 <502369068@qq.com> Date: Tue, 21 Jul 2026 21:41:28 +0800 Subject: [PATCH] =?UTF-8?q?fix(usage):=20=E7=BB=9F=E4=B8=80=E5=90=8E?= =?UTF-8?q?=E5=8F=B0=E4=BD=BF=E7=94=A8=E8=AE=B0=E5=BD=95=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E7=AD=9B=E9=80=89=E5=8F=A3=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../internal/handler/admin/usage_handler.go | 48 ++++++++++--------- .../admin/usage_handler_request_type_test.go | 26 ++++++++++ 2 files changed, 51 insertions(+), 23 deletions(-) diff --git a/backend/internal/handler/admin/usage_handler.go b/backend/internal/handler/admin/usage_handler.go index 11a4aeb8f6..a7e0156d18 100644 --- a/backend/internal/handler/admin/usage_handler.go +++ b/backend/internal/handler/admin/usage_handler.go @@ -172,18 +172,19 @@ func (h *UsageHandler) List(c *gin.Context) { SortOrder: c.DefaultQuery("sort_order", "desc"), } filters := usagestats.UsageLogFilters{ - UserID: userID, - APIKeyID: apiKeyID, - AccountID: accountID, - GroupID: groupID, - Model: model, - RequestType: requestType, - Stream: stream, - BillingType: billingType, - BillingMode: billingMode, - StartTime: startTime, - EndTime: endTime, - ExactTotal: exactTotal, + UserID: userID, + APIKeyID: apiKeyID, + AccountID: accountID, + GroupID: groupID, + Model: model, + ModelFilterSource: usagestats.ModelSourceRequested, + RequestType: requestType, + Stream: stream, + BillingType: billingType, + BillingMode: billingMode, + StartTime: startTime, + EndTime: endTime, + ExactTotal: exactTotal, } records, result, err := h.usageService.ListWithFilters(c.Request.Context(), params, filters) @@ -312,17 +313,18 @@ func (h *UsageHandler) Stats(c *gin.Context) { // Build filters and call GetStatsWithFilters filters := usagestats.UsageLogFilters{ - UserID: userID, - APIKeyID: apiKeyID, - AccountID: accountID, - GroupID: groupID, - Model: model, - RequestType: requestType, - Stream: stream, - BillingType: billingType, - BillingMode: billingMode, - StartTime: &startTime, - EndTime: &endTime, + UserID: userID, + APIKeyID: apiKeyID, + AccountID: accountID, + GroupID: groupID, + Model: model, + ModelFilterSource: usagestats.ModelSourceRequested, + RequestType: requestType, + Stream: stream, + BillingType: billingType, + BillingMode: billingMode, + StartTime: &startTime, + EndTime: &endTime, } var stats *usagestats.UsageStats diff --git a/backend/internal/handler/admin/usage_handler_request_type_test.go b/backend/internal/handler/admin/usage_handler_request_type_test.go index 882cbe9362..bb4d43b4b2 100644 --- a/backend/internal/handler/admin/usage_handler_request_type_test.go +++ b/backend/internal/handler/admin/usage_handler_request_type_test.go @@ -60,6 +60,19 @@ func TestAdminUsageListRequestTypePriority(t *testing.T) { require.Nil(t, repo.listFilters.Stream) } +func TestAdminUsageListUsesRequestedModelForDisplayModelFilter(t *testing.T) { + repo := &adminUsageRepoCapture{} + router := newAdminUsageRequestTypeTestRouter(repo) + + req := httptest.NewRequest(http.MethodGet, "/admin/usage?model=grok-imagine-video-1.5", nil) + rec := httptest.NewRecorder() + router.ServeHTTP(rec, req) + + require.Equal(t, http.StatusOK, rec.Code) + require.Equal(t, "grok-imagine-video-1.5", repo.listFilters.Model) + require.Equal(t, usagestats.ModelSourceRequested, repo.listFilters.ModelFilterSource) +} + func TestAdminUsageListInvalidRequestType(t *testing.T) { repo := &adminUsageRepoCapture{} router := newAdminUsageRequestTypeTestRouter(repo) @@ -119,6 +132,19 @@ func TestAdminUsageStatsRequestTypePriority(t *testing.T) { require.Nil(t, repo.statsFilters.Stream) } +func TestAdminUsageStatsUsesRequestedModelForDisplayModelFilter(t *testing.T) { + repo := &adminUsageRepoCapture{} + router := newAdminUsageRequestTypeTestRouter(repo) + + req := httptest.NewRequest(http.MethodGet, "/admin/usage/stats?model=grok-imagine-video-1.5", nil) + rec := httptest.NewRecorder() + router.ServeHTTP(rec, req) + + require.Equal(t, http.StatusOK, rec.Code) + require.Equal(t, "grok-imagine-video-1.5", repo.statsFilters.Model) + require.Equal(t, usagestats.ModelSourceRequested, repo.statsFilters.ModelFilterSource) +} + func TestAdminUsageStatsInvalidRequestType(t *testing.T) { repo := &adminUsageRepoCapture{} router := newAdminUsageRequestTypeTestRouter(repo)