atoz03
fc25840f95
fix: 账户列表默认显示限额/限流账号并加固加载健壮性
...
- 将账户页状态筛选默认值从 normal 改为 all,额度满/限流/异常账号默认可见
- appendAccounts 使用 Array.isArray 兜底接口响应,避免空/异常数据导致“加载账户失败”
- 便于在额度耗尽场景查看并处理账号
2025-12-09 18:49:57 +08:00
Wesley Liddick
01c63bf5df
Merge pull request #760 from IanShaw027/upstream-pr-account-full [skip ci]
...
feat: 增强账户管理功能
2025-12-05 21:45:37 -05:00
atoz03
9b0d0bee96
fix: 账户时间线入口与路由修复
...
- 移除账户列表下拉/卡片的时间线入口,仅保留详情弹窗顶部按钮
- ActionDropdown 全局互斥,避免多菜单堆叠
- 账户筛选去重,避免“未知渠道”重复泄露
2025-12-05 14:57:34 +08:00
atoz03
ff30bfab82
feat: 账户时间线详情页与接口完善
...
- 后端新增 /admin/accounts/:accountId/usage-records 接口,支持按账户聚合多 Key 记录并分页筛选、汇总统计
- 修复 API Key 时间线账户筛选跳过已删除账号,补充账户/Key 辅助解析
- 前端新增 AccountUsageRecordsView、路由及账户列表“时间线”入口,支持模型/API Key 筛选与 CSV 导出
- 补装 prettier-plugin-tailwindcss 并完成相关文件格式化
2025-12-05 14:23:25 +08:00
IanShaw027
827c0f6207
feat: 添加两级平台筛选功能(支持平台分组)
...
- 添加 platformHierarchy 定义平台层级结构(Claude全部、OpenAI全部、Gemini全部、Droid)
- 添加 platformGroupMap 映射平台组到具体平台
- 添加 platformRequestHandlers 动态处理平台请求
- 将 platformOptions 从 ref 改为 computed 支持缩进显示
- 优化 loadAccounts 使用动态平台加载替代大型 switch 语句
- 新增 getPlatformsForFilter 辅助函数
功能说明:
- 支持选择"Claude(全部)"同时筛选 claude + claude-console + bedrock + ccr
- 支持选择"OpenAI(全部)"同时筛选 openai + openai-responses + azure_openai
- 支持选择"Gemini(全部)"同时筛选 gemini + gemini-api
- 保持向后兼容,仍支持单独选择具体平台
2025-12-05 03:31:13 +08:00
IanShaw027
3db268fff7
feat: 完善账户管理和仪表盘功能
...
- 修改使用记录API路由路径为 /dashboard/usage-records
- 增加对更多账户类型的支持(Bedrock、Azure、Droid、CCR等)
- 修复Codex模型识别逻辑,避免 gpt-5-codex 系列被错误归一化
- 在账户管理页面添加状态过滤器(正常/异常)
- 在账户管理页面添加限流时间过滤器(≤1h/5h/12h/1d)
- 增加账户统计汇总弹窗,按平台分类展示
- 完善仪表盘使用记录展示功能,支持分页加载
- 将 logs1/ 目录添加到 .gitignore
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-12-05 02:54:14 +08:00
IanShaw027
69a1006f4c
feat: 增强账户管理页面的过滤和统计功能
...
- 新增状态过滤器:支持按正常/异常/全部筛选账户
- 新增限流时间过滤器:支持按1h/5h/12h/1d筛选限流账户
- 新增账户统计弹窗:按平台类型和状态汇总账户数量
- 优化账户列表过滤逻辑,支持组合过滤条件
- 默认状态过滤为'正常',提升用户体验
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-12-05 02:54:14 +08:00
atoz03
9ad5c85c2c
feat(accounts): 支持排序切换正序/倒序
...
- 统一下拉选择器和表头的排序变量
- 再次点击同一排序选项/列头时切换排序方向
- 动态更新排序图标指示当前方向
2025-12-03 20:25:26 +08:00
shaw
d3155b82ea
style: 优化表格布局
2025-12-01 14:20:53 +08:00
shaw
dfee7be944
fix: 调整gemini-api BaseApi后缀以适配更多端点
2025-11-29 21:30:28 +08:00
shaw
68f003976e
style: 优化表格显示固定列宽
2025-11-29 11:20:07 +08:00
shaw
49645e8a50
feat: 增强claude转发特征模拟
2025-11-28 13:54:42 +08:00
shaw
7db70e2dc0
feat: 为claude类型账号增加测试功能
2025-11-28 10:51:01 +08:00
shaw
22fbabbc47
fix: 优化apikeys页面加载速度
2025-11-25 15:01:15 +08:00
shaw
25f455ac1c
fix: 适配claude新的usage接口
2025-11-25 10:54:21 +08:00
shaw
8f2cf211de
fix: 修复gemini重置状态按钮未显示的问题
2025-11-24 14:49:12 +08:00
shaw
a0a7aae28e
fix: 暂时移除gemini 的429处理
2025-11-24 10:53:51 +08:00
shaw
bae39d5468
feat: 支持Gemini-Api接入
2025-11-23 22:00:13 +08:00
sususu98
1458d609ca
feat: 为 Claude Console 账户添加并发控制机制
...
实现了完整的 Claude Console 账户并发任务数控制功能,防止单账户过载,提升服务稳定性。
**核心功能**
- 🔒 **原子性并发控制**: 基于 Redis Sorted Set 实现的抢占式并发槽位管理,防止竞态条件
- 🔄 **自动租约刷新**: 流式请求每 5 分钟自动刷新租约,防止长连接租约过期
- 🚨 **智能降级处理**: 并发满额时自动清理粘性会话并重试其他账户(最多 1 次)
- 🎯 **专用错误码**: 引入 `CONSOLE_ACCOUNT_CONCURRENCY_FULL` 错误码,区分并发限制和其他错误
- 📊 **批量性能优化**: 调度器使用 Promise.all 并行查询账户并发数,减少 Redis 往返
**后端实现**
1. **Redis 并发控制方法** (src/models/redis.js)
- `incrConsoleAccountConcurrency()`: 增加并发计数(带租约)
- `decrConsoleAccountConcurrency()`: 释放并发槽位
- `refreshConsoleAccountConcurrencyLease()`: 刷新租约(流式请求)
- `getConsoleAccountConcurrency()`: 查询当前并发数
2. **账户服务增强** (src/services/claudeConsoleAccountService.js)
- 添加 `maxConcurrentTasks` 字段(默认 0 表示无限制)
- 获取账户时自动查询实时并发数 (`activeTaskCount`)
- 支持更新并发限制配置
3. **转发服务并发保护** (src/services/claudeConsoleRelayService.js)
- 请求前原子性抢占槽位,超限则立即回滚并抛出专用错误
- 流式请求启动定时器每 5 分钟刷新租约
- `finally` 块确保槽位释放(即使发生异常)
- 为每个请求分配唯一 `requestId` 用于并发追踪
4. **统一调度器优化** (src/services/unifiedClaudeScheduler.js)
- 获取可用账户时批量查询并发数(Promise.all 并行)
- 预检查并发限制,避免选择已满的账户
- 检查分组成员时也验证并发状态
- 所有账户并发满额时抛出专用错误码
5. **API 路由降级处理** (src/routes/api.js)
- 捕获 `CONSOLE_ACCOUNT_CONCURRENCY_FULL` 错误
- 自动清理粘性会话映射并重试(最多 1 次)
- 重试失败返回 503 错误和友好提示
- count_tokens 端点也支持并发满额重试
6. **管理端点验证** (src/routes/admin.js)
- 创建/更新账户时验证 `maxConcurrentTasks` 为非负整数
- 支持前端传入并发限制配置
**前端实现**
1. **表单字段** (web/admin-spa/src/components/accounts/AccountForm.vue)
- 添加"最大并发任务数"输入框(创建和编辑模式)
- 支持占位符提示"0 表示不限制"
- 表单数据自动映射到后端 API
2. **实时监控** (web/admin-spa/src/views/AccountsView.vue)
- 账户列表显示并发状态进度条和百分比
- 颜色编码:绿色(<80%)、黄色(80%-100%)、红色(100%)
- 显示"X / Y"格式的并发数(如"2 / 5")
- 未配置限制时显示"并发无限制"徽章
2025-10-21 13:43:57 +08:00
AAEE86
d3cf66e2c0
Update AccountsView.vue
...
移除 overflow-x: auto
2025-10-16 11:13:23 +08:00
mrlitong
cd5df4f76b
Merge remote-tracking branch 'upstream/main' into feature/account-subscription-expiry-check
2025-10-14 08:04:12 +00:00
litongtongxue
1e7465e533
feat: 为所有账户服务添加订阅过期检查功能
...
完成账户订阅到期时间功能的核心调度逻辑实现。
## 实现范围
✅ 已添加订阅过期检查的服务(5个):
- Gemini 服务:添加 isSubscriptionExpired() 函数及调度过滤
- OpenAI 服务:添加 isSubscriptionExpired() 函数及调度过滤
- Droid 服务:添加 _isSubscriptionExpired() 方法及调度过滤
- Bedrock 服务:添加 _isSubscriptionExpired() 方法及调度过滤
- Azure OpenAI 服务:添加 isSubscriptionExpired() 函数及调度过滤
## 核心功能
- 账户调度时自动检查 subscriptionExpiresAt 字段
- 过期账户将不再被系统调度使用
- 未设置过期时间的账户视为永不过期(向后兼容)
- 使用 <= 比较判断过期(精确到过期时刻)
- 跳过过期账户时记录 debug 日志便于排查
## 技术实现
- 统一的实现模式:过期检查函数 + 账户选择逻辑集成
- 不影响现有功能,完全向后兼容
- 业务字段 subscriptionExpiresAt 与技术字段 expiresAt(OAuth token过期)独立管理
## 相关文档
参考 account_expire_bugfix.md 了解问题背景和实现细节
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-10-14 02:42:03 +00:00
AAEE86
38c61e1018
refactor: 优化API Key状态过滤逻辑,增强代码可读性
2025-10-14 09:37:46 +08:00
AAEE86
1f9afc788b
feat: 添加Droid账户API Key管理功能
...
(cherry picked from commit 0cf3ca6c7eafcf28a2da7e8bfd6814b4883bb752)
2025-10-13 18:24:49 +08:00
DokiDoki1103
e6d9a46b98
fix: 移除账户管理页面的横向滚动条
...
- 移除 .table-container 的 overflow-x: auto 样式
- 清理重复的样式定义
- 修复账户管理页面在某些情况下出现不必要横向滚动条的问题
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-10-12 20:49:00 +08:00
shaw
40b7c68694
fix: 修复账号过期时间的一系列bug
2025-10-12 18:35:05 +08:00
litongtongxue
c8c337099e
Merge upstream/main into feature/account-expiry-management
...
解决与 upstream/main 的代码冲突:
- 保留账户到期时间 (expiresAt) 功能
- 采用 buildProxyPayload() 函数重构代理配置
- 同步最新的 Droid 平台功能和修复
主要改动:
- AccountForm.vue: 整合到期时间字段和新的 proxy 处理方式
- 合并 upstream 的 Droid 多 API Key 支持等新特性
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-10-12 00:55:25 +08:00
shaw
26894f485b
feat: droid账号增加apikey数量显示
2025-10-11 23:05:48 +08:00
shaw
a6f5876eca
fix: 修复droid类型账号类型显示
2025-10-11 11:48:20 +08:00
shaw
6c2ef2eef3
fix: 修复droid账号更新丢失apikey的问题
2025-10-11 11:23:24 +08:00
shaw
19fa518e65
fix: 修复droid追加和代理代理IP提交异常的问题
2025-10-11 10:50:26 +08:00
litongtongxue
a82dcebd7b
feat: 添加账户订阅到期时间管理功能
...
## 新增功能
- 支持为 Claude 账户设置订阅到期时间
- 前端提供到期时间选择器(快捷选项 + 自定义日期)
- 账户列表显示到期状态(已过期/即将过期/永不过期)
- 新增独立的到期时间编辑弹窗组件
## 技术变更
- 后端新增 subscriptionExpiresAt 字段存储
- 前端使用 expiresAt 字段进行交互
- 支持创建、编辑、显示完整流程
## 包含文件
- src/routes/admin.js: POST/PUT 端点支持 expiresAt 字段
- src/services/claudeAccountService.js: 存储和返回到期时间
- web/admin-spa/src/components/accounts/AccountForm.vue: 表单添加到期时间选择
- web/admin-spa/src/views/AccountsView.vue: 列表显示和编辑功能
- web/admin-spa/src/components/accounts/AccountExpiryEditModal.vue: 新增编辑弹窗
- account_expire_feature.md: 代码评审报告和优化建议
## 注意事项
⚠️ 本次提交包含初步实现,详细的优化建议请查看 account_expire_feature.md
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-10-11 01:05:21 +08:00
shaw
1811290c0b
feat: 优化droid类型账号oauth流程
2025-10-10 15:36:50 +08:00
shaw
42db271848
feat: droid平台账户数据统计及调度能力
2025-10-10 15:13:45 +08:00
shaw
2fc84a6aca
feat: 新增Droid cli支持
2025-10-09 23:05:09 +08:00
iaineng
e88f07ca92
feat(ui): add OAuth usage display alongside Setup Token
...
Add OAuth usage visualization for Claude OAuth accounts while maintaining
existing Setup Token session window display. Accounts show different UI
based on authorization type detected via scopes.
Changes:
- Add loadClaudeUsage() for async OAuth usage data loading
- Add isClaudeOAuth() to detect auth type (checks user:profile + user:inference scopes)
- Add OAuth helpers: formatClaudeUsagePercent, getClaudeUsageWidth,
getClaudeUsageBarClass, formatClaudeRemaining
- Display three OAuth windows (5h, 7d, 7d-Opus) for OAuth accounts
- Maintain original session window display for Setup Token accounts
- Color-coded progress bars (blue < 60%, yellow 60-90%, red >= 90%)
- Update tooltip with OAuth documentation
- Remove duplicate Claude fallback branch
- Apply to desktop and mobile views
2025-09-30 22:52:08 +08:00
shaw
fcf54565ec
chore: 其他文件修改
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-09-30 11:25:43 +08:00
shaw
aca2b1cccb
feat: 账号列表支持批量删除
2025-09-28 21:43:57 +08:00
shaw
a12e076413
fix: 修复账号筛选平台是oai显示异常
2025-09-28 11:47:05 +08:00
shaw
ea28222c71
feat: 支持账号维度的数据统计
2025-09-27 22:55:06 +08:00
shaw
5e730db7f9
fix: Google icon问题修复
2025-09-27 20:02:55 +08:00
shaw
89829d7e57
feat: 账户管理增加分页和搜索
2025-09-27 17:26:49 +08:00
shaw
c142cbf9ea
style: oai会话窗口样式优化
2025-09-26 17:16:22 +08:00
shaw
fe3d94648d
fix: 优化codex使用量样式
2025-09-25 17:50:29 +08:00
shaw
4ceaa80cbe
feat: 适配codex用量数据-前端格式问题
2025-09-25 17:28:45 +08:00
shaw
c15ef0b6ae
feat: 适配codex用量数据
2025-09-25 17:23:52 +08:00
shaw
0ba048aced
feat: 优化专属账号删除逻辑
2025-09-23 15:48:38 +08:00
shaw
158a9b9a31
feat: 优化API Key批量创建和账户限流状态显示
...
- 添加 bedrockAccountId 和 rateLimitCost 字段到批量创建 API Key 功能
- 格式化 claudeAccountService 中的日志输出
- 改进账户视图中会话进度条样式,限流状态显示红色
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-09-14 11:59:09 +08:00
shaw
9c4dc714f8
Revert "Merge pull request #424 from Wangnov/feat/i18n"
...
This reverts commit 1d915d8327 , reversing
changes made to 009f7c84f6 .
2025-09-12 09:21:53 +08:00
Wangnov
97b94eeff9
feat: 完成web/admin-spa/src/components/apikeys的国际化并修复语法错误和警告
2025-09-12 00:03:05 +08:00