Skip to content

OctaFuse v2.8.0

Latest

Choose a tag to compare

@github-actions github-actions released this 29 Aug 03:00
cde700f

本次更新

OctaFuse Gateway v2.8.0 把周期额度与永久额度拆开记账,打通阿里云百炼千问 / 万相走 OpenAI Images 入口的转换路径,并让 Docker 管理后台支持实时语音 WebSocket。

变更内容

Proxy

  • 永久额度扣费:先扣周期额度,不够的差额扣永久额度;budget_max 非空时总剩余 = 周期剩余 + wallet 余额,总剩余 ≤ 0 才 403。周期上限为 0 但 wallet 仍有余额时可继续请求。请求日志增加 charged_wallet_cost
  • DashScope 生图转换:客户端仍打 POST /v1/images/generations;适配器 dashscope-image-qwen / dashscope-image-wan 改写为 DashScope images.generations.multimodal。千问 / 万相按张计费;千问 Pro 从响应 usage 反推 1K/2K 档。默认返回 URL,response_format=b64_json 时下载 OSS 再转 base64。
  • 额度预检:Images / Audio / Tools 预检与实扣使用同一套周期 + 永久总余额,不再把 budget_max=0 误判为超额。

Admin

  • 永久额度加额:新增 POST /api/admin/users/:id/wallet/creditkind + external_ref 幂等)。用户详情拆开展示周期额度与永久额度;加购不要再写入 budget_maxPATCH 仍可修正 wallet 绝对值。
  • DashScope 生图联调:Playground / Simulator 对千问 / 万相转换路由使用 OpenAI Images JSON;调试台改写成 multimodal,模拟器走 Proxy /v1/images/generations
  • 路由适配器:下拉项标明 request → upstream 映射,避免透传与转换混淆。
  • 实时语音:DashScope realtime ASR 默认改用浏览器麦克风;Docker Admin 运行层带上 ws,Node 入口为 node-server.mjs,调试台实时 ASR 不再 501。
  • 模型预设:新增 hy4-previewqwen3.8-flashglm-5.3-flash。目录导入不再写入 model_tags,标签由运营导入后自行维护。
  • 模型 / 路由编辑:模型弹窗可预览 pricing profile JSON;路由时段与倍率表格展示整理。

Core

  • 迁移 0027users 增加 wallet_granted / wallet_spentuser_audit_logs.dedup_key 唯一约束;api_key_request_logs.charged_wallet_cost。回填把 budget_max − max(spent, base) 的剩余迁入 wallet;budget_max IS NULL 与到期清零行(max=0 AND period=none)不抬回 budget_base;超支欠账钳到 0。

文档

  • 永久额度:用户接口、Admin API、数据模型与请求生命周期写明先周期后永久、加额幂等与 0027 回填。
  • DashScope 生图:新增架构文档,标明 OpenAI Images 入口、转换适配器、按张计费与验收路径。
  • Docker Admin:standalone 入口、ws 拷贝与实时 WebSocket 约束写入部署与构建说明。

升级说明

  • 数据库迁移:必须应用 0027;三种数据库语义一致。上线前可用 docs/operators/migrations/0027-user-wallet-credit-audit.sql 只读核对。
  • 发布顺序:先部署同版本 proxy / admin 代码(新列默认 0);再执行 migrate Job;门户再切到 POST /api/admin/users/:id/wallet/credit。不要把加购继续加进 budget_max
  • 配置变更:阿里云千问 / 万相生图需路由适配器选 dashscope-image-qwendashscope-image-wan,请求协议保持 openai / images.generations。Token Plan 须显式覆盖 images.generations.multimodal
  • 兼容性影响:Chat / Messages / Gemini / Audio / Responses 入口不变。额度判定改为总余额;周期用尽但 wallet 有余额的用户将从 403 变为可继续调用。已导入模型行不会被静态目录覆盖。
  • 建议操作:部署后核验 0027 回填、wallet 加额幂等与请求日志 charged_wallet_cost;用 Playground / Simulator 冒烟 DashScope 生图、实时 ASR(麦克风)与既有 chat / messages / gemini / images / audio;如需新模型目录再导入对应预设。

容器镜像

ghcr.io/octafuse/octafuse-gateway-proxy:v2.8.0
ghcr.io/octafuse/octafuse-gateway-admin:v2.8.0
ghcr.io/octafuse/octafuse-gateway-migrate:v2.8.0

相关链接