本次更新
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改写为 DashScopeimages.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/credit(kind+external_ref幂等)。用户详情拆开展示周期额度与永久额度;加购不要再写入budget_max。PATCH仍可修正 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-preview、qwen3.8-flash、glm-5.3-flash。目录导入不再写入model_tags,标签由运营导入后自行维护。 - 模型 / 路由编辑:模型弹窗可预览 pricing profile JSON;路由时段与倍率表格展示整理。
Core
- 迁移 0027:
users增加wallet_granted/wallet_spent;user_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-qwen或dashscope-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