"backend/vscode:/vscode.git/clone" did not exist on "14a3694a9af4032b74c830c7e89afe121b731c63"
  1. 01 Jan, 2026 3 commits
    • IanShaw027's avatar
      test(gemini): 添加 Drive API 和 OAuth 服务单元测试 · 48764e15
      IanShaw027 authored
      - 新增 drive_client_test.go:Drive API 客户端单元测试
      - 新增 gemini_oauth_service_test.go:OAuth 服务单元测试
      - 重构 account_handler.go:改进 RefreshTier API 实现
      - 优化 drive_client.go:增强错误处理和重试逻辑
      - 完善 repository 和 service 层:支持批量 tier 刷新
      - 更新迁移文件编号:017 -> 024(避免冲突)
      48764e15
    • ianshaw's avatar
      feat(migrations): 改进校验和错误提示和文档 · eee5c0ac
      ianshaw authored
      - 增强迁移校验和不匹配的错误信息,提供具体解决方案
      - 添加 migrations/README.md 文档说明迁移最佳实践
      - 明确迁移不可变原则和正确的修改流程
      eee5c0ac
    • IanShaw027's avatar
      refactor(frontend): 优化 Gemini 配额显示,参考 Antigravity 样式 · 81817466
      IanShaw027 authored
      - 简化标签:将 "RPD Pro/Flash" 改为 "Pro/Flash",避免文字截断
      - 添加账号类型徽章(Free/Pro/Ultra),带颜色区分
      - 添加帮助图标(?),悬停显示限流政策和官方文档链接
      - 重构显示布局:账号类型 + 两行配额(Pro/Flash)
      - 移除冗余的 AccountQuotaInfo 组件调用
      81817466
  2. 31 Dec, 2025 5 commits
    • IanShaw027's avatar
      fix(gemini): 修复 P0/P1 级别问题(429误判/Tier丢失/expires_at/前端一致性) · e4928177
      IanShaw027 authored
      P0 修复(Critical - 影响生产稳定性):
      - 修复 429 判断逻辑:使用 project_id 判断而非 account.Type
        防止 AI Studio OAuth 被误判为 Code Assist 5分钟窗口
      - 修复 Tier ID 丢失:刷新时始终保留旧值,默认 LEGACY
        防止 fetchProjectID 失败导致 tier_id 被清空
      - 修复 expires_at 下界:添加 minTTL=30s 保护
        防止 expires_in <= 300 时生成过去时间引发刷新风暴
      
      P1 修复(Important - 行为一致性):
      - 前端 isCodeAssist 判断与后端一致(支持 legacy)
      - 前端日期解析添加 NaN 保护
      - 迁移脚本覆盖 legacy 账号
      
      前端功能(新增):
      - AccountQuotaInfo 组件:Tier Badge + 二元进度条 + 倒计时
      - 定时器动态管理:watch 监听限流状态
      - 类型定义:GeminiCredentials 接口
      
      测试:
      -  TypeScript 类型检查通过
      -  前端构建成功(3.33s)
      -  Gemini + Codex 双 AI 审查通过
      
      Refs: #gemini-quota
      e4928177
    • yangjianbo's avatar
      fix(数据层): 修复软删除与唯一约束冲突问题 · 59269dc1
      yangjianbo authored
      问题:软删除的记录仍占用唯一约束位置,导致删后无法重建同名/同邮箱/同订阅
      
      修复方案:使用 PostgreSQL 部分唯一索引(WHERE deleted_at IS NULL)
      - User.email: 移除字段级 Unique(),改用部分唯一索引
      - Group.name: 移除字段级 Unique(),改用部分唯一索引
      - UserSubscription.(user_id, group_id): 移除组合唯一索引,改用部分唯一索引
      - ApiKey.key: 保留普通唯一约束(安全考虑,已删除的 Key 不应重用)
      
      安全性:
      - 应用层已有 ExistsByXxx 检查,自动过滤软删除记录
      - 数据库层部分唯一索引提供最后一道防线
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code
      
      )
      Co-Authored-By: default avatarClaude Opus 4.5 <noreply@anthropic.com>
      59269dc1
    • yangjianbo's avatar
      fix(设置): 修复站点设置保存失败的问题 · 6f6dc303
      yangjianbo authored
      问题:
      1. Setting.value 字段设置了 NotEmpty() 约束,导致保存空字符串值时验证失败
      2. 数据库 settings 表缺少 key 字段的唯一约束,导致 ON CONFLICT 语句执行失败
      
      修复:
      - 移除 ent/schema/setting.go 中 value 字段的 NotEmpty() 约束
      - 新增迁移 015_fix_settings_unique_constraint.sql 添加缺失的唯一约束
      - 添加3个回归测试确保空值保存功能正常
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code
      
      )
      Co-Authored-By: default avatarClaude Opus 4.5 <noreply@anthropic.com>
      6f6dc303
    • yangjianbo's avatar
      fix(数据层): 修复数据完整性与仓储一致性问题 · 5906f9ab
      yangjianbo authored
      ## 数据完整性修复 (fix-critical-data-integrity)
      - 添加 error_translate.go 统一错误转换层
      - 修复 nil 输入和 NotFound 错误处理
      - 增强仓储层错误一致性
      
      ## 仓储一致性修复 (fix-high-repository-consistency)
      - Group schema 添加 default_validity_days 字段
      - Account schema 添加 proxy edge 关联
      - 新增 UsageLog ent schema 定义
      - 修复 UpdateBalance/UpdateConcurrency 受影响行数校验
      
      ## 数据卫生修复 (fix-medium-data-hygiene)
      - UserSubscription 添加软删除支持 (SoftDeleteMixin)
      - RedeemCode/Setting 添加硬删除策略文档
      - account_groups/user_allowed_groups 的 created_at 声明 timestamptz
      - 停止写入 legacy users.allowed_groups 列
      - 新增迁移: 011-014 (索引优化、软删除、孤立数据审计、列清理)
      
      ## 测试补充
      - 添加 UserSubscription 软删除测试
      - 添加迁移回归测试
      - 添加 NotFound 错误测试
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code
      
      )
      Co-Authored-By: default avatarClaude Opus 4.5 <noreply@anthropic.com>
      5906f9ab
    • yangjianbo's avatar
      perf(后端): 完成性能优化与连接池配置 · 7efa8b54
      yangjianbo authored
      新增 DB/Redis 连接池配置与校验,并补充单测
      
      网关请求体大小限制与 413 处理
      
      HTTP/req 客户端池化并调整上游连接池默认值
      
      并发槽位改为 ZSET+Lua 与指数退避
      
      用量统计改 SQL 聚合并新增索引迁移
      
      计费缓存写入改工作池并补测试/基准
      
      测试: 在 backend/ 下运行 go test ./...
      7efa8b54
  3. 29 Dec, 2025 4 commits
  4. 23 Dec, 2025 1 commit
    • 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
  5. 18 Dec, 2025 1 commit