feat: 实现基于滑动窗口的实时RPM/TPM统计

- 添加系统级分钟统计,支持1-60分钟可配置时间窗口
- 新增 getRealtimeSystemMetrics 方法计算滑动窗口内的平均值
- 前端显示实时RPM/TPM,标注时间窗口和数据来源
- 修复 EditApiKeyModal 中模型限制和客户端限制复选框状态错误
- 优化性能:使用Pipeline批量操作替代Promise.all
- TPM包含所有token类型:input、output、cache_creation、cache_read
- 添加降级方案:实时数据不可用时返回历史平均值

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
shaw
2025-07-30 14:27:34 +08:00
parent 363d1c3ed3
commit a6ab6b7abe
7 changed files with 237 additions and 103 deletions

View File

@@ -88,11 +88,11 @@ class ClaudeConsoleRelayService {
logger.debug(`[DEBUG] Adding beta header: ${options.betaHeader}`);
requestConfig.headers['anthropic-beta'] = options.betaHeader;
} else {
logger.debug(`[DEBUG] No beta header to add`);
logger.debug('[DEBUG] No beta header to add');
}
// 发送请求
logger.debug(`📤 Sending request to Claude Console API with headers:`, JSON.stringify(requestConfig.headers, null, 2));
logger.debug('📤 Sending request to Claude Console API with headers:', JSON.stringify(requestConfig.headers, null, 2));
const response = await axios(requestConfig);
// 移除监听器(请求成功完成)