feat(*): 生图与视频工作台 - 新增独立生成流程并整合平台配置

This commit is contained in:
ddcat666 committed 2026-10-13 09:04:34 +08:00
1 parent 4c1d2b4012
commit 1f3f2c6020
69 files changed
+7108 -87

No files matched your search

+28
View File
@@ -31,6 +31,34 @@ func TestTaskForOutputRedactsRoutingAndSecrets(t *testing.T) {
}
}
func TestTaskOutputIncludesOnlySafeWorkbenchRestoreData(t *testing.T) {
task := model.Task{InputJSON: `{"mode":"video","metadata":{"source":"workbench","workbenchKind":"video","workbenchToolId":"tool-1","workbenchPresetId":"preset-1","workbench":{"kind":"video","parameters":{"seconds":8,"ratio":"16:9","resolution":"1080p","generateAudio":true},"references":[{"resourceId":"resource-1","kind":"image","role":"first_frame","slotKey":"subject"}]}},"config":{"apiKey":"private-key","videoSeconds":"8","size":"16:9","vquality":"1080p"},"referenceImages":[{"resourceId":"resource-1","storageKey":"resource:resource-1","role":"first_frame","slotKey":"subject"}]}`}
publicJSON := publicTaskInputJSON(task.InputJSON)
var output map[string]any
if err := json.Unmarshal([]byte(publicJSON), &output); err != nil {
t.Fatal(err)
}
if _, exists := output["config"]; exists {
t.Fatal("provider config leaked from workbench restore data")
}
workbench, ok := output["workbench"].(map[string]any)
if !ok || workbench["kind"] != "video" {
t.Fatalf("workbench restore data missing: %#v", output)
}
parameters, ok := workbench["parameters"].(map[string]any)
if !ok || parameters["seconds"] != float64(8) || parameters["ratio"] != "16:9" || parameters["generateAudio"] != true {
t.Fatalf("workbench parameters not preserved safely: %#v", workbench)
}
references, ok := workbench["references"].([]any)
if !ok || len(references) != 1 {
t.Fatalf("workbench references missing: %#v", workbench)
}
reference := references[0].(map[string]any)
if reference["resourceId"] != "resource-1" || reference["kind"] != "image" || reference["role"] != "first_frame" || reference["slotKey"] != "subject" {
t.Fatalf("safe reference fields not preserved: %#v", reference)
}
}
func TestTaskMediaPreviewUsesSafeMediaURLs(t *testing.T) {
previewURL, previewKind := taskMediaPreview(`{"images":["data:image/png;base64,AAAA","/api/resources/resource-1/file"],"video":"https://cdn.example.com/output.mp4"}`, "video")
if previewURL != "/api/resources/resource-1/file" || previewKind != "image" {