1. 28 Feb, 2026 5 commits
    • QTom's avatar
      test(sora): 补充测试 stub 中缺失的 AddGroupToAllowedGroups 方法 · 6f9e6903
      QTom authored
      feat/admin-apikey-group-update 分支给 UserRepository 接口新增了
      AddGroupToAllowedGroups 方法,需要在测试 stub 中补充实现以通过编译。
      - sora_client_handler_test.go: stubUserRepoForHandler
      - sora_generation_service_test.go: stubUserRepoForQuota
      6f9e6903
    • QTom's avatar
      feat(admin): 完整实现管理员修改用户 API Key 分组的功能 · 9a91815b
      QTom authored
      ## 核心功能
      - 添加 AdminUpdateAPIKeyGroupID 服务方法,支持绑定/解绑/保持不变三态语义
      - 实现 UserRepository.AddGroupToAllowedGroups 接口,自动同步专属分组权限
      - 添加 HTTP PUT /api-keys/:id handler 端点,支持管理员直接修改 API Key 分组
      
      ## 事务一致性
      - 使用 ent Tx 保证专属分组绑定时「添加权限」和「更新 Key」的原子性
      - Repository 方法支持 clientFromContext,兼容事务内调用
      - 事务失败时自动回滚,避免权限孤立
      
      ## 业务逻辑
      - 订阅类型分组阻断,需通过订阅管理流程
      - 非活跃分组拒绝绑定
      - 负 ID 和非法 ID 验证
      - 自动授权响应,告知管理员成功授权的分组
      
      ## 代码质量
      - 16 个单元测试覆盖所有业务路径和边界用例
      - 7 个 handler 集成测试覆盖 HTTP 层
      - GroupRepo stub 返回克隆副本,防止测试间数据泄漏
      - API 类型安全修复(PaginatedResponse<ApiKey>)
      - 前端 ref 回调类型对齐 Vue 规范
      
      ## 国际化支持
      - 中英文提示信息完整
      - 自动授权成功/失败提示
      9a91815b
    • QTom's avatar
      feat(admin): 添加管理员直接修改用户 API Key 分组的功能 · 000e621e
      QTom authored
      - 新增 PUT /api/v1/admin/api-keys/:id 端点,允许管理员修改任意用户 API Key 的分组绑定
      - 跳过用户级权限校验但保留分组有效性验证,修改后触发认证缓存失效
      - Service 层支持三态语义:nil=不修改,0=解绑,>0=绑定,<0=拒绝
      - 指针值拷贝保证安全隔离,负数 groupID 返回 400 INVALID_GROUP_ID
      - 前端 UserApiKeysModal 新增可点击的分组选择下拉框,支持多 Key 并发更新
      - 下拉支持视口翻转和滚动关闭,按钮有 disabled 和加载状态
      - 覆盖:后端 20 个单元测试 (Service 11 + Handler 9) + 前端 16 个 E2E 测试
      - golangci-lint 0 issues, make test-unit 全部通过
      000e621e
    • yangjianbo's avatar
      1d1fc019
    • yangjianbo's avatar
      feat(sync): full code sync from release · bb664d9b
      yangjianbo authored
      bb664d9b
  2. 27 Feb, 2026 4 commits
    • erio's avatar
      fix: add 2K image default pricing at 1.5x base price · d1b684b7
      erio authored
      Previously 2K images used the same base price as 1K ($0.134).
      Now 2K uses 1.5x multiplier ($0.201), consistent with 4K using 2x ($0.268).
      
      - Backend: add 2K size branch in getDefaultImagePrice
      - Frontend: update 2K placeholder from 0.134 to 0.201
      - Tests: update assertions for new 2K default price
      d1b684b7
    • erio's avatar
      fix: update antigravity user-agent version to 1.19.6 · afec747d
      erio authored
      Update the default user-agent version from 1.18.4 to 1.19.6
      to match the latest official antigravity client.
      afec747d
    • erio's avatar
      fix: gofmt alignment in constants.go · 7388fcce
      erio authored
      7388fcce
    • erio's avatar
      feat: replace gemini-3-pro-image with gemini-3.1-flash-image · a6f9f9f9
      erio authored
      - Add migration 060 to update model_mapping for all antigravity accounts
      - Remove gemini-3-pro-image and gemini-3-pro-image-preview mappings
      - Add gemini-3.1-flash-image and gemini-3.1-flash-image-preview mappings
      - Update frontend usage window to show GImage for new model
      - Update isImageGenerationModel to support new model
      a6f9f9f9
  3. 26 Feb, 2026 7 commits
  4. 25 Feb, 2026 7 commits
  5. 24 Feb, 2026 17 commits