refactor: 重构密钥状态页面为客户端动态加载

- 新增 key_routes.py 分离密钥相关路由逻辑
- 将密钥列表从服务器端渲染改为 JavaScript 动态加载
- 优化 keys_status 页面错误处理,提供默认数据结构
- 在 KeyManager 中添加 get_all_keys_with_fail_count 方法
- 移除服务器端模板中的静态密钥渲染代码

这次重构提升了页面加载性能和用户体验,同时改善了错误处理机制。
This commit is contained in:
snaily
2025-07-24 23:23:11 +08:00
parent ccd4722a77
commit 2270f6d998
5 changed files with 301 additions and 326 deletions
+12
View File
@@ -141,6 +141,18 @@ class KeyManager:
"""获取指定 Vertex 密钥的失败次数"""
return self.vertex_key_failure_counts.get(key, 0)
async def get_all_keys_with_fail_count(self) -> dict:
"""获取所有API key及其失败次数"""
all_keys = {}
async with self.failure_count_lock:
for key in self.api_keys:
all_keys[key] = self.key_failure_counts.get(key, 0)
valid_keys = {k: v for k, v in all_keys.items() if v < self.MAX_FAILURES}
invalid_keys = {k: v for k, v in all_keys.items() if v >= self.MAX_FAILURES}
return {"valid_keys": valid_keys, "invalid_keys": invalid_keys, "all_keys": all_keys}
async def get_keys_by_status(self) -> dict:
"""获取分类后的API key列表,包括失败次数"""
valid_keys = {}