Skip to content

fix(images): preserve insufficient balance failures - #7442

Merged
Wei-Shaw merged 1 commit into
Wei-Shaw:mainfrom
wucm667:fix/issue-7436-image-balance-error
Sep 22, 2026
Merged

Wei-Shaw merged 1 commit into
Wei-Shaw:mainfrom
wucm667:fix/issue-7436-image-balance-error

Conversation

@wucm667

@wucm667 wucm667 commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

问题

被包装为 5xx 的 insufficient_balance 错误会触发瞬态故障转移,并在所有候选渠道耗尽后返回通用的耗尽错误,导致调用方无法稳定识别余额不足。

根因

外层 HTTP 状态分类先于语义化结构错误识别执行,使结构化的余额不足错误被归入瞬态服务端错误。

改动

  • 仅基于结构化、机器可读字段进行错误分类。
  • 对余额不足的渠道设置 5 分钟图片能力冷却。
  • 保留现有故障转移行为。
  • 候选渠道耗尽后稳定返回 HTTP 402,且 error.code=insufficient_balance。
  • 保留响应头。

验证

已验证:

  • go test -tags=unit ./...
  • go test -tags=integration ./...
  • golangci-lint run --timeout=30m ./...(0 issues)
  • go build -trimpath ./cmd/server
  • govulncheck ./...(0 called vulnerabilities)
  • 前端 lint、typecheck、关键 Vitest 和 build 均通过。

首次并发执行前端构建时遇到可恢复的 ENOTEMPTY 输出目录竞争;隔离后重新运行已通过。

Fixes #7436

@Wei-Shaw
Wei-Shaw merged commit 738ef1c into Wei-Shaw:main Sep 22, 2026
9 checks passed
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 22, 2026
@wucm667
wucm667 deleted the fix/issue-7436-image-balance-error branch September 23, 2026 08:46
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] /v1/images/edits: nested insufficient_balance is wrapped as 502, drains image account pool, then returns generic 503

2 participants