1. 04 Apr, 2026 6 commits
    • erio's avatar
      feat(channel): 缓存扁平化 + 网关映射集成 + 计费模式统一 + 模型限制 · 0b1ce6be
      erio authored
      - 缓存按 (groupID, platform, model) 三维 key 扁平化,避免跨平台同名模型冲突
      - buildCache 批量查询 group platform,按平台过滤展开定价和映射
      - model_mapping 改为嵌套格式 {platform: {src: dst}}
      - channel_model_pricing 新增 platform 列
      - 前端按平台维度重构:每个平台独立配置分组/映射/定价
      - 迁移 086: platform 列 + model_mapping 嵌套格式迁移
      0b1ce6be
    • erio's avatar
      feat(channel): 缓存扁平化 + 网关映射集成 + 计费模式统一 + 模型限制 · ebac0dc6
      erio authored
      - 缓存重构为 O(1) 哈希结构 (pricingByGroupModel, mappingByGroupModel)
      - 渠道模型映射接入网关流程 (Forward 前应用, a→b→c 映射链)
      - 新增 billing_model_source 配置 (请求模型/最终模型计费)
      - usage_logs 新增 channel_id, model_mapping_chain, billing_tier 字段
      - 每种计费模式统一支持默认价格 + 区间定价
      - 渠道模型限制开关 (restrict_models)
      - 分组按平台分类展示 + 彩色图标
      - 必填字段红色星号 + 模型映射 UI
      - 去除模型通配符支持
      ebac0dc6
    • erio's avatar
      feat(channel): 模型映射 + 分组搜索 + 卡片折叠 + 冲突校验 · 29d58f24
      erio authored
      - 渠道模型映射:新增 model_mapping JSONB 字段,在账号映射之前执行
      - 分组选择:添加搜索过滤 + 平台图标
      - 定价卡片:支持折叠/展开,已有数据默认折叠
      - 模型冲突校验:前后端均禁止同一渠道内重复模型
      - 迁移 083: channels 表添加 model_mapping 列
      29d58f24
    • erio's avatar
      feat(channel): 模型标签输入 + $/MTok 价格单位 + 左开右闭区间 + i18n · dca0054e
      erio authored
      - 模型输入改为标签列表(输入回车添加,支持粘贴批量导入)
      - 价格显示单位改为 $/MTok(每百万 token),提交时自动转换
      - Token 模式增加图片输出价格字段(适配 Gemini 图片模型按 token 计费)
      - 区间边界改为左开右闭 (min, max],右边界包含
      - 默认价格作为未命中区间时的回退价格
      - 添加完整中英文 i18n 翻译
      dca0054e
    • erio's avatar
      983fe589
    • erio's avatar
      feat(channel): 渠道管理系统 — 多模式定价 + 统一计费解析 · 91c9b8d0
      erio authored
      Cherry-picked from release/custom-0.1.106: a9117600
      91c9b8d0
  2. 02 Apr, 2026 7 commits
  3. 01 Apr, 2026 1 commit
    • QTom's avatar
      fix(antigravity): 修复批量刷新令牌不设置隐私模式的问题 · b155bc56
      QTom authored
      - refreshSingleAccount ProjectIDMissing 提前返回前补上 EnsureAntigravityPrivacy 调用
      - EnsureAntigravityPrivacy 跳过条件从"有任何值"改为"仅 privacy_set 成功时跳过",
        privacy_set_failed 允许重试,对齐 OpenAI shouldSkipOpenAIPrivacyEnsure 的行为
      - 后台 TokenRefreshService.ensureAntigravityPrivacy 同步修改
      - ExchangeCode/ValidateRefreshToken 获得令牌后立即调用 setAntigravityPrivacy,
        不依赖后续账号创建流程
      
      Made-with: Cursor
      b155bc56
  4. 31 Mar, 2026 5 commits
  5. 30 Mar, 2026 4 commits
  6. 29 Mar, 2026 4 commits
  7. 28 Mar, 2026 1 commit
    • wucm667's avatar
      fix(billing): 计费始终使用用户请求的原始模型,而非映射后的上游模型 · f5764d8d
      wucm667 authored
      当账号配置了模型映射(如 claude-sonnet-4-6 → glm-5.0)时,系统错误地
      使用映射后的上游模型名计算费用。由于上游模型(如 glm-5.0)在定价系统中
      没有价格配置,导致计费失败后被静默置为 0,用户不被扣费。
      
      修改 forwardResultBillingModel 优先返回请求模型名,并移除 OpenAI 路径
      中 BillingModel 字段对计费模型的覆盖逻辑。
      f5764d8d
  8. 27 Mar, 2026 10 commits
  9. 26 Mar, 2026 2 commits
    • shaw's avatar
      feat(rectifier): 请求整流器增加 API Key 账号签名整流支持 · d571f300
      shaw authored
      新增独立开关控制 API Key 账号的签名整流功能,支持配置自定义
      匹配关键词以捕获不同格式的上游错误响应。
      
      - 新增 apikey_signature_enabled 开关(默认关闭)
      - 新增 apikey_signature_patterns 自定义关键词配置
      - 内置签名检测规则对 API Key 账号同样生效
      - 自定义关键词对完整响应体做不区分大小写匹配
      - 重试二阶段检测仅做模式匹配,不重复校验开关
      - Handler 层校验关键词数量(≤50)和长度(≤500)
      - API 响应 nil patterns 统一序列化为空数组
      - OAuth/SetupToken/Upstream/Bedrock 账号行为不变
      d571f300
    • shaw's avatar
      feat: 网关请求头 wire casing 保持、转发行为开关、调试日志增强及 accept-encoding 恢复 · b20e1422
      shaw authored
      - 新增 header_util.go,通过 setHeaderRaw/getHeaderRaw/addHeaderRaw 绕过
        Go 的 canonical-case 规范化,保持真实 Claude CLI 抓包的请求头大小写
        (如 "x-app" 而非 "X-App","X-Stainless-OS" 而非 "X-Stainless-Os")
      - 新增管理后台开关:指纹统一化(默认开启)和 metadata 透传(默认关闭),
        使用 atomic.Value + singleflight 缓存模式,60s TTL
      - 调试日志从控制台 body 打印升级为文件级完整快照
        (按真实 wire 顺序输出 headers + 格式化 JSON body + 上下文元数据)
      - 恢复 accept-encoding 到白名单,在 http_upstream.go 新增 decompressResponseBody
        处理 gzip/brotli/deflate 解压(Go 显式设置 Accept-Encoding 时不会自动解压)
      - OAuth 服务 axios UA 从 1.8.4 更新至 1.13.6
      - 测试断言改用 getHeaderRaw 适配 raw header 存储方式
      b20e1422