link0518 commited on
Commit
6fdc899
·
1 Parent(s): 5b1e8d4

修复api次数统计

Browse files
client/src/pages/Dashboard.jsx CHANGED
@@ -20,17 +20,19 @@ export default function Dashboard() {
20
  const fetchData = async () => {
21
  try {
22
  const headers = { 'X-Admin-Token': token };
23
- const [keysRes, tokensRes, keyStatsRes, tokenStatsRes] = await Promise.all([
24
  fetch('/admin/keys', { headers }),
25
  fetch('/admin/tokens', { headers }),
26
  fetch('/admin/keys/stats', { headers }),
27
- fetch('/admin/tokens/stats', { headers })
 
28
  ]);
29
 
30
  const keys = await keysRes.json();
31
  const tokens = await tokensRes.json();
32
  const keyStats = await keyStatsRes.json();
33
  const tokenStats = await tokenStatsRes.json();
 
34
 
35
  setStats({
36
  keys: keys.length,
@@ -38,7 +40,7 @@ export default function Dashboard() {
38
  keyRequests: keyStats.totalRequests || 0,
39
  tokenEnabled: tokenStats.enabled || 0,
40
  tokenDisabled: tokenStats.disabled || 0,
41
- todayRequests: 0
42
  });
43
  } catch (error) {
44
  console.error('Failed to fetch dashboard data', error);
 
20
  const fetchData = async () => {
21
  try {
22
  const headers = { 'X-Admin-Token': token };
23
+ const [keysRes, tokensRes, keyStatsRes, tokenStatsRes, todayReqRes] = await Promise.all([
24
  fetch('/admin/keys', { headers }),
25
  fetch('/admin/tokens', { headers }),
26
  fetch('/admin/keys/stats', { headers }),
27
+ fetch('/admin/tokens/stats', { headers }),
28
+ fetch('/admin/today-requests', { headers })
29
  ]);
30
 
31
  const keys = await keysRes.json();
32
  const tokens = await tokensRes.json();
33
  const keyStats = await keyStatsRes.json();
34
  const tokenStats = await tokenStatsRes.json();
35
+ const todayReq = await todayReqRes.json();
36
 
37
  setStats({
38
  keys: keys.length,
 
40
  keyRequests: keyStats.totalRequests || 0,
41
  tokenEnabled: tokenStats.enabled || 0,
42
  tokenDisabled: tokenStats.disabled || 0,
43
+ todayRequests: todayReq.todayRequests || 0
44
  });
45
  } catch (error) {
46
  console.error('Failed to fetch dashboard data', error);
src/admin/monitor.js CHANGED
@@ -4,9 +4,34 @@ import idleManager from '../utils/idle_manager.js';
4
  const startTime = Date.now();
5
  let requestCount = 0;
6
 
 
 
 
 
7
  // 增加请求计数
8
  export function incrementRequestCount() {
9
  requestCount++;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  }
11
 
12
  // 获取系统状态
 
4
  const startTime = Date.now();
5
  let requestCount = 0;
6
 
7
+ // 今日请求统计
8
+ let todayDate = new Date().toISOString().split('T')[0]; // YYYY-MM-DD
9
+ let todayRequestCount = 0;
10
+
11
  // 增加请求计数
12
  export function incrementRequestCount() {
13
  requestCount++;
14
+
15
+ // 检查日期是否变化
16
+ const currentDate = new Date().toISOString().split('T')[0];
17
+ if (currentDate !== todayDate) {
18
+ // 日期变化,重置今日计数
19
+ todayDate = currentDate;
20
+ todayRequestCount = 0;
21
+ }
22
+
23
+ todayRequestCount++;
24
+ }
25
+
26
+ // 获取今日请求数
27
+ export function getTodayRequestCount() {
28
+ // 再次检查日期,防止跨日后首次调用返回旧数据
29
+ const currentDate = new Date().toISOString().split('T')[0];
30
+ if (currentDate !== todayDate) {
31
+ todayDate = currentDate;
32
+ todayRequestCount = 0;
33
+ }
34
+ return todayRequestCount;
35
  }
36
 
37
  // 获取系统状态
src/admin/routes.js CHANGED
@@ -3,7 +3,7 @@ import multer from 'multer';
3
  import archiver from 'archiver';
4
  import { createKey, loadKeys, deleteKey, updateKeyRateLimit, getKeyStats } from './key_manager.js';
5
  import { getRecentLogs, clearLogs, addLog } from './log_manager.js';
6
- import { getSystemStatus, incrementRequestCount } from './monitor.js';
7
  import { loadAccounts, deleteAccount, toggleAccount, triggerLogin, getAccountStats, addTokenFromCallback, getAccountName, importTokens } from './token_admin.js';
8
  import { createSession, validateSession, destroySession, verifyPassword, adminAuth } from './session.js';
9
  import { loadSettings, saveSettings } from './settings_manager.js';
@@ -154,6 +154,16 @@ router.get('/status', async (req, res) => {
154
  }
155
  });
156
 
 
 
 
 
 
 
 
 
 
 
157
  // Token 管理路由
158
 
159
  // 获取所有账号
 
3
  import archiver from 'archiver';
4
  import { createKey, loadKeys, deleteKey, updateKeyRateLimit, getKeyStats } from './key_manager.js';
5
  import { getRecentLogs, clearLogs, addLog } from './log_manager.js';
6
+ import { getSystemStatus, incrementRequestCount, getTodayRequestCount } from './monitor.js';
7
  import { loadAccounts, deleteAccount, toggleAccount, triggerLogin, getAccountStats, addTokenFromCallback, getAccountName, importTokens } from './token_admin.js';
8
  import { createSession, validateSession, destroySession, verifyPassword, adminAuth } from './session.js';
9
  import { loadSettings, saveSettings } from './settings_manager.js';
 
154
  }
155
  });
156
 
157
+ // 获取今日请求统计
158
+ router.get('/today-requests', async (req, res) => {
159
+ try {
160
+ const todayRequests = getTodayRequestCount();
161
+ res.json({ todayRequests });
162
+ } catch (error) {
163
+ res.status(500).json({ error: error.message });
164
+ }
165
+ });
166
+
167
  // Token 管理路由
168
 
169
  // 获取所有账号