liangjie.wanglj
b9d2e855f3
claude console类型中增加claude-haiku-4-5-20251001、GLM、Kimi、Qwen模型支持;增加计费消息通知;Claude console 及 ccr模型匹配大小写不敏感
2025-10-16 09:53:42 +08:00
mrlitong
1f61478fbc
refactor: 优化账户过期检查逻辑和代码一致性
...
## 主要改进
### 1. 添加缺失的过期检查方法
- 在 `claudeConsoleAccountService` 中添加 `isSubscriptionExpired()` 方法
- 在 `ccrAccountService` 中添加 `isSubscriptionExpired()` 方法
- 与其他 7 个账户服务保持一致的实现方式
### 2. 统一过期检查逻辑
- 重构 `unifiedClaudeScheduler` 中的 5 处手动日期检查代码
- 统一调用服务层的 `isSubscriptionExpired()` 方法
- 消除重复代码,提升可维护性
### 3. 统一字段映射顺序
- 调整 Claude 账户更新端点的 `mapExpiryField()` 调用时机
- 与其他账户类型保持一致的处理顺序
- 提升代码可读性和一致性
## 技术细节
**修改文件**:
- `src/services/claudeConsoleAccountService.js`: 添加 `isSubscriptionExpired()`
- `src/services/ccrAccountService.js`: 添加 `isSubscriptionExpired()`
- `src/services/unifiedClaudeScheduler.js`: 5 处调用统一为服务方法
- `src/routes/admin.js`: 统一字段映射顺序
**改进效果**:
- ✅ 代码一致性提升:所有账户服务统一实现
- ✅ 可维护性提升:过期逻辑集中管理
- ✅ 减少重复代码:消除 4 处重复实现
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-10-14 08:35:13 +00:00
mrlitong
cbc3a83f11
refactor: 统一账户过期时间字段映射和检查逻辑
...
主要改进:
1. 创建 mapExpiryField() 工具函数统一处理前后端字段映射(expiresAt -> subscriptionExpiresAt)
2. 统一 subscriptionExpiresAt 初始值为 null(替代空字符串)
3. 规范过期检查方法名为 isSubscriptionExpired(),返回 true 表示已过期
4. 优化过期检查条件判断,只检查 null 而非空字符串
5. 补充 OpenAI-Responses 和调度器中缺失的过期检查逻辑
6. 添加代码评审文档记录未修复问题
影响范围:
- 所有 9 种账户服务的过期字段处理
- admin.js 中所有账户更新路由
- 统一调度器的过期账户过滤逻辑
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-10-14 08:04:05 +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
shaw
a67c34bee1
fix: 修复claude SSE捕获usage问题
2025-10-12 23:05:48 +08:00
shaw
6f6c274877
fix: 继续修复PR-541遗留的系列bug
2025-10-12 22:13:38 +08:00
wfunc
a3666e3a3e
feat: add rate limit recovery webhook notifications
...
添加限流恢复的 webhook 通知功能,当账户从限流状态自动恢复时发送通知。
主要改进:
1. **新增通知类型** (webhookConfigService.js)
- 添加 `rateLimitRecovery` 通知类型
- 在配置获取和保存时自动合并默认通知类型
- 确保新增的通知类型有默认值
2. **增强限流清理服务** (rateLimitCleanupService.js)
- 改进自动停止账户的检测逻辑
- 在 `finally` 块中确保 `clearedAccounts` 列表被重置,避免重复通知
- 对自动停止的账户显式调用 `removeAccountRateLimit`
- 为 Claude 和 Claude Console 账户添加 `autoStopped` 和 `needsAutoStopRecovery` 检测
3. **改进 Claude Console 限流移除** (claudeConsoleAccountService.js)
- 检测并恢复因自动停止而禁用调度的账户
- 清理过期的 `rateLimitAutoStopped` 标志
- 增加详细的日志记录
4. **前端 UI 支持** (SettingsView.vue)
- 在 Webhook 设置中添加"限流恢复"通知类型选项
- 更新默认通知类型配置
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-10-02 23:54:30 +08:00
shaw
08946c67ea
feat: 新增 OpenAI-Responses 账户管理功能和独立自动停止标记机制
...
## 功能新增
- 实现 OpenAI-Responses 账户服务(openaiResponsesAccountService.js)
- 支持使用账户内置 API Key 进行请求转发
- 实现每日额度管理和重置机制
- 支持代理配置和优先级设置
- 实现 OpenAI-Responses 中继服务(openaiResponsesRelayService.js)
- 处理请求转发和响应流处理
- 自动记录使用统计信息
- 支持流式和非流式响应
- 新增管理界面的 OpenAI-Responses 账户管理功能
- 完整的 CRUD 操作支持
- 实时额度监控和状态管理
- 支持手动重置限流和每日额度
## 架构改进
- 引入独立的自动停止标记机制,区分不同原因的自动停止
- rateLimitAutoStopped: 限流自动停止
- fiveHourAutoStopped: 5小时限制自动停止
- tempErrorAutoStopped: 临时错误自动停止
- quotaAutoStopped: 额度耗尽自动停止
- 修复手动修改调度状态时自动恢复的问题
- 统一清理逻辑,防止状态冲突
## 其他优化
- getAccountUsageStats 支持不同账户类型参数
- 统一调度器支持 OpenAI-Responses 账户类型
- WebHook 通知增强,支持新账户类型的事件
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-09-10 15:41:52 +08:00
shaw
e824858d60
feat: claude账户支持使用统一的客户端标识
2025-09-08 11:35:44 +08:00
sususu
4cc937a144
feat(Claude Console): 添加Claude Console账号每日配额
...
1. 额度检查优先级更高:即使不启用限流机制,超额仍会禁用账户
2. 状态会被覆盖:quota_exceeded 会覆盖 rate_limited
3. 两种恢复时间:
- 限流恢复:分钟级(如60分钟)
- 额度恢复:天级(第二天重置)
4. 独立控制:
- rateLimitDuration = 0:只管理额度,忽略429
- rateLimitDuration > 0:同时管理限流和额度
2025-09-05 14:58:59 +08:00
shaw
5cfa3cc72f
feat: 添加精确的账户费用计算和时区支持
...
- 实现基于模型使用量的精确每日费用计算
- 添加 dateHelper 工具支持时区转换
- 移除未使用的 webhook 配置代码
- 清理环境变量和配置文件中的 webhook 相关设置
- 优化前端费用显示,使用后端精确计算的数据
- 添加 DEBUG_HTTP_TRAFFIC 调试选项支持
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-09-01 11:29:16 +08:00
shaw
e84c6a5555
feat: 实现基于费用的速率限制功能
...
- 新增 rateLimitCost 字段,支持按费用进行速率限制
- 新增 weeklyOpusCostLimit 字段,支持 Opus 模型周费用限制
- 优化速率限制逻辑,支持费用、请求数、token多维度控制
- 更新前端界面,添加费用限制配置选项
- 增强账户管理功能,支持费用统计和限制
- 改进 Redis 数据模型,支持费用计数器
- 优化价格计算服务,支持更精确的成本核算
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-31 17:27:37 +08:00
shaw
b426a759a8
feat: 支持后台配置webhook
2025-08-23 20:20:32 +08:00
shaw
cb29b3f7e4
fix: 代理ip使用重构为统一方法
2025-08-20 23:21:32 +08:00
shaw
a45c832278
feat: 统一代理配置管理,支持IPv4/IPv6协议族选择
...
- 新增统一代理工具 ProxyHelper,支持 SOCKS5/HTTP/HTTPS 代理
- 添加 IPv4/IPv6 协议族配置选项,默认使用 IPv4 确保兼容性
- 移除 OpenAI 路由中硬编码的 family: 4 限制
- 统一 8 个服务文件中的代理创建逻辑,避免重复维护
- 支持 OAuth 和 token 交换过程中的代理使用
- 新增配置项:PROXY_USE_IPV4(默认 true)
- 向后兼容:现有配置无需手动更新
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-20 22:36:34 +08:00
shaw
3bcdb511fe
feat: 实现多服务账户缓存优化系统
...
- 添加通用LRU缓存工具类,支持过期时间和内存限制
- 实现缓存监控系统,提供统计和健康检查接口
- 为所有账户服务(Claude、Gemini、OpenAI、Bedrock、Claude Console)添加缓存层
- 优化账户选择性能,减少Redis查询频率
- 添加缓存统计监控端点 /admin/cache/stats
性能提升:
- 账户列表查询从O(n)优化到O(1)
- 减少90%以上的Redis查询
- 响应时间降低50ms以上
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-17 15:38:49 +08:00
shaw
043e3768ab
fix: 修复每次请求都要重新生成秘钥的问题
2025-08-16 23:49:19 +08:00
iRubbish
c9b0c3eb82
feat: 增强 webhook 通知功能,支持手动禁用账号通知
...
- 添加手动禁用账号时的 webhook 通知功能
- 支持所有账号类型:Claude OAuth、Claude Console、Gemini
- 新增错误代码:MANUALLY_DISABLED 系列
- 更新 README.md 文档,添加完整的 webhook 配置说明
- 包含企业微信配置示例和测试方法
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-14 18:28:48 +08:00
Wesley Liddick
1144b9b5ff
Merge pull request #246 from iRubbish/feat/webhook-account-notification
...
feat: 添加账号禁用异常状态 Webhook 通知功能 (已格式化)
2025-08-14 14:31:14 +08:00
iRubbish
2b77fdc06c
fix: 修复 ESLint 代码质量问题
...
- 修复正则表达式中不必要的转义字符
- 使用对象解构优化代码风格
- 修复未使用变量的命名规范
- 确保所有修改文件通过 ESLint 检查
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-14 14:14:01 +08:00
weidian
e01e539108
feat: 添加账号异常状态 Webhook 通知功能
...
## 功能概述
- 新增账号禁用/异常状态的 Webhook 实时通知机制
- 支持 Claude OAuth、Claude Console、Gemini 三种平台的账号监控
- 提供完整的 Webhook 管理 API 和配置选项
## 主要变更
### 新增文件
- `src/utils/webhookNotifier.js`: Webhook 通知核心服务
- `src/routes/webhook.js`: Webhook 管理 API 路由
### 功能集成
- Claude OAuth 账号:unauthorized 状态 + token 刷新错误通知
- Claude Console 账号:blocked 状态通知
- Gemini 账号:token 刷新错误通知
### 配置支持
- 新增环境变量:WEBHOOK_ENABLED, WEBHOOK_URLS, WEBHOOK_TIMEOUT, WEBHOOK_RETRIES
- 支持多个 Webhook URL 并发通知
- 自动重试机制(指数退避)+ 超时保护
### 管理端点
- POST /admin/webhook/test: 测试连通性
- POST /admin/webhook/test-notification: 发送测试通知
- GET /admin/webhook/config: 查看配置信息
## 通知格式
```json
{
"type": "account_anomaly",
"data": {
"accountId": "uuid",
"accountName": "账号名称",
"platform": "claude-oauth|claude-console|gemini",
"status": "unauthorized|blocked|error",
"errorCode": "CLAUDE_OAUTH_UNAUTHORIZED",
"reason": "具体异常原因",
"timestamp": "2025-01-13T10:30:00.000Z"
}
}
```
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-13 17:52:46 +08:00
wt
ab02acd008
Prettier format
2025-08-13 15:04:47 +08:00
wt
f9e8157e07
Fix: Claude Console 账户的限流开关
2025-08-13 11:24:20 +08:00
wt
6dfaf637aa
feat: 新增 Claude Console 账户限流机制开关
2025-08-12 15:48:41 +08:00
千羽
8a74bf5afe
refactor: standardize code formatting and linting configuration
...
- Replace .eslintrc.js with .eslintrc.cjs for better ES module compatibility
- Add .prettierrc configuration for consistent code formatting
- Update package.json with new lint and format scripts
- Add nodemon.json for development hot reloading configuration
- Standardize code formatting across all JavaScript and Vue files
- Update web admin SPA with improved linting rules and formatting
- Add prettier configuration to web admin SPA
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-07 18:19:31 +09:00
andersonby
e553734e42
chore: update user agent version to 1.0.69 in claudeConsoleAccountService and claudeConsoleRelayService
2025-08-07 00:53:14 +08:00
KevinLiao
3c797a85e0
feat: Claude Console账号增强,升级模型支持列表为模型映射表!
2025-07-30 23:13:59 +08:00
KevinLiao
34dca961ef
fix: 1. 修复调度优先级以及手动禁止调度逻辑的问题
...
2. 优化列表优先级显示
2025-07-30 09:30:11 +08:00
KevinLiao
89f9f48576
fix: 完成调度优先级逻辑的处理
2025-07-30 08:56:42 +08:00
KevinLiao
fddd5ee3e9
feat: 新增标准Claude Console API账号支持
2025-07-30 08:19:44 +08:00