From d9476230c6378c6a7f92cb52fc1017256e6e61c6 Mon Sep 17 00:00:00 2001 From: shaw Date: Fri, 28 Nov 2025 14:02:58 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dapikey=E7=AA=97?= =?UTF-8?q?=E5=8F=A3=E9=99=90=E5=88=B6=E6=97=B6=E9=97=B4=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routes/admin/apiKeys.js | 8 ++++++-- web/admin-spa/src/views/ApiKeysView.vue | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/routes/admin/apiKeys.js b/src/routes/admin/apiKeys.js index 0f717661..da654e31 100644 --- a/src/routes/admin/apiKeys.js +++ b/src/routes/admin/apiKeys.js @@ -620,6 +620,8 @@ async function calculateKeyStats(keyId, timeRange, startDate, endDate) { let dailyCost = 0 let currentWindowCost = 0 let windowRemainingSeconds = null + let windowStartTime = null + let windowEndTime = null let allTimeCost = 0 try { @@ -642,9 +644,9 @@ async function calculateKeyStats(keyId, timeRange, startDate, endDate) { const windowStart = await client.get(windowStartKey) if (windowStart) { const now = Date.now() - const windowStartTime = parseInt(windowStart) + windowStartTime = parseInt(windowStart) const windowDuration = apiKey.rateLimitWindow * 60 * 1000 // 转换为毫秒 - const windowEndTime = windowStartTime + windowDuration + windowEndTime = windowStartTime + windowDuration // 如果窗口还有效 if (now < windowEndTime) { @@ -673,6 +675,8 @@ async function calculateKeyStats(keyId, timeRange, startDate, endDate) { dailyCost, currentWindowCost, windowRemainingSeconds, + windowStartTime, + windowEndTime, allTimeCost // 历史总费用(用于总费用限制) } } diff --git a/web/admin-spa/src/views/ApiKeysView.vue b/web/admin-spa/src/views/ApiKeysView.vue index d166fb4d..c1ca1ca1 100644 --- a/web/admin-spa/src/views/ApiKeysView.vue +++ b/web/admin-spa/src/views/ApiKeysView.vue @@ -3969,6 +3969,8 @@ const showUsageDetails = (apiKey) => { dailyCost: cachedStats?.dailyCost ?? apiKey.dailyCost ?? 0, currentWindowCost: cachedStats?.currentWindowCost ?? apiKey.currentWindowCost ?? 0, windowRemainingSeconds: cachedStats?.windowRemainingSeconds ?? apiKey.windowRemainingSeconds, + windowStartTime: cachedStats?.windowStartTime ?? apiKey.windowStartTime ?? null, + windowEndTime: cachedStats?.windowEndTime ?? apiKey.windowEndTime ?? null, // 合并 usage 数据(用于详情弹窗中的统计卡片) usage: { ...apiKey.usage,