1. 31 Dec, 2025 4 commits
    • IanShaw027's avatar
      fix(upstream): 完善边界检查和 thinking block 处理 · c1e25b7e
      IanShaw027 authored
      基于 Gemini + Codex 审查结果的修复:
      
      1. thinking block dummy signature 填充
         - Gemini 模型现在会填充 dummyThoughtSignature
         - 与 tool_use 处理逻辑保持一致
      
      2. 边界检查增强
         - buildTools: 跳过空工具名称
         - buildTools: 为 nil schema 提供默认值
         - convertClaudeToolsToGeminiTools: 为 nil params 提供默认值
      
      3. 防止下游 API 验证错误
         - 确保所有工具都有有效的 parameters
         - 默认 schema: {type: 'object', properties: {}}
      
      审查报告:Gemini 评分 95%, Codex 评分 8.2/10
      c1e25b7e
    • IanShaw027's avatar
      fix(upstream): 支持 Claude custom 类型工具 (MCP) 格式 · 15e676e9
      IanShaw027 authored
      - ClaudeTool 结构体增加 Type 和 Custom 字段
      - buildTools 函数支持从 custom 字段读取 input_schema
      - convertClaudeToolsToGeminiTools 函数支持 MCP 工具格式
      - 修复 Antigravity upstream error 400: JSON schema invalid
      
      修复 Issue 0.2: tools.X.custom.input_schema 验证错误
      15e676e9
    • yangjianbo's avatar
      perf(网关): 实现上游账号连接池隔离 · d1c98896
      yangjianbo authored
      新增隔离策略与连接池缓存回收
      
      连接池大小跟随账号并发并处理代理切换
      
      同步配置默认值与示例并补充测试
      d1c98896
    • yangjianbo's avatar
      perf(后端): 完成性能优化与连接池配置 · 7efa8b54
      yangjianbo authored
      新增 DB/Redis 连接池配置与校验,并补充单测
      
      网关请求体大小限制与 413 处理
      
      HTTP/req 客户端池化并调整上游连接池默认值
      
      并发槽位改为 ZSET+Lua 与指数退避
      
      用量统计改 SQL 聚合并新增索引迁移
      
      计费缓存写入改工作池并补测试/基准
      
      测试: 在 backend/ 下运行 go test ./...
      7efa8b54
  2. 29 Dec, 2025 4 commits
    • song's avatar
      fix(antigravity): 修复 429 限流处理逻辑 · caa8c47b
      song authored
      - 只有 5 次重试全部失败后才标记账户限流
      - 使用 Gemini 格式解析 429 响应中的重试时间
      - Claude 模型无重试时间时默认 1 分钟,Gemini 默认 5 分钟
      - 添加生图模型映射 gemini-3-pro-image-preview
      caa8c47b
    • song's avatar
      fix: 修复 golangci-lint 检查错误 · 21a04332
      song authored
      - SA1029: 创建 ctxkey 包定义类型安全的 context key
      - ST1005: 错误字符串首字母改小写
      - errcheck: 显式忽略 bytes.Buffer.Write 返回值
      - 修复单元测试中 GatewayService 缺少 cfg 字段的问题
      21a04332
    • song's avatar
      feat(antigravity): 添加专用路由,支持仅使用 antigravity 账户 · b31bfd53
      song authored
      添加 /antigravity/v1/* 和 /antigravity/v1beta/* 路由:
      - 通过 ForcePlatform 中间件强制使用 antigravity 平台
      - 跳过混合调度逻辑,仅调度 antigravity 账户
      - 支持按分组优先查找,找不到时回退查询全部 antigravity 账户
      
      修复 context key 类型不匹配问题:
      - middleware 和 service 统一使用字符串常量 "ctx_force_platform"
      - 解决 Go context.Value() 类型+值匹配导致的读取失败
      
      其他改动:
      - 嵌入式前端中间件白名单添加 /antigravity/ 路径
      - e2e 测试 Gemini 端点 URL 添加 endpointPrefix 支持
      b31bfd53
    • song's avatar
      feat(antigravity): 添加混合调度可选功能 · 1ad29032
      song authored
      - 后端:账户模型添加 IsMixedSchedulingEnabled() 方法,读取 extra.mixed_scheduling
      - 后端:gateway_service 和 gemini_messages_compat_service 支持混合调度逻辑
      - 后端:分组创建支持指定 platform 参数
      - 前端:账户创建/编辑弹窗添加混合调度开关(仅 antigravity 账户显示)
      - 前端:混合调度开关添加问号图标和 tooltip 说明
      - 前端:GroupSelector 支持根据 mixedScheduling 属性过滤分组
      - 前端:分组创建支持选择 platform
      - 测试:e2e 测试添加 ENDPOINT_PREFIX 环境变量支持混合/隔离模式测试
      - 测试:删除过时的 Claude signature 测试用例
      1ad29032
  3. 28 Dec, 2025 1 commit
  4. 27 Dec, 2025 1 commit
  5. 26 Dec, 2025 7 commits
    • IanShaw027's avatar
      fix(backend): 适配重构后的架构修复 Gemini OAuth 集成 · 9db52838
      IanShaw027 authored
      ## 主要修改
      
      1. **移除 model 包引用**
         - 删除所有 `internal/model` 包的 import
         - 使用 service 包中的类型定义(Account, Platform常量等)
      
      2. **修复类型转换**
         - JSONB → map[string]any
         - 添加 mergeJSONB 辅助函数
         - 添加 Account.IsGemini() 方法
      
      3. **更新中间件调用**
         - GetUserFromContext → GetAuthSubjectFromContext
         - 适配新的并发控制签名(传递 ID 和 Concurrency 而不是完整对象)
      
      4. **修复 handler 层**
         - 更新 gemini_v1beta_handler.go
         - 修正 billing 检查和 usage 记录
      
      ## 影响范围
      - backend/internal/service/gemini_*.go
      - backend/internal/service/account_test_service.go
      - backend/internal/service/crs_sync_service.go
      - backend/internal/handler/gemini_v1beta_handler.go
      - backend/internal/handler/gateway_handler.go
      - backend/internal/handler/admin/account_handler.go
      9db52838
    • ianshaw's avatar
      feat(service): 改进 Gemini OAuth 服务层,区分 Code Assist 和 AI Studio 客户端 · 456e8984
      ianshaw authored
      OAuth 服务改进:
      - 添加 GetOAuthConfig 返回 AI Studio OAuth 可用性
      - Code Assist 强制使用内置 Gemini CLI 客户端
      - AI Studio OAuth 要求用户配置自定义 OAuth 客户端
      - ExchangeCode/RefreshToken 接口添加 oauthType 参数
      - 添加 unauthorized_client 错误的向后兼容重试逻辑
      
      兼容层改进:
      - 403 重试逻辑仅对 Code Assist OAuth 生效
      - 添加 insufficient-scope 错误检测,避免无效重试
      - 上游错误消息脱敏处理(隐藏 API key 等敏感信息)
      - 改进错误提示,显示更多上游错误详情
      456e8984
    • ianshaw's avatar
      fix(backend): 移除对已删除 ports 包的依赖 · 85fd1e4a
      ianshaw authored
      适配 main 分支的 ports 目录删除重构:
      - 将 ports 包中的接口移至 service 包
      - 更新 repository 层的导入路径
      85fd1e4a
    • ianshaw's avatar
      fix(backend): 修复 golangci-lint 报告的格式和代码规范问题 · 6682d06c
      ianshaw authored
      - gofmt: 修复 account_handler.go, models.go, gemini_messages_compat_service.go 的格式
      - staticcheck ST1005: 将 error strings 改为小写开头
      6682d06c
    • ianshaw's avatar
      fix(backend): 修复 golangci-lint 报告的问题 · efa470ef
      ianshaw authored
      - gofmt: 修复代码格式问题
      - errcheck: 处理 WriteString 和 Close 返回值
      - staticcheck: 错误信息改为小写开头
      - staticcheck: 移除无效的 nil 检查
      - staticcheck: 使用 append 替换循环
      - staticcheck: 使用无条件的 TrimPrefix
      - ineffassign: 移除无效赋值
      - unused: 移除未使用的 geminiOAuthService 字段
      - 重新生成 wire_gen.go
      efa470ef
    • ianshaw's avatar
      feat(backend): 实现 Gemini AI Studio OAuth 和消息兼容服务 · b2d71da2
      ianshaw authored
      - gemini_oauth_service.go: 新增 AI Studio OAuth 类型支持
      - gemini_token_provider.go: Token 提供器增强
      - gemini_messages_compat_service.go: 支持 AI Studio 端点
      - account_test_service.go: Gemini 账户可用性检测
      - gateway_service.go: 网关服务适配
      - openai_gateway_service.go: OpenAI 兼容层调整
      b2d71da2
    • ianshaw's avatar
      feat(service): 实现 Gemini OAuth 和 Token 管理服务 · dc109827
      ianshaw authored
      - 实现 OAuth 授权流程服务
      - 添加 Token 提供者和自动刷新机制
      - 实现 Gemini Messages API 兼容层
      - 更新服务容器注册
      dc109827