生成管线与进度 API
生成管线由 GenerationManager 编排(services/generation.py),在后台线程按序执行五步管线,每步完成即写库。
进度映射
| current_step | 中文 | progress_percent |
|---|---|---|
| script | 剧本创作 | 5 |
| images | 文生图 | 20 |
| videos | 图生视频 | 40 |
| voice | 语音合成 | 70 |
| compose | 视频合成 | 85 |
| done | 完成 | 100 |
写库机制(SQLite 唯一数据源)
| 步骤 | 写库内容 |
|---|---|
| 创建项目 | 插入 projects 行(status=等待;config_snapshot = settings 全量 + 视频配置) |
| script 完成 | 更新 projects(status=进行中、scene_count)+ 批量插入 scenes 行 |
| images 完成 | 逐分镜 upsert scenes.image_url(V2.1 分镜级实时写库)+ 全量兜底 |
| videos 完成 | 逐分镜 upsert scenes.video_url + 全量兜底 |
| voice 完成 | 逐分镜 upsert scenes.voice_path / voice_duration + 全量兜底 |
| compose 完成 | 更新 projects(status=完成、final_video_url) |
| 任一步失败 | 更新 projects(status=失败、error_msg) |
磁盘不再保留 script.json;所有数据以 SQLite 为准,文件路径字符串入库。
状态 / 进度接口
GET /api/projects/{id}/statusstatus(等待/进行中/完成/失败)以 DB 为准;current_step/progress_percent从内存进度合并(仅进行中有值);- V2.2 起:status=等待且内存进度存在时返回内存 step/progress,前端立即显示 script 阶段 running。
分镜级实时进度
- images / videos / voice 三个阶段通过
on_scene_done(scene)回调逐分镜 UPSERT 写库; - 前端 3s 轮询即可看到该分镜产物,无需等待整个阶段;
- 每个 step 末尾保留一次全量
upsert_scenes()兜底补齐; - 失败分镜同样写库(status=失败),前端灰显对应卡片。
参数快照
项目创建时把 settings 全量 + 视频配置写入 projects.config_snapshot;生成时按快照构建 Agent 客户端,Agent 不直接读 settings。进行中任务保持旧参数,新任务使用新配置。