1. 14 Mar, 2026 2 commits
  2. 13 Mar, 2026 3 commits
    • Ylarod's avatar
      fix lint · e90ec847
      Ylarod authored
      e90ec847
    • Ylarod's avatar
      sub2api: add bedrock support · 11f7b835
      Ylarod authored
      11f7b835
    • haruka's avatar
      fix: 管理员重置配额补全 monthly 字段并修复 ristretto 缓存异步问题 · e73531ce
      haruka authored
      
      
      - 后端 handler:ResetSubscriptionQuotaRequest 新增 Monthly 字段,
        验证逻辑扩展为 daily/weekly/monthly 至少一项为 true
      - 后端 service:AdminResetQuota 新增 resetMonthly 参数,
        调用 ResetMonthlyUsage;重置后追加 subCacheL1.Wait(),
        保证 ristretto Del() 的异步删除立即生效,消除重置后
        /v1/usage 返回旧用量数据的竞态窗口
      - 后端测试:更新存量测试用例匹配新签名,补充
        TestAdminResetQuota_ResetMonthlyOnly /
        TestAdminResetQuota_ResetMonthlyUsageError 两个新用例
      - 前端 API:resetQuota options 类型新增 monthly: boolean
      - 前端视图:confirmResetQuota 改为同时重置 daily/weekly/monthly
      - i18n:中英文确认提示文案更新,提及每月配额
      Co-Authored-By: default avatarClaude Sonnet 4.6 <noreply@anthropic.com>
      e73531ce
  3. 12 Mar, 2026 12 commits
  4. 11 Mar, 2026 10 commits
  5. 10 Mar, 2026 7 commits
  6. 09 Mar, 2026 6 commits
    • kyx236's avatar
      fix: OpenAI临时性400错误支持池模式同账号重试 & HelpTooltip层级修复 · 5fa22fdf
      kyx236 authored
      1. 识别OpenAI "An error occurred while processing your request" 临时性400错误
         并触发failover,同时在池模式下标记RetryableOnSameAccount,允许同账号重试
      2. ForwardAsAnthropic路径同步支持临时性400错误的识别和同账号重试
      3. HelpTooltip组件使用Teleport渲染到body,修复在dialog内被裁切的问题
      5fa22fdf
    • erio's avatar
      fix: use shared max_line_size config for OpenAI Responses SSE scanner · bcaae2eb
      erio authored
      Two SSE scanners in openai_gateway_messages.go were hardcoded to 1MB
      while all other scanners use defaultMaxLineSize (500MB) with config
      override. This caused Responses API streams to fail on large payloads.
      bcaae2eb
    • ischanx's avatar
      feat: 允许管理员为持有有效订阅的用户绑定订阅类型分组 · 767a41e2
      ischanx authored
      
      
      之前管理员无法通过 API 密钥管理将用户绑定到订阅类型分组(直接返回错误)。
      现在改为检查用户是否持有该分组的有效订阅,有则允许绑定,无则拒绝。
      
      - admin_service: 新增 userSubRepo 依赖,替换硬拒绝为订阅校验
      - admin_service: 区分 ErrSubscriptionNotFound 和内部错误,避免 DB 故障被误报
      - wire_gen/api_contract_test: 同步新增参数
      - UserApiKeysModal: 管理员分组下拉不再过滤订阅类型分组
      Co-Authored-By: default avatarClaude Opus 4.6 <noreply@anthropic.com>
      767a41e2
    • QTom's avatar
      feat: 从 OpenAI JWT 提取 chatgpt_plan_type 并在前端展示 · a582aa89
      QTom authored
      OAuth 授权和 token 刷新时从 id_token 的 OpenAI auth claim 中
      提取 chatgpt_plan_type(plus/team/pro/free),存入 credentials,
      账号管理页面 PlatformTypeBadge 显示订阅类型。
      a582aa89
    • erio's avatar
      feat: cleanup stale concurrency slots on startup · a88698f3
      erio authored
      
      
      When the service restarts, concurrency slots from the old process
      remain in Redis, causing phantom occupancy. On startup, scan all
      concurrency sorted sets and remove members with non-current process
      prefix, then clear orphaned wait queue counters.
      
      Uses Go-side SCAN to discover keys (compatible with Redis client
      prefix hooks in tests), then passes them to a Lua script for
      atomic member-level cleanup.
      Co-Authored-By: default avatarClaude Opus 4.6 <noreply@anthropic.com>
      a88698f3
    • shaw's avatar
      fix: 修复gpt->claude同步请求返回sse的bug · 25178cdb
      shaw authored
      25178cdb