"vscode:/vscode.git/clone" did not exist on "caa8c47b68e4150c3aa6d73ac7f0caf373d4629a"
  1. 26 Dec, 2025 32 commits
  2. 25 Dec, 2025 8 commits
    • shaw's avatar
      b31698b9
    • Forest's avatar
      refactor: 自定义业务错误 · eeaff85e
      Forest authored
      eeaff85e
    • Forest's avatar
      refactor: 删除 ports 目录 · f51ad2e1
      Forest authored
      f51ad2e1
    • hi_yueban's avatar
      fix: 修复 OpenAI 账号 5h/7d 使用限制显示错误的问题 (#30) · f57f12c6
      hi_yueban authored
      * fix: 修复 OpenAI 账号 5h/7d 使用限制显示错误的问题
      
      问题描述:
      - 账号管理页面中,OpenAI OAuth 账号的 5h 列显示 7 天的剩余时间
      - 7d 列却显示几小时的剩余时间
      - 根本原因: OpenAI 响应头中 primary/secondary 的实际含义与代码假设相反
      
      修复方案:
      1. 后端归一化 (openai_gateway_service.go):
         - 根据 window_minutes 动态判断哪个是 5h/7d 限制
         - 新增规范字段 codex_5h_* 和 codex_7d_*
         - 保留旧字段以兼容性
      
      2. 前端适配 (AccountUsageCell.vue):
         - 优先使用新的规范字段
         - Fallback 到旧字段时基于 window_minutes 动态判断
         - 更新 computed 属性命名
      
      3. 类型定义更新 (types/index.ts):
         - 添加新的规范字段定义
         - 更新注释说明实际语义由 window_minutes 决定
      
      🤖
      
       Generated with Claude Code and Codex collaboration
      Co-Authored-By: default avatarClaude Sonnet 4.5 <noreply@anthropic.com>
      Co-Authored-By: default avatarOpenAI Codex <noreply@openai.com>
      
      * fix: 改进窗口判断逻辑,修复两个窗口都小于阈值时的bug
      
      问题:
      当两个窗口都小于360分钟时(如 primary=180分钟,secondary=300分钟),
      之前的逻辑会导致:
      - primary5h = true, secondary5h = true
      - 5h 字段会使用 primary(错误)
      - 7d 字段没有数据(bug)
      
      修复方案:
      改用比较策略:
      1. 当两个窗口都存在时:较小的分配给5h,较大的分配给7d
      2. 当只有一个窗口时:根据大小(<=360分钟)判断是5h还是7d
      3. 确保数据不会丢失,逻辑更健壮
      
      示例:
      - Primary: 180分钟, Secondary: 300分钟
        → 5h 使用 Primary(180分钟), 7d 使用 Secondary(300分钟) ✓
      
      🤖
      
       Generated with Claude Code
      Co-Authored-By: default avatarClaude Sonnet 4.5 <noreply@anthropic.com>
      
      * fix: 修正窗口大小判断逻辑 - 不能用剩余时间判断窗口类型
      
      **严重bug修复:**
      之前的 fallback 逻辑错误地使用 reset_after_seconds 来判断窗口大小。
      
      问题示例:
      - 周限制(7d)剩余 2h → reset_after_seconds = 7200秒
      - 5h限制 剩余 4h → reset_after_seconds = 14400秒
      - 错误逻辑:7200/60 < 14400/60,把周限制当成5h 
      
      根本问题:
      - window_minutes = 窗口的总大小(300 or 10080)
      - reset_after_seconds = 距离重置的剩余时间(变化的)
      - 不能用剩余时间来判断窗口类型!
      
      修复方案:
      1. **只使用 window_minutes** 来判断窗口大小
      2. 移除错误的 reset_after_seconds fallback
      3. 如果 window_minutes 都不存在,使用传统假设
      4. 添加详细注释说明这个陷阱
      
      🤖
      
       Generated with Claude Code
      Co-Authored-By: default avatarClaude Sonnet 4.5 <noreply@anthropic.com>
      
      * fix: 修复 lint 问题 - 改进 fallback 逻辑的变量赋值
      
      问题:
      第882-883行的简单布尔赋值可能触发 ineffassign 或 staticcheck 警告:
        use5hFromSecondary = snapshot.SecondaryUsedPercent != nil
        use7dFromPrimary = snapshot.PrimaryUsedPercent != nil
      
      修复:
      改用明确的 if 语句检查任意字段是否存在,更符合代码意图:
      - 如果 secondary 的任意字段存在,将其视为 5h
      - 如果 primary 的任意字段存在,将其视为 7d
      
      这样逻辑更清晰,也避免了 lint 警告。
      
      ---------
      Co-authored-by: default avatarClaude Sonnet 4.5 <noreply@anthropic.com>
      Co-authored-by: default avatarOpenAI Codex <noreply@openai.com>
      f57f12c6
    • shaw's avatar
      fix: 修复image地址 · 5fca2d10
      shaw authored
      5fca2d10
    • shaw's avatar
      chore: 调整403重试次数跟间隔 · 8fbe1ad7
      shaw authored
      8fbe1ad7
    • Forest's avatar
      test: 增加 repository 测试 · 25a304c2
      Forest authored
      25a304c2
    • 刀刀's avatar
      CC 400 返回具体错误信息 && 非 CC 请求时增加 system prompt (#26) · 9d30ceae
      刀刀 authored
      * feat: http 400 返回具体错误
      
      * 更新 workflows
      
      * 优化打包/docker 构建流程
      
      * 400 是返回 原始错误 - json 格式
      
      * feat: 非 cc请求时补充 system
      
      * go mod tidy
      9d30ceae