Skip to content

v1.3.7

Choose a tag to compare

@shuishuipingan shuishuipingan released this 13 Oct 15:22
· 16 commits to main since this release

✨ 新增功能

① 双区自动路由的完整体验(#26 续) —— v1.3.6 把自动路由发出去了,这一版把它变成看得见的:

  • 「本次实际出口」不再靠猜:usage 行新增 realm_reason(三态),面板据此给出确定结论:

    realm_reason 含义 面板显示
    model_missing 当前区官方清单里没有这个模型 「模型不在默认出口,已自动改走 X 区」
    no_account 模型本区有、被账号可用性推走 「默认出口无可用账号,已自动改走 X 区」
    ""(显式空串) 明确没有换区 「按默认出口执行」
    键不存在 字段上线前的旧行 「未知(旧记录)」—— 不给用户一个假结论
  • 最近请求表新增「区域」列:直接来自 usage 行的 realm —— 反映的是每次对话的真实出口,不是面板自身请求;

  • 带时间:「最近一次对话 12:03 走了国内版 · 未换区」—— 持久化字段才有的信息量。

🐛 问题修复

  • 面板数据源从响应头迁到 usage 行:v1.3.6 冻结的契约(X-Qoder-Realm 只在 chat 类请求出现)让面板拿不到那个头(面板发的都是管理端点)→ 改为读 usage 行,绕开长连接状态泄漏那一整类问题,而且历史可查;
  • 反向保险:新增「dashboard.html 全文不得再读 X-Qoder-Realm」的断言(检查目标是被守护的文件,不是测试自己),并用金丝雀自证(注入一行读取 → 必红)证明它不是摆设 —— 两次独立跑过;
  • 两条「片段依赖自检」:测试用的 eval 片段必须自带 RECENT_SNAPSHOT 声明,否则当场红并说明原因(而不是崩溃成一个读起来像产品坏了的 ReferenceError);并断言该声明在 dashboard.html 里顶层唯一、引用都在函数体内 —— 把「浏览器里会不会炸」变成可执行断言。

🎨 体验优化:见 ① 的三条。

⚠️ 其他变更

  • 口径收紧两处:最近一次对话取「最近一条非 error 行」(失败行可能没有真实出账区,拿它当结论是错的);旧行显示「未知(旧记录)」而不是「没换区」;
  • 流程:报告「全绿」时附两枚指纹(被测文件 md5 + 套件副本 md5)—— 本轮一次误报(过期副本被读成产品故障)就是靠这条把范围锁死的;复核方也贴自己跑的那份,先对齐再谈结论。

验证

  • 双入口全绿:python tests/run_all.py → 28 suites / 1005 checks / 0 failed(前端六套件 105 = 9/19/19/15/12/31);python _test_qoder.py → 626 passed / 0 failed;
  • 金丝雀两次独立跑过(作者一次、复核者一次):注入读取 → 反向保险必红;真文件 → 全绿。