wangbo
91451b3c86
fix(cluster): 修复身份事务阻塞与 Worker 容量抖动
...
将身份协调和安全事件心跳改为 PostgreSQL 单 Leader 执行,并从独立 Worker 进程中移除身份运行时,避免多副本重复写同一状态。
为安全事件事务增加锁等待、空闲事务超时及独立回滚上下文;Worker 需连续丢失六次心跳后才判定失效,降低跨节点抖动导致的容量反复扩缩。
验证:Go 全量测试、go vet、Race 聚焦测试、PostgreSQL 18 Leader/安全事件/Worker 分配集成测试及迁移测试通过。
2026-07-29 23:04:41 +08:00
wangbo
3886048e0f
fix(gemini): 移除空返图占位并暴露失败原因
...
Gemini 图片响应未包含可提取资源时,不再返回伪造占位图,改为非重试失败并保留安全拦截、候选结束状态和上游错误等结构化诊断。\n\n同步将诊断写入 HTTP 错误、任务结果、attempt 指标和日志,确保任务失败时不结算,并补充单元及 PostgreSQL 验收测试。\n\n验证:gofmt、go test ./... -count=1、go vet ./...、迁移安全检查、pnpm openapi。
2026-07-29 19:50:43 +08:00
wangbo
9e4fc7362d
feat(queue): 增加非文本模型分布式准入队列
...
使用 PostgreSQL 统一同步与异步非文本任务的并发准入、持久化等待和 Worker 容量分配,并将生产 API 与独立 Worker 角色拆分。
补充策略管理、共享契约、OpenAPI、Kubernetes 双节点 Worker 清单及跨节点验收脚本;未默认启用任何生产 queue_size 策略。
已在原基线完成 Go、前端、迁移、Shell、Kustomize 与长任务容量验收;合入最新主干后将重新执行发布门禁。
2026-07-29 16:15:43 +08:00
wangbo
9a3cc582ce
fix(api): 分离异步队列入队与执行开关
...
AI_GATEWAY_ASYNC_QUEUE_WORKER_ENABLED=false 时仍初始化 River schema 与控制客户端,允许 HTTP 请求持久化并入队;仅跳过执行客户端和动态容量 Worker。关闭上下文时同步清理控制客户端引用。\n\n新增数据库集成测试覆盖无执行 Worker 时成功创建 River job 且 attempted_by 为空。验证:gofmt、go test ./... -count=1、go vet ./...。
2026-07-29 03:03:14 +08:00
wangbo
31565af07a
refactor(runner): 收敛上游失败决策与轮转策略
...
将同平台重试、跨平台动作、健康副作用和冷却排队统一到单一失败决策,避免旧降级策略与 failover 重复执行。\n\n增加事务级单源保护、候选实时刷新、冷却错误契约、管理接口严格校验及兼容策略只读展示。\n\n验证:真实 Gateway HTTP/PostgreSQL 接受测试 10 项通过;go test ./...、pnpm openapi、pnpm lint、pnpm test、pnpm build 均通过。
2026-07-27 23:50:17 +08:00
wangbo
046c16fc69
fix(audio): 兼容百炼 OpenAI 音频输入
...
为阿里云百炼 OpenAI-compatible Chat 统一保留标准 input_audio,并将旧版 audio_url 转换为 input_audio,同时根据 MIME 或扩展名补齐音频格式。
补充请求资产水合测试,确认 input_audio.data 会转换为裸 Base64 且保留 format。
验证:在 apps/api 执行 env -u AI_GATEWAY_TEST_DATABASE_URL go test ./... -count=1 全部通过。
2026-07-27 23:50:17 +08:00
wangbo
95776c84f6
fix(media): 规范比例与 OpenAI 图像尺寸参数
...
统一过滤非 x:x 比例,避免默认值参与候选匹配或透传上游。
支持 xK 分辨率归一化,并按 Gemini、Volces 和 OpenAI 的参数规范生成上游请求;OpenAI 显式 WxH 始终保留用户原始尺寸。
验证:在独立临时 worktree 中执行 apps/api 全量 go test ./... -count=1 通过,真实 OpenAI 请求已到达上游但受本地无效凭据阻断。
2026-07-27 23:50:17 +08:00
wangbo
152885bbb6
fix(routing): 对齐缓存亲和力硬规则与审计
2026-07-24 23:51:27 +08:00
wangbo
a2ed32447a
fix(storage): 补齐嵌套结果二进制转存
...
生产真实 Gemini 图片任务可能在标准 data 之外保留嵌套 Base64,导致最终持久化关口拒绝任务成功。\n\n在所有生成结果返回前统一执行递归转存,并对仍未被常规媒体转换识别的二进制回退到本地结果物化,确保 PostgreSQL 不接收原始二进制。\n\n验证:go test ./... -count=1;go vet ./...;使用生产 Gemini Flash Image 平台配置完成本地真实图片编辑请求,文件哈希一致且持久化结果无内联二进制。
2026-07-24 21:57:52 +08:00
wangbo
4f163ea6d7
perf(storage): 拦截任务二进制并本地暂存结果
...
原因:任务标准结果中的 Base64、Data URI 和 Buffer 会进入 PostgreSQL JSON,导致 TOAST 与备份体积快速增长。
影响:新增统一 JSON 持久化关口;upload_none 将二进制原子写入本地结果目录,数据库仅保存带 SHA-256 的有界占位符;任务详情、同步响应、异步查询和兼容协议按需校验恢复。补充 24 小时清理、容量上限、历史小批量治理命令及管理端说明。
风险:本地结果超过 TTL、丢失或损坏时分别返回明确的 410/500;空间不足时返回 503 且不重试上游。未自动执行历史治理。
验证:三种真实图片模型同步/异步与幂等重放通过;Go vet/全量测试、前端 111 测试、lint/typecheck/build、OpenAPI、迁移安全、govulncheck、依赖审计、手工发布测试及 Linux amd64 构建通过。
2026-07-24 21:13:09 +08:00
wangbo
810dcfeee6
perf(storage): 极简化任务历史并增加保留治理
...
停止持久化 provider 原始响应、兼容响应快照、attempt/event/outbox 重复 JSON,并由标准任务结果动态生成 Kling/Keling/Volces 兼容响应。
增加事件去重与预算、极简 callback 投递、7/30 天分批清理、安全删除条件、并发迁移索引及可实际恢复的任务域排除备份。历史清理默认关闭,待兼容协议和异步恢复在线验证后单独启用。
验证:Go 全量测试与 go vet、PostgreSQL 18 集成与实际备份恢复、迁移安全测试、bash -n、ShellCheck、Compose 配置和人工发布脚本测试均通过。
2026-07-24 18:23:22 +08:00
wangbo
20945dbbcb
fix(runner): 延长媒体上游请求超时
...
图像生成上游同步响应可能超过 120 秒,原共享 HTTP 客户端会把仍在处理的提交标记为结果不确定。将客户端超时调整为 10 分钟,并增加回归测试;任务执行仍由现有租约、任务超时和取消机制约束。\n\n验证:\n- env -u AI_GATEWAY_TEST_DATABASE_URL go test ./internal/runner -run 'TestProviderHTTPClientTimeoutAllowsLongRunningMediaRequests|TestPlatformProxyMode' -count=1\n- env -u AI_GATEWAY_TEST_DATABASE_URL go test ./... -count=1
2026-07-24 13:42:47 +08:00
wangbo
6c5daf29ca
perf(queue): 按策略动态扩缩异步 Worker
...
将 River 执行容量按平台模型与用户组的有效并发策略动态调整,并为长任务续租、并发租约原子抢占和限流退避补充保护。\n\n统一平台模型限流继承语义,兼容历史 platformLimits/modelLimits,并为三个迁移图像模型建立独立并发租约。补充管理端显式继承/覆盖配置、指标、单元测试及隔离 PostgreSQL 验收。\n\n验证:go test ./... -count=1;pnpm lint;pnpm test;pnpm build;隔离 PostgreSQL 并发原子性/续租测试;128 任务与三分钟长任务动态 Worker 验收。
2026-07-24 12:26:56 +08:00
wangbo
290b8c1854
fix(queue): 扩展生产媒体任务吞吐
2026-07-24 10:37:20 +08:00
wangbo
d80b2e5ebf
fix(queue): 提升媒体任务执行并发
2026-07-24 10:31:18 +08:00
wangbo
8df87875de
fix(images): 优先转换编辑图片为 multipart 二进制
...
OpenAI 编辑即使声明支持 URL,也必须在 multipart 提交前转存为二进制文件。
2026-07-24 09:04:23 +08:00
wangbo
db640c1211
fix(images): 兼容 OpenAI 多图编辑 multipart
...
- 将 OpenAI images/edits 请求构造成 multipart/form-data
- 在运行时安全转存 URL 图片为 data URL 后提交二进制文件
- 覆盖多图字段、真实上游模型名和内部元数据过滤测试
2026-07-24 08:59:42 +08:00
wangbo
fb7e08fe5c
fix(runtime): honor requested platform for routing
2026-07-24 07:56:48 +08:00
wangbo
76a7702925
fix(media): 对齐 EasyAI 媒体响应与转存策略
...
统一媒体异步提交和轮询响应,扩展 /ai/result 到当前用户的 Gateway 媒体任务,并保持既有 Gateway 字段兼容。\n\n启用转存但无可用渠道时回退到 24 小时本地静态资源;关闭转存时保留图片、音频等上游 Base64 字段。同步更新文件上传兼容结构、OpenAPI、管理端说明和回归测试。\n\n验证:cd apps/api && env -u AI_GATEWAY_TEST_DATABASE_URL go test ./... -count=1;gofmt -l 无输出;pnpm nx run web:typecheck。
2026-07-23 22:35:41 +08:00
wangbo
8b7d3e9c9a
feat(seedance): 同步输入图片约束与自动转换
2026-07-23 21:55:42 +08:00
wangbo
46cdb1a288
fix(api): 缺失输出能力配置时透传请求
2026-07-23 11:07:31 +08:00
easyai
e07a997aa9
feat(api): 统一官方兼容接口响应协议
...
兼容接口现在以入口协议作为最终响应协议,同协议保留官方 Wire 响应,跨协议统一转换成功、任务状态与错误结构。
同时修正异步提交状态边界,持久化兼容公开任务标识和官方提交响应,并新增迁移、流式响应及协议契约测试。
验证:go vet ./...;go test ./...;govulncheck ./...;pnpm lint;pnpm test;pnpm build;pnpm audit --audit-level high;pnpm openapi;全部 CI 脚本。
2026-07-22 15:34:59 +08:00
easyai
3056cf8fca
feat(gateway): 补齐桌面端高级媒体直连接口
...
ci / verify (pull_request) Successful in 15m34s
新增图片矢量化、视频超分、每日用量、计价与任务隔离能力,并通过环境变量解析平台凭据。
已通过 Go 全量门禁、迁移检查、镜像构建以及 Vectorizer 五格式和 Topaz 3 秒视频真实 DEV 验收。
2026-07-22 14:02:53 +08:00
wangbo
d7951cfdd2
feat(volces): 接入任务兼容查询与上游取消
2026-07-22 00:25:22 +08:00
wangbo
ddd68cfebd
feat(seedance): 接入真人资产管理与引用
2026-07-22 00:25:22 +08:00
wangbo
5a71643099
feat(kling): 接入 Omni 视频兼容接口
2026-07-22 00:25:05 +08:00
wangbo
6b675c406e
fix(billing): 修正模型计费配置继承优先级
2026-07-22 00:24:36 +08:00
chengcheng
e3dfe8162b
fix(billing): 视频时长按实际秒数线性计费
...
将五秒基础价按 duration / 5 比例结算,保留 provider 返回的小数时长,避免六秒视频被按两个完整单位收费。
影响:所有使用 5s 视频基础价的模型,quantity 与 durationUnitCount 允许小数。新增迁移同步现存规则的旧 ceil 公式元数据。
验证:go vet ./...;pnpm lint;pnpm test;pnpm build;./tests/ci/migrations-test.sh
2026-07-21 13:32:23 +08:00
chengcheng
8c38714296
fix(runner): 稳定异步任务重启恢复
...
ci / verify (pull_request) Successful in 10m32s
避免恢复任务将已到期的 next_run_at 误插入 River scheduled 状态,并使用专用模型隔离重启集成测试。\n\n验证:Go 全量测试、govulncheck、pnpm lint/test/build/audit、Compose、镜像、迁移、流水线及 SemVer 门禁全部通过。
2026-07-21 11:29:56 +08:00
chengcheng
8beb8501fa
fix(billing): 封住发布前计费竞态
...
ci / verify (pull_request) Failing after 8s
阻止上游提交状态不明的任务被租约接管后重复执行,并为人工复核保留可操作的结算记录。
将生产提交绑定到当前估价签名,统一复用预处理快照,并补强规则形状、定点溢出与历史规则兼容校验。
已通过 PostgreSQL 16 集成测试、Go 全量测试与静态检查、前端测试与构建、OpenAPI、依赖审计、镜像、迁移、流水线和 SemVer 门禁。
2026-07-21 10:23:58 +08:00
chengcheng
5b2b94b1bd
feat(billing): 完成异步结算与请求执行闭环
...
统一任务成功、Attempt 与结算 Outbox 的事务边界,增加多实例安全结算、人工复核、请求幂等与执行租约。钱包决策使用九位精确金额,并通过审计保护约束保留流水事实;同时补充管理接口、指标与 PostgreSQL 集成测试。
2026-07-21 00:25:53 +08:00
chengcheng
5114686c35
feat(billing): 统一计价与候选冻结估算
...
新增 effective-pricing-v2、9 位十进制定点计算、显式免费校验和结构化缺价错误。估价与生产预处理覆盖全部可用候选,并按最大候选费用冻结;规则优先级为平台模型、平台、基准模型。\n\n同步计价契约和 OpenAPI,补充 Token 参数别名、视频五秒向上取整及缺价回归测试。\n\n验证:go test ./...、pnpm openapi、Web 测试与构建通过。
2026-07-20 23:22:45 +08:00
wangbo
5ee267ecbd
feat: 完善模型请求适配与输出限制
2026-07-17 13:52:00 +08:00
wangbo
9c300de72c
feat(gateway): add Seedream 5.0 Pro
2026-07-13 12:53:48 +08:00
wangbo
8847d973a8
feat: add Responses API compatibility
2026-07-10 23:33:15 +08:00
wangbo
b7351f3b9b
feat(runtime): 适配推理模式开关
2026-07-06 02:03:03 +08:00
wangbo
24eb68cc09
feat: use message LCP cache affinity keys
2026-06-29 15:47:57 +08:00
wangbo
229ed6a669
Merge remote-tracking branch 'origin/main'
2026-06-28 20:50:27 +08:00
wangbo
0e675e259c
feat: add runner failover rules and cache affinity
2026-06-28 20:50:23 +08:00
chengcheng
f4e1db1279
feat(task): 暴露任务取消控制状态
2026-06-25 17:01:32 +08:00
wangbo
7f32446466
feat: support cached input token billing
2026-06-23 17:17:57 +08:00
wangbo
6089aa6085
feat: support cloned voice deletion
2026-06-17 12:03:13 +08:00
wangbo
c4341335d7
feat: 支持 MiniMax 音色克隆和 2.8 语音模型
2026-06-17 02:13:21 +08:00
wangbo
02ba5d3cdd
修复模型引用与账单展示
2026-06-15 00:17:20 +08:00
wangbo
10ec25d87b
Handle Gemini inline data in asset and size processing
2026-06-15 00:14:40 +08:00
wangbo
b860ef37e8
增加单一源保护全局策略
2026-06-15 00:14:40 +08:00
chengcheng
e8df26da9b
feat(api): 支持取消本地排队任务
2026-06-09 19:09:20 +08:00
wangbo
a8fa8dd212
fix: 兼容像素分辨率参数
2026-06-08 23:21:14 +08:00
wangbo
97f29ed156
Restore standard MiniMax resolutions and client mapping
2026-06-08 09:29:45 +08:00
wangbo
ca5e71c8e8
Prefer public URLs and fall back to base64 for image inputs
2026-06-08 08:38:53 +08:00