feat(*): 短剧创作工作台 - 完善章节分镜、资产管理、技能运行与生成任务恢复

This commit is contained in:
ddCat
2026-08-29 23:34:46 +08:00
parent 4f07daae9e
commit 2f6832f99c
113 changed files with 7016 additions and 723 deletions

View File

@@ -128,6 +128,11 @@ test("task display does not claim a submitted Dreamina receipt is actively gener
expect(generationTaskStageLabel(officialCompleted)).toBe("官方返回状态:completed");
expect(generationTaskStatusLabel(generating)).toBe("生成中");
expect(generationTaskShowsProgress(generating)).toBe(true);
for (const stage of ["等待队列调度", "后端接管任务", "正在连接上游", "调用生成模型"]) {
expect(generationTaskShowsProgress({ ...generating, provider: "managed", stage })).toBe(false);
}
expect(generationTaskShowsProgress({ ...generating, provider: "managed", stage: "上游生成中" })).toBe(true);
expect(generationTaskStatusLabel(remoteRunning)).toBe("生成中");
});
@@ -185,6 +190,14 @@ test("Canvas task surfaces route Dreamina uncertainty through shared display sem
expect(createSource).not.toContain('generationStage === "submission_unknown" ? "cancelled"');
});
test("Canvas fullscreen video restores large controls instead of keeping the compact node layout", async () => {
const playerCSS = await Bun.file(new URL("../src/components/video-player.css", import.meta.url)).text();
expect(playerCSS).toContain(".canvas-video-player-compact:not([data-fullscreen])");
expect(playerCSS).toContain("--media-fullscreen-button-size: 52px");
expect(playerCSS).toContain("--media-slider-track-height: 7px");
expect(playerCSS).toContain("min-height: 64px");
});
test("task center deletion accepts only local Dreamina records", async () => {
await expect(deleteGenerationTask("backend-task-0001")).rejects.toThrow("当前任务不支持删除");
const source = await Bun.file(new URL("../src/pages/tasks/index.tsx", import.meta.url)).text();