1. 29 Dec, 2025 1 commit
    • 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
  2. 28 Dec, 2025 3 commits
  3. 27 Dec, 2025 4 commits
    • IanShaw027's avatar
      feat(backend): 增强使用统计和API密钥功能 · 227d506c
      IanShaw027 authored
      - 优化使用统计处理逻辑
      - 增强API密钥仓储层功能
      - 改进账户使用服务
      - 完善API契约测试覆盖
      227d506c
    • daodao97's avatar
      feat: cc/codex/gemini 增加账号重试 · f0f920e4
      daodao97 authored
      f0f920e4
    • daodao97's avatar
      feat: cc/codex support account retry · 95583fce
      daodao97 authored
      95583fce
    • IanShaw's avatar
      feat(frontend): 前端界面优化与使用统计功能增强 (#46) · 254f1254
      IanShaw authored
      * feat(frontend): 前端界面优化与使用统计功能增强
      
      主要改动:
      
      1. 表格布局统一优化
         - 新增 TablePageLayout 通用布局组件
         - 统一所有管理页面的表格样式和交互
         - 优化 DataTable、Pagination、Select 等通用组件
      
      2. 使用统计功能增强
         - 管理端: 添加完整的筛选和显示功能
         - 用户端: 完善 API Key 列显示
         - 后端: 优化使用统计数据结构和查询
      
      3. 账户组件优化
         - 优化 AccountStatsModal、AccountUsageCell 等组件
         - 统一进度条和统计显示样式
      
      4. 其他改进
         - 完善中英文国际化
         - 统一页面样式和交互体验
         - 优化各视图页面的响应式布局
      
      * fix(test): 修复 stubUsageLogRepo.ListWithFilters 测试 stub
      
      测试用例 GET /api/v1/usage 返回 500 是因为 stub 方法未实现,
      现在正确返回基于 UserID 过滤的日志数据。
      
      * feat(frontend): 统一日期时间显示格式
      
      **主要改动**:
      1. 增强 utils/format.ts:
         - 新增 formatDateOnly() - 格式: YYYY-MM-DD
         - 新增 formatDateTime() - 格式: YYYY-MM-DD HH:mm:ss
      
      2. 全局替换视图中的格式化函数:
         - 移除各视图中的自定义 formatDate 函数
         - 统一导入使用 @/utils/format 中的函数
         - created_at/updated_at 使用 formatDateTime
         - expires_at 使用 formatDateOnly
      
      3. 受影响的视图 (8个):
         - frontend/src/views/user/KeysView.vue
         - frontend/src/views/user/DashboardView.vue
         - frontend/src/views/user/UsageView.vue
         - frontend/src/views/user/RedeemView.vue
         - frontend/src/views/admin/UsersView.vue
         - frontend/src/views/admin/UsageView.vue
         - frontend/src/views/admin/RedeemView.vue
         - frontend/src/views/admin/SubscriptionsView.vue
      
      **效果**:
      - 日期统一显示为 YYYY-MM-DD
      - 时间统一显示为 YYYY-MM-DD HH:mm:ss
      - 提升可维护性,避免格式不一致
      
      * fix(frontend): 补充遗漏的时间格式化统一
      
      **补充修复**(基于 code review 发现的遗漏):
      
      1. 增强 utils/format.ts:
         - 新增 formatTime() - 格式: HH:mm
      
      2. 修复 4 个遗漏的文件:
         - src/views/admin/UsersView.vue
           * 删除 formatExpiresAt(),改用 formatDateTime()
           * 修复订阅过期时间 tooltip 显示格式不一致问题
      
         - src/views/user/ProfileView.vue
           * 删除 formatMemberSince(),改用 formatDate(date, 'YYYY-MM')
           * 统一会员起始时间显示格式
      
         - src/views/user/SubscriptionsView.vue
           * 修改 formatExpirationDate() 使用 formatDateOnly()
           * 保留天数计算逻辑
      
         - src/components/account/AccountStatusIndicator.vue
           * 删除本地 formatTime(),改用 utils/format 中的统一函数
           * 修复 rate limit 和 overload 重置时间显示
      
      **验证**:
      - TypeScript 类型检查通过 ✓
      - 前端构建成功 ✓
      - 所有剩余的 toLocaleString() 都是数字格式化,属于正确用法 ✓
      
      **效果**:
      - 订阅过期时间统一为 YYYY-MM-DD HH:mm:ss
      - 会员起始时间统一为 YYYY-MM
      - 重置时间统一为 HH:mm
      - 消除所有不规范的原生 locale 方法调用
      254f1254
  4. 26 Dec, 2025 10 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
    • shaw's avatar
      fix: admin handlers 添加 DTO 转换修复 JSON 序列化 · 739d0ee6
      shaw authored
      修复 PR #36 合并后部分 admin handler 直接返回 service 层对象导致
      JSON 字段名为 PascalCase 而非期望的 snake_case 问题。
      
      修复内容:
      - account_handler: Refresh 接口添加 dto.AccountFromService
      - openai_oauth_handler: RefreshAccountToken/CreateAccountFromOAuth 添加 dto 转换
      - subscription_handler: BulkAssign 添加 dto.BulkAssignResultFromService
      - usage_handler: List 接口添加 dto.UsageLogFromService 转换
      - 新增 dto.BulkAssignResult 类型和对应的 mapper 函数
      739d0ee6
    • Forest's avatar
      refactor: 调整项目结构为单向依赖 · e5a77853
      Forest authored
      e5a77853
    • ianshaw's avatar
      fix(backend): 修复 rebase 后的代码集成问题 · 9780f0fd
      ianshaw authored
      - 更新 middleware import 路径到 internal/server/middleware
      - 修复 api_key_auth_google.go 使用正确的 service 类型
      - 更新 router.go 和 http.go 支持 Gemini v1beta 路由
      - 在 routes/gateway.go 中添加 Gemini v1beta API 端点
      - 在 routes/admin.go 中添加 Gemini OAuth 路由
      - 更新 wire.go 添加 GeminiOAuthService cleanup
      - 重新生成 wire_gen.go
      9780f0fd
    • ianshaw's avatar
      feat(backend): 添加 OAuth 能力查询接口,改进 OAuth 客户端选择逻辑 · 632318ad
      ianshaw authored
      Handler 改进:
      - 添加 GET /api/v1/admin/gemini/oauth/capabilities 接口
      - 简化 GenerateAuthURL,redirect_uri 由服务层决定
      
      Repository 改进:
      - ExchangeCode/RefreshToken 根据 oauthType 选择正确的 OAuth 客户端
      - Code Assist 始终使用内置客户端,AI Studio 使用用户配置的客户端
      632318ad
    • 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
      feat(backend): 添加 Gemini V1beta Handler 和路由 · 46cb82ba
      ianshaw authored
      - 新增 gemini_v1beta_handler.go: 代理原生 Google API 格式
      - 更新 gemini_oauth_handler.go: 移除 redirectUri,新增 oauthType
      - 更新 account_handler.go: 账户 Handler 增强
      - 更新 router.go: 注册 v1beta 路由
      - 更新 config.go: Gemini OAuth 通过环境变量配置
      - 更新 wire_gen.go: 依赖注入
      46cb82ba
    • ianshaw's avatar
      feat(backend): 完善 Gemini OAuth Token 处理 · 03a8ae62
      ianshaw authored
      - 修复 account_handler 中 token 字段类型转换(int64 转 string)
      - 增强 Account.GetCredential 支持多种数值类型(float64, int, json.Number 等)
      - 添加 Account.IsGemini() 方法用于平台判断
      - 优化 refresh_token 和 scope 的空值处理
      03a8ae62
    • ianshaw's avatar
      feat(handler): 添加 Gemini OAuth Handler 和完善依赖注入 · e36fb98f
      ianshaw authored
      - 新增 Gemini OAuth 授权处理器
      - 扩展账号和网关处理器支持 Gemini
      - 注册 Gemini 相关路由
      - 更新 Wire 依赖注入配置(所有层)
      - 更新 Docker Compose 配置
      e36fb98f
    • Forest's avatar
      refactor: 调整 server 目录结构 · 57fd1722
      Forest authored
      57fd1722
  5. 25 Dec, 2025 3 commits
    • Forest's avatar
      refactor: 自定义业务错误 · eeaff85e
      Forest authored
      eeaff85e
    • ianshaw's avatar
      feat(account): 优化批量更新实现,使用统一 SQL 合并 JSONB 字段 · 62ed5422
      ianshaw authored
      - 新增 BulkUpdate 仓储方法,使用单条 SQL 更新所有账户
      - credentials/extra 使用 COALESCE(...) || ? 合并,只更新传入的 key
      - name/proxy_id/concurrency/priority/status 只在提供时更新
      - 分组绑定仍逐账号处理(需要独立操作)
      - 前端优化:Base URL 留空则不修改,按勾选字段更新
      - 完善 i18n 文案:说明留空不修改、批量更新行为
      62ed5422
    • ianshaw's avatar
      feat(account): 添加批量编辑账户凭据功能并优化 CRS 同步 · 2e76302a
      ianshaw authored
      - 新增批量更新账户凭据接口(account_uuid/org_uuid/intercept_warmup_requests)
      - 新增前端批量编辑模态框组件
      - 优化 CRS 同步逻辑,改进 extra 字段处理
      - 优化 CRS 同步 UI,添加更详细的结果展示
      - 完善国际化文案(中英文)
      2e76302a
  6. 24 Dec, 2025 6 commits
  7. 23 Dec, 2025 4 commits
    • dexcoder6's avatar
      feat: 添加用户余额充值/退款功能 (#17) · 50dba656
      dexcoder6 authored
      ## 功能特性
      
      ### 前端
      - 在用户列表操作列添加充值和退款按钮
      - 实现充值/退款对话框,支持输入金额和备注
      - 从编辑用户表单中移除余额字段,防止直接修改
      - 添加余额不足验证,实时显示操作后余额
      - 优化备注提示词,提供多种场景示例
      
      ### 后端
      - 为 redeem_codes 表添加 notes 字段(迁移文件)
      - 在 UpdateUserBalance 接口添加 notes 参数支持
      - 添加余额验证:金额必须大于0,操作后余额不能为负
      - UpdateUser 接口移除 balance 字段处理,防止误操作
      - 完整的审计日志和缓存管理
      
      ## 安全保护
      
      - 前端:余额不足时禁用提交按钮,实时提示
      - 后端:双重验证(输入金额 > 0 + 结果余额 >= 0)
      - 权限:仅管理员可访问(AdminAuth 中间件)
      - 审计:所有操作记录到 redeem_codes 表
      
      ## 修改文件
      
      后端:
      - backend/migrations/004_add_redeem_code_notes.sql
      - backend/internal/model/redeem_code.go
      - backend/internal/service/admin_service.go
      - backend/internal/handler/admin/user_handler.go
      
      前端:
      - frontend/src/views/admin/UsersView.vue
      - frontend/src/api/admin/users.ts
      - frontend/src/i18n/locales/zh.ts
      - frontend/src/i18n/locales/en.ts
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code
      
      )
      Co-authored-by: default avatarClaude Sonnet 4.5 <noreply@anthropic.com>
      50dba656
    • shaw's avatar
      feat: 账号管理新增使用统计功能 · 7b9c3f16
      shaw authored
      - 新增账号统计弹窗,展示30天使用数据
      - 显示总费用、请求数、日均费用、日均请求等汇总指标
      - 显示今日概览、最高费用日、最高请求日
      - 包含费用与请求趋势图(双Y轴)
      - 复用模型分布图组件展示模型使用分布
      - 显示实际扣费和标准计费(标准计费以较淡颜色显示)
      7b9c3f16
    • dexcoder6's avatar
      feat: 增强用户管理功能,添加用户名、微信号和备注字段 · 0b8e84f9
      dexcoder6 authored
      - 新增User模型字段:username(用户名)、wechat(微信号)、notes(备注)
      - 扩展用户搜索功能,支持通过用户名和微信号搜索
      - 添加用户个人资料更新功能,用户可自行编辑用户名和微信号
      - 管理员用户列表新增用户名、微信号、备注显示列
      - 备注字段仅对管理员可见,增强数据安全性
      - 完善中英文国际化翻译
      - 修复国际化文件中重复属性的TypeScript错误
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code
      
      )
      Co-Authored-By: default avatarClaude Sonnet 4.5 <noreply@anthropic.com>
      0b8e84f9
    • shaw's avatar
      fix: 修复golangci-lint检查问题 · eb55947e
      shaw authored
      - 移除OpenAIGatewayHandler中未使用的userService字段
      - 将账号类型判断的if-else链改为switch语句
      eb55947e
  8. 22 Dec, 2025 1 commit
  9. 20 Dec, 2025 6 commits
  10. 19 Dec, 2025 2 commits