1. 13 Mar, 2026 1 commit
    • erio's avatar
      fix: restore OAuth 401 temp-unschedulable for Gemini, update Antigravity tests · 45456fa2
      erio authored
      The 403 detection PR changed the 401 handler condition from
      `account.Type == AccountTypeOAuth` to
      `account.Type == AccountTypeOAuth && account.Platform == PlatformOpenAI`,
      which accidentally excluded Gemini OAuth from the temp-unschedulable path.
      
      Fix: use `!= PlatformAntigravity` instead, preserving Gemini behavior
      while correctly excluding Antigravity (whose 401 is handled by
      applyErrorPolicy's temp_unschedulable_rules).
      
      Update tests to reflect Antigravity's new 401 semantics:
      - HandleUpstreamError: Antigravity OAuth 401 now uses SetError
      - CheckErrorPolicy: Antigravity 401 second hit stays TempUnscheduled
      - DB fallback: split into Gemini (escalates) and Antigravity (stays temp)
      45456fa2
  2. 08 Mar, 2026 1 commit
  3. 04 Mar, 2026 1 commit
    • kyx236's avatar
      feat: 二次 401 直接升级为错误状态,添加 DB 回退确保生效 · 6aa8cbbf
      kyx236 authored
      账号首次 401 仅临时不可调度,给予 token 刷新窗口;若恢复后再次 401
      说明凭证确实失效,直接升级为错误状态以避免反复无效调度。
      
      - 缓存中 reason 为空时从 DB 回退读取,防止升级判断失效
      - ClearError 同时清除临时不可调度状态,管理员恢复后重新给予一次机会
      - 管理后台账号列表添加"临时不可调度"状态筛选
      - 补充 DB 回退场景单元测试
      6aa8cbbf
  4. 09 Feb, 2026 1 commit
    • erio's avatar
      feat: ErrorPolicySkipped returns 500 instead of upstream status code · 73f45574
      erio authored
      When custom error codes are enabled and the upstream error code is NOT
      in the configured list, return HTTP 500 to the client instead of
      transparently forwarding the original status code.
      
      Also adds integration test TestCustomErrorCode599 verifying that 429,
      500, 503, 401, 403 all return 500 without triggering SetRateLimited
      or SetError.
      73f45574
  5. 08 Feb, 2026 1 commit