shaw
|
74e05b83ea
|
fix(ratelimit): 修复 OpenAI 账号限流倒计时计算错误
- 解析 x-codex-* 响应头获取正确的重置时间
- 7d 限制用尽时使用 codex_7d_reset_after_seconds
- 提取 Normalize() 方法统一窗口规范化逻辑
|
2026-01-25 13:32:08 +08:00 |
|
shaw
|
a652b513d3
|
fix: handle 400 error for disabled organization
|
2026-01-19 10:54:40 +08:00 |
|
yangjianbo
|
ef5a41057f
|
feat(usage): 添加清理任务与统计过滤
|
2026-01-18 10:52:18 +08:00 |
|
wfunc
|
452fa53c0d
|
feat: Claude Sonnet 429 仅限模型限流
|
2026-01-16 13:03:04 +08:00 |
|
yangjianbo
|
5b37e9aea4
|
fix(OAuth缓存): 修复缓存键冲突、401强制刷新及Redis降级处理
- Gemini 缓存键统一增加 gemini: 前缀,避免与其他平台命名空间冲突
- OAuth 账号 401 错误时设置 expires_at=now 并持久化,强制下次请求刷新 token
- Redis 锁获取失败时降级为无锁刷新,仅在 token 接近过期时执行,并检查 ctx 取消状态
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-15 19:08:07 +08:00 |
|
yangjianbo
|
1820389a05
|
feat(网关): 引入 OpenAI/Claude OAuth token 缓存
新增 OpenAI/Claude TokenProvider 与缓存键生成
扩展 OAuth 缓存失效覆盖更多平台
统一 OAuth 缓存前缀与依赖注入
|
2026-01-15 18:27:06 +08:00 |
|
yangjianbo
|
90bce60b85
|
feat: merge dev
|
2026-01-15 15:14:44 +08:00 |
|
yangjianbo
|
a458e684bc
|
fix(认证): OAuth 401 直接标记错误状态
- OAuth 401 清理缓存并设置错误状态
- 移除 oauth_401_cooldown_minutes 配置及示例
- 更新 401 相关单测
破坏性变更: OAuth 401 不再临时不可调度,需手动恢复
|
2026-01-15 15:06:34 +08:00 |
|
yangjianbo
|
daf10907e4
|
fix(认证): 修复 OAuth token 缓存失效与 401 处理
新增 token 缓存失效接口并在刷新后清理
401 限流支持自定义规则与可配置冷却时间
补齐缓存失效与 401 处理测试
测试: make test
|
2026-01-14 15:55:44 +08:00 |
|
Wesley Liddick
|
465ba76788
|
Merge pull request #250 from IanShaw027/fix/custom-error-codes-disable-scheduling
fix(gateway): 自定义错误码触发停止调度
|
2026-01-12 15:26:14 +08:00 |
|
ianshaw
|
6dcb27632e
|
fix(gateway): 自定义错误码触发停止调度
- 修改 HandleUpstreamError 逻辑,启用自定义错误码时所有在列表中的错误码都会停止调度
- 添加 handleCustomErrorCode 函数处理自定义错误码的账号停用
- 前端添加 429/529 错误码的警告提示,因为这些错误码已有内置处理机制
- 更新 EditAccountModal、CreateAccountModal、BulkEditAccountModal 的错误码添加逻辑
|
2026-01-11 22:20:02 -08:00 |
|
ianshaw
|
2a0758bdfe
|
feat(gateway): 添加流超时处理机制
- 添加 StreamTimeoutSettings 配置结构体和系统设置
- 实现 TimeoutCounterCache Redis 计数器用于累计超时次数
- 在 RateLimitService 添加 HandleStreamTimeout 方法
- 在 gateway_service、openai_gateway_service、antigravity_gateway_service 中调用超时处理
- 添加后端 API 端点 GET/PUT /admin/settings/stream-timeout
- 添加前端配置界面到系统设置页面
- 支持配置:启用开关、超时阈值、处理方式、暂停时长、触发阈值、阈值窗口
默认配置:
- 启用:true
- 超时阈值:60秒
- 处理方式:临时不可调度
- 暂停时长:5分钟
- 触发阈值:3次
- 阈值窗口:10分钟
|
2026-01-11 21:54:52 -08:00 |
|
IanShaw027
|
7ebca553ef
|
feat(ops): 实现上游错误事件记录与查询功能
**新增功能**:
- 新建ops_upstream_error_events表存储上游服务错误详情
- 支持记录上游429/529/5xx错误的详细上下文信息
- 提供按时间范围查询上游错误事件的API
**后端改动**:
1. 模型层(ops_models.go, ops_port.go):
- 新增UpstreamErrorEvent结构体
- 扩展Repository接口支持上游错误事件CRUD
2. 仓储层(ops_repo.go):
- 实现InsertUpstreamErrorEvent写入上游错误
- 实现GetUpstreamErrorEvents按时间范围查询
3. 服务层(ops_service.go, ops_upstream_context.go):
- ops_service: 新增GetUpstreamErrorEvents查询方法
- ops_upstream_context: 封装上游错误上下文构建逻辑
4. Handler层(ops_error_logger.go):
- 新增GetUpstreamErrorsHandler处理上游错误查询请求
5. Gateway层集成:
- antigravity_gateway_service.go: 429/529错误时记录上游事件
- gateway_service.go: OpenAI 429/5xx错误时记录
- gemini_messages_compat_service.go: Gemini 429/5xx错误时记录
- openai_gateway_service.go: OpenAI 429/5xx错误时记录
- ratelimit_service.go: 429限流错误时记录
**数据记录字段**:
- request_id: 关联ops_logs主记录
- platform/model: 上游服务标识
- status_code/error_message: 错误详情
- request_headers/response_body: 调试信息(可选)
- created_at: 错误发生时间
|
2026-01-11 15:30:27 +08:00 |
|
Song Siyu
|
7d1fe818be
|
feat: antigravity 配额域限流 + SSE 上限 (#222)
* fix: 添加 gemini-3-flash 前缀映射支持 gemini-3-flash-preview
* feat(antigravity): 增强请求参数和注入 Antigravity 身份 system prompt
* feat: antigravity 配额域限流
* chore: 调整 SSE 单行上限到 25MB
* chore: 提升 SSE 单行上限到 40MB
|
2026-01-09 22:00:14 +08:00 |
|
IanShaw027
|
a185ad1144
|
feat(gemini): 完善 Gemini OAuth 配额系统和用量显示
主要改动:
- 后端:重构 Gemini 配额服务,支持多层级配额策略(GCP Standard/Free, Google One, AI Studio, Code Assist)
- 后端:优化 OAuth 服务,增强 tier_id 识别和存储逻辑
- 后端:改进用量统计服务,支持不同平台的配额查询
- 后端:优化限流服务,增加临时解除调度状态管理
- 前端:统一四种授权方式的用量显示格式和徽标样式
- 前端:增强账户配额信息展示,支持多种配额类型
- 前端:改进创建和重新授权模态框的用户体验
- 国际化:完善中英文配额相关文案
- 移除 CHANGELOG.md 文件
测试:所有单元测试通过
|
2026-01-04 15:36:00 +08:00 |
|
ianshaw
|
09da6904f5
|
feat(admin): 添加临时不可调度功能
当账号触发特定错误码和关键词匹配时,自动临时禁用调度:
后端:
- 新增 TempUnschedCache Redis 缓存层
- RateLimitService 支持规则匹配和状态管理
- 添加 GET/DELETE /accounts/:id/temp-unschedulable API
- 数据库迁移添加 temp_unschedulable_until/reason 字段
前端:
- 账号状态指示器显示临时不可调度状态
- 新增 TempUnschedStatusModal 详情弹窗
- 创建/编辑账号时支持配置规则和预设模板
- 完整的中英文国际化支持
|
2026-01-03 06:34:00 -08:00 |
|
IanShaw027
|
1d5e05b8ca
|
fix: 修复 P0 安全和并发问题
- 修复敏感信息泄露:移除 Drive API 完整响应体打印,只记录状态码
- 修复并发安全问题:升级为 RWMutex,读写分离提升性能
- 修复资源泄漏风险:使用 defer 确保 resp.Body 正确关闭
|
2026-01-01 15:35:08 +08:00 |
|
IanShaw027
|
8181746695
|
refactor(frontend): 优化 Gemini 配额显示,参考 Antigravity 样式
- 简化标签:将 "RPD Pro/Flash" 改为 "Pro/Flash",避免文字截断
- 添加账号类型徽章(Free/Pro/Ultra),带颜色区分
- 添加帮助图标(?),悬停显示限流政策和官方文档链接
- 重构显示布局:账号类型 + 两行配额(Pro/Flash)
- 移除冗余的 AccountQuotaInfo 组件调用
|
2026-01-01 08:29:57 +08:00 |
|
IanShaw027
|
06d483fa8d
|
feat(backend): implement gemini quota simulation and rate limiting
- feat: add local quota tracking for gemini tiers (Legacy/Pro/Ultra)
- feat: implement PreCheckUsage in RateLimitService
- feat: align gemini daily reset window with PST
- fix: sticky session fallback logic
|
2026-01-01 04:29:22 +08:00 |
|
Wei Shaw
|
a1540e27c2
|
feat: 修复 OpenAI 402 报错自动切换问题
|
2025-12-31 11:46:53 +08:00 |
|
Forest
|
e5a77853b0
|
refactor: 调整项目结构为单向依赖
|
2025-12-26 16:45:40 +08:00 |
|
Forest
|
f51ad2e126
|
refactor: 删除 ports 目录
|
2025-12-25 17:15:01 +08:00 |
|
Forest
|
836c4dda2b
|
refactor: 重命名 go module
|
2025-12-24 21:07:21 +08:00 |
|
Forest
|
e99b344b2b
|
refactor(backend): 引入端口接口模式
|
2025-12-19 21:26:19 +08:00 |
|
shaw
|
642842c29e
|
First commit
|
2025-12-18 13:50:39 +08:00 |
|