From e7a4613bacd0db4873419b34a9fd3915b78da63f Mon Sep 17 00:00:00 2001 From: chiyi Date: Wed, 14 Oct 2026 16:59:13 +0800 Subject: [PATCH] =?UTF-8?q?fix(upstream):=20vivid=20=E5=8D=8F=E8=AE=AE?= =?UTF-8?q?=E7=9A=84=20quality=20=E5=8E=9F=E6=A0=B7=E9=80=8F=E4=BC=A0?= =?UTF-8?q?=E5=88=86=E8=BE=A8=E7=8E=87=E6=A1=A3=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit vivid 的 quality 就是模型自己的档位字符串——图像 1K/2K/4K、视频 720p/1080p。之前映射成 OpenAI 的 low/medium/high 导致视频上游收到 "1K" 报 4001 "该模型支持 720p"。现在原样透传,空值才默认 1K。 Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- backend/internal/service/v1.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/backend/internal/service/v1.go b/backend/internal/service/v1.go index 9e54614..bb7ee09 100644 --- a/backend/internal/service/v1.go +++ b/backend/internal/service/v1.go @@ -2475,11 +2475,12 @@ func upstreamVideoSize(aspectRatio, resolution string) string { } // vividQuality maps a resolution tier to the quality string a Vivid-protocol -// upstream expects ("1K"/"2K"/"4K"); empty → "1K" (required field). +// upstream expects. Vivid passes the tier through verbatim — "1K"/"2K"/"4K" +// for images, "720p"/"1080p"/"540p" for videos — so don't re-map to the OpenAI +// enum; only default a blank to "1K" (the field is required). func vividQuality(resolution string) string { - switch strings.ToUpper(strings.TrimSpace(resolution)) { - case "2K", "4K": - return strings.ToUpper(strings.TrimSpace(resolution)) + if q := strings.TrimSpace(resolution); q != "" { + return q } return "1K" }