Merge pull request #138 from geminiwen/main

fix: 修复仪表盘统计中遗漏 Claude Console 账户的问题
This commit is contained in:
Wesley Liddick
2025-07-30 18:42:33 +08:00
committed by GitHub

View File

@@ -1261,10 +1261,11 @@ router.get('/accounts/:accountId/usage-stats', authenticateAdmin, async (req, re
// 获取系统概览 // 获取系统概览
router.get('/dashboard', authenticateAdmin, async (req, res) => { router.get('/dashboard', authenticateAdmin, async (req, res) => {
try { try {
const [, apiKeys, claudeAccounts, geminiAccounts, todayStats, systemAverages, realtimeMetrics] = await Promise.all([ const [, apiKeys, claudeAccounts, claudeConsoleAccounts, geminiAccounts, todayStats, systemAverages, realtimeMetrics] = await Promise.all([
redis.getSystemStats(), redis.getSystemStats(),
apiKeyService.getAllApiKeys(), apiKeyService.getAllApiKeys(),
claudeAccountService.getAllAccounts(), claudeAccountService.getAllAccounts(),
claudeConsoleAccountService.getAllAccounts(),
geminiAccountService.getAllAccounts(), geminiAccountService.getAllAccounts(),
redis.getTodayStats(), redis.getTodayStats(),
redis.getSystemAverages(), redis.getSystemAverages(),
@@ -1283,6 +1284,8 @@ router.get('/dashboard', authenticateAdmin, async (req, res) => {
const activeApiKeys = apiKeys.filter(key => key.isActive).length; const activeApiKeys = apiKeys.filter(key => key.isActive).length;
const activeClaudeAccounts = claudeAccounts.filter(acc => acc.isActive && acc.status === 'active').length; const activeClaudeAccounts = claudeAccounts.filter(acc => acc.isActive && acc.status === 'active').length;
const rateLimitedClaudeAccounts = claudeAccounts.filter(acc => acc.rateLimitStatus && acc.rateLimitStatus.isRateLimited).length; const rateLimitedClaudeAccounts = claudeAccounts.filter(acc => acc.rateLimitStatus && acc.rateLimitStatus.isRateLimited).length;
const activeClaudeConsoleAccounts = claudeConsoleAccounts.filter(acc => acc.isActive && acc.status === 'active').length;
const rateLimitedClaudeConsoleAccounts = claudeConsoleAccounts.filter(acc => acc.rateLimitStatus && acc.rateLimitStatus.isRateLimited).length;
const activeGeminiAccounts = geminiAccounts.filter(acc => acc.isActive && acc.status === 'active').length; const activeGeminiAccounts = geminiAccounts.filter(acc => acc.isActive && acc.status === 'active').length;
const rateLimitedGeminiAccounts = geminiAccounts.filter(acc => acc.rateLimitStatus === 'limited').length; const rateLimitedGeminiAccounts = geminiAccounts.filter(acc => acc.rateLimitStatus === 'limited').length;
@@ -1290,9 +1293,9 @@ router.get('/dashboard', authenticateAdmin, async (req, res) => {
overview: { overview: {
totalApiKeys: apiKeys.length, totalApiKeys: apiKeys.length,
activeApiKeys, activeApiKeys,
totalClaudeAccounts: claudeAccounts.length, totalClaudeAccounts: claudeAccounts.length + claudeConsoleAccounts.length,
activeClaudeAccounts: activeClaudeAccounts, activeClaudeAccounts: activeClaudeAccounts + activeClaudeConsoleAccounts,
rateLimitedClaudeAccounts: rateLimitedClaudeAccounts, rateLimitedClaudeAccounts: rateLimitedClaudeAccounts + rateLimitedClaudeConsoleAccounts,
totalGeminiAccounts: geminiAccounts.length, totalGeminiAccounts: geminiAccounts.length,
activeGeminiAccounts: activeGeminiAccounts, activeGeminiAccounts: activeGeminiAccounts,
rateLimitedGeminiAccounts: rateLimitedGeminiAccounts, rateLimitedGeminiAccounts: rateLimitedGeminiAccounts,
@@ -1325,7 +1328,7 @@ router.get('/dashboard', authenticateAdmin, async (req, res) => {
}, },
systemHealth: { systemHealth: {
redisConnected: redis.isConnected, redisConnected: redis.isConnected,
claudeAccountsHealthy: activeClaudeAccounts > 0, claudeAccountsHealthy: (activeClaudeAccounts + activeClaudeConsoleAccounts) > 0,
geminiAccountsHealthy: activeGeminiAccounts > 0, geminiAccountsHealthy: activeGeminiAccounts > 0,
uptime: process.uptime() uptime: process.uptime()
}, },