fix: user stats again x4

This commit is contained in:
Feng Yue
2025-08-13 23:40:38 +08:00
parent 1ba55401f9
commit c413fddec0
3 changed files with 43 additions and 37 deletions

View File

@@ -137,24 +137,43 @@ router.get('/api-keys', authenticateUser, async (req, res) => {
try {
const apiKeys = await apiKeyService.getUserApiKeys(req.user.id)
// 移除敏感信息
const safeApiKeys = apiKeys.map((key) => ({
id: key.id,
name: key.name,
description: key.description,
tokenLimit: key.tokenLimit,
isActive: key.isActive,
createdAt: key.createdAt,
lastUsedAt: key.lastUsedAt,
expiresAt: key.expiresAt,
usage: key.usage,
dailyCost: key.dailyCost,
dailyCostLimit: key.dailyCostLimit,
// 不返回实际的key值只返回前缀和后几位
keyPreview: key.key
? `${key.key.substring(0, 8)}...${key.key.substring(key.key.length - 4)}`
: null
}))
// 移除敏感信息并格式化usage数据
const safeApiKeys = apiKeys.map((key) => {
// Flatten usage structure for frontend compatibility
let flatUsage = {
requests: 0,
inputTokens: 0,
outputTokens: 0,
totalCost: 0
}
if (key.usage && key.usage.total) {
flatUsage = {
requests: key.usage.total.requests || 0,
inputTokens: key.usage.total.inputTokens || 0,
outputTokens: key.usage.total.outputTokens || 0,
totalCost: key.totalCost || 0
}
}
return {
id: key.id,
name: key.name,
description: key.description,
tokenLimit: key.tokenLimit,
isActive: key.isActive,
createdAt: key.createdAt,
lastUsedAt: key.lastUsedAt,
expiresAt: key.expiresAt,
usage: flatUsage,
dailyCost: key.dailyCost,
dailyCostLimit: key.dailyCostLimit,
// 不返回实际的key值只返回前缀和后几位
keyPreview: key.key
? `${key.key.substring(0, 8)}...${key.key.substring(key.key.length - 4)}`
: null
}
})
res.json({
success: true,

View File

@@ -500,16 +500,6 @@ class ApiKeyService {
const dailyCost = (await redis.getDailyCost(key.id)) || 0
const costStats = await redis.getCostStats(key.id)
logger.debug(`🔍 getUserApiKeys: Key ${key.id} (${key.name}) usage:`, {
keyId: key.id,
keyName: key.name,
userId: key.userId,
rawUsage: usage,
dailyCost,
costStats,
lastUsedAt: key.lastUsedAt
})
userKeysWithUsage.push({
id: key.id,
name: key.name,
@@ -673,11 +663,12 @@ class ApiKeyService {
// 汇总所有API Key的统计数据
for (const keyId of keyIds) {
const keyStats = await redis.getUsageStats(keyId)
if (keyStats) {
stats.totalRequests += keyStats.requests || 0
stats.totalInputTokens += keyStats.inputTokens || 0
stats.totalOutputTokens += keyStats.outputTokens || 0
stats.totalCost += keyStats.totalCost || 0
const costStats = await redis.getCostStats(keyId)
if (keyStats && keyStats.total) {
stats.totalRequests += keyStats.total.requests || 0
stats.totalInputTokens += keyStats.total.inputTokens || 0
stats.totalOutputTokens += keyStats.total.outputTokens || 0
stats.totalCost += costStats?.total || 0
}
}

View File

@@ -150,10 +150,6 @@ class UserService {
}
for (const apiKey of userApiKeys) {
logger.debug(`🔍 Processing API key ${apiKey.id} (${apiKey.name}) for user ${userId}:`, {
hasUsage: !!apiKey.usage,
usage: apiKey.usage
})
if (apiKey.usage && apiKey.usage.total) {
totalUsage.requests += apiKey.usage.total.requests || 0
totalUsage.inputTokens += apiKey.usage.total.inputTokens || 0