增加即梦的生图和生视频功能

This commit is contained in:
andy committed 2026-08-19 17:58:22 +08:00
1 parent a9a4cdf125
commit 542246e4ce
20 files changed
+1008 -53

No files matched your search

+8 -4
View File
@@ -39,7 +39,11 @@ func firstNonEmpty(values ...string) string {
}
func positiveInt64Env(getenv postgres.Getenv, name string, fallback int64) int64 {
value, err := strconv.ParseInt(strings.TrimSpace(getenv(name)), 10, 64)
return positiveInt64Value(getenv(name), fallback)
}
func positiveInt64Value(raw string, fallback int64) int64 {
value, err := strconv.ParseInt(strings.TrimSpace(raw), 10, 64)
if err != nil || value <= 0 {
return fallback
}
@@ -180,9 +184,9 @@ func providerVideoTargets(getenv postgres.Getenv) map[string]jobs.ProviderTarget
Provider: "seedance",
Model: firstNonEmpty(getenv("SEEDANCE_MODEL"), "doubao-seedance-2-0-260128"),
Settings: map[string]any{
"ratio": firstNonEmpty(getenv("SEEDANCE_DEFAULT_RATIO"), "9:16"),
"duration": float64(positiveInt64Env(getenv, "SEEDANCE_DEFAULT_DURATION", 5)),
"resolution": firstNonEmpty(getenv("SEEDANCE_DEFAULT_RESOLUTION"), "720p"),
"ratio": firstNonEmpty(getenv("SEEDANCE_RATIO"), getenv("SEEDANCE_DEFAULT_RATIO"), "9:16"),
"duration": float64(positiveInt64Value(firstNonEmpty(getenv("SEEDANCE_DURATION"), getenv("SEEDANCE_DEFAULT_DURATION")), 5)),
"resolution": firstNonEmpty(getenv("SEEDANCE_RESOLUTION"), getenv("SEEDANCE_DEFAULT_RESOLUTION"), "720p"),
},
},
"bailian": {
@@ -273,6 +273,21 @@ func TestProviderTargetsNeverSelectRemovedProvider(t *testing.T) {
}
}
func TestProviderVideoTargetsUseDocumentedSeedanceDefaults(t *testing.T) {
values := map[string]string{
"SEEDANCE_RATIO": "16:9",
"SEEDANCE_DURATION": "12",
"SEEDANCE_RESOLUTION": "1080p",
}
target := providerVideoTargets(func(name string) string { return values[name] })["seedance"]
if target.Model != "doubao-seedance-2-0-260128" {
t.Fatalf("model=%q", target.Model)
}
if target.Settings["ratio"] != "16:9" || target.Settings["duration"] != float64(12) || target.Settings["resolution"] != "1080p" {
t.Fatalf("settings=%#v", target.Settings)
}
}
func TestCapabilitySummaryMatchesConfiguredDefaultVideoEngine(t *testing.T) {
for _, test := range []struct {
name, engine, wantEngine, wantProvider, wantModel string