diff --git a/src/routes/apiStats.js b/src/routes/apiStats.js
index 21efa7be..271d95df 100644
--- a/src/routes/apiStats.js
+++ b/src/routes/apiStats.js
@@ -561,7 +561,9 @@ router.post('/api/batch-stats', async (req, res) => {
apiId: stats.apiId,
name: stats.name,
isActive: true,
- usage: stats.usage
+ usage: stats.usage,
+ dailyUsage: stats.dailyStats,
+ monthlyUsage: stats.monthlyStats
})
}
})
diff --git a/web/admin-spa/src/components/apistats/AggregatedStatsCard.vue b/web/admin-spa/src/components/apistats/AggregatedStatsCard.vue
index deb6ff04..5b857f8e 100644
--- a/web/admin-spa/src/components/apistats/AggregatedStatsCard.vue
+++ b/web/admin-spa/src/components/apistats/AggregatedStatsCard.vue
@@ -33,8 +33,8 @@
- {{ formatNumber(stat.usage?.requests || 0) }}次
- {{ stat.usage?.formattedCost || '$0.00' }}
+ {{ formatNumber(getStatUsage(stat)?.requests || 0) }}次
+ {{ getStatUsage(stat)?.formattedCost || '$0.00' }}
@@ -76,12 +76,27 @@ import { useApiStatsStore } from '@/stores/apistats'
const apiStatsStore = useApiStatsStore()
const { aggregatedStats, individualStats, statsPeriod, multiKeyMode } = storeToRefs(apiStatsStore)
+// 获取当前时间段的使用数据
+const getStatUsage = (stat) => {
+ if (!stat) return null
+
+ if (statsPeriod.value === 'daily') {
+ return stat.dailyUsage || stat.usage
+ } else {
+ return stat.monthlyUsage || stat.usage
+ }
+}
+
// 获取TOP Keys(最多显示5个)
const topKeys = computed(() => {
if (!individualStats.value || individualStats.value.length === 0) return []
return [...individualStats.value]
- .sort((a, b) => (b.usage?.cost || 0) - (a.usage?.cost || 0))
+ .sort((a, b) => {
+ const aUsage = getStatUsage(a)
+ const bUsage = getStatUsage(b)
+ return (bUsage?.cost || 0) - (aUsage?.cost || 0)
+ })
.slice(0, 5)
})
@@ -95,7 +110,10 @@ const otherKeysCount = computed(() => {
const otherPercentage = computed(() => {
if (!individualStats.value || !aggregatedStats.value) return 0
- const topKeysCost = topKeys.value.reduce((sum, stat) => sum + (stat.usage?.cost || 0), 0)
+ const topKeysCost = topKeys.value.reduce((sum, stat) => {
+ const usage = getStatUsage(stat)
+ return sum + (usage?.cost || 0)
+ }, 0)
const totalCost =
statsPeriod.value === 'daily'
? aggregatedStats.value.dailyUsage?.cost || 0
@@ -116,7 +134,8 @@ const calculatePercentage = (stat) => {
: aggregatedStats.value.monthlyUsage?.cost || 0
if (totalCost === 0) return 0
- const percentage = ((stat.usage?.cost || 0) / totalCost) * 100
+ const usage = getStatUsage(stat)
+ const percentage = ((usage?.cost || 0) / totalCost) * 100
return Math.round(percentage)
}