批量预案与自动成片
操作
- 单项目或批量输入主题/完整文稿,选择预案模板并调整本次设置。
- 创建只生成文稿、分镜和提示词。批量每次 2–50 项,主题每行一项;完整文稿每张卡片一篇,换行与空行不分成新项目。一个导入文件对应一篇,最多同时提取两个文件;单文件 20 MiB、正文 5000 字,不截断。
- 预览、编辑与试听可选。在批次详情可全选当前可生产项,点击“确认并生成 N 个视频”。失败或版本冲突逐项提示,其余有效项继续;未就绪项目不会后来自动加入。
- 后端连续生成图片、配音、MP4,关闭页面仍推进。渲染失败重试时复用成功素材。单项目使用同一流程。
- 成片可播放或下载。剪映草稿在导出中心按需构建,仍支持任意本机目录,同名默认副本,替换保留备份。
模板目录共用,单项目和批量的当前设置独立。应用模板复制参数;后续改模板不会改已提交任务。批量的主题/文稿输入及设置分别保存在本机浏览器,刷新可恢复。模板目标字数 0 代表自动,老模板补为 300。模板页可以编辑完整参数,保存新模板与编辑已有模板分开操作。
调度与兼容
- 每批并发默认 3,可选 1–10。预案和素材阶段共用本批额度,系统生成执行池共用 10 个名额。等待确认不占名额。状态区区分实际运行、等待名额与服务商限流/重试。
- 导出工作线程 2 个,FFmpeg 同时渲染 1 个;排队渲染可取消,不承诺同时压制 10 个视频。
- 新流程仅由明确确认创建。旧任务不会升级后自动生成媒体。旧
finalize、导出、查询及取消接口仍保留。 POST /batches新增input_mode=theme|script,items[].content;旧items[].theme按主题兼容。文稿模式强制原文保留。POST /tasks/{id}/confirm-production提交snapshot_key和plan_version。POST /batches/{id}/confirm-production提交items: [{task_id,snapshot_key,plan_version}],返回逐项 accepted/already_running/already_completed/conflict/error。POST /tasks/{id}/cancel-production、POST /batches/{id}/cancel-production停止成片;原批次 cancel 用于停止预案。任务删除仍由原生命周期管理取消并等待写入退出。- 历史失败任务没有输入模式证据时,工作台要求选择主题/完整文稿,
PATCH /tasks/{id}/input-mode保存选择后继续。不根据文本长度推测。 /templates和模板 ID 不变;仅统一界面为“预案模板”。
数据与恢复
增量迁移 20260906_batch_video 扩展批次并发约束,保留批次/条目/索引/任务关联;增加原始输入及模式来源、模板字数与 production_flows。已有数据库升级前通过 SQLite backup 保存同目录 local.db.before-batch-video.bak,重复启动不重复迁移。
生产记录保存确认版本及签名、阶段、渲染 job、取消和错误。重复确认同一版本复用流程;已确认但尚未执行的队列重启后继续。执行中的服务商调用重启后标为可重试失败;渲染连接已有持久化导出记录,未开始的继续、正在执行的标为中断,不静默重调服务商。编辑后的旧版本不能作为新成片发布。
需要回退数据时:先停止前后端,额外备份当前数据库及 -wal/-shm(若存在),用 SQLite backup 将升级前备份恢复到一个新数据库,确认后再切换;同时使用升级前代码。不要在服务运行时覆盖数据库。迁移不移动媒体,生产失败/取消不清理资产;旧版本程序不要直接写升级后的数据库。
验证方式
- 后端:
venv311/bin/python -m pytest -q,正式回归应设置独立INSIGHTCUT_DATA_ROOT与INSIGHTCUT_DB_PATH。 - 前端:
npm run test:all、npx playwright test、npm run build。 - 真实后端浏览器回归:
INSIGHTCUT_E2E_RUNTIME_DIR=/tmp/insightcut-e2e npx playwright test --config playwright.fullstack.config.js。该配置通过scripts/e2e_server.py生成真实 PNG/WAV,禁止供应商网络请求,使用真实数据库/API/调度器/FFmpeg。 - 本地完整产物链路:
venv311/bin/python scripts/verify_local_flow.py,临时数据根目录,验证自动 MP4、音轨/时长、SRT/VTT、两类素材包、草稿结构及本地副本/备份。
最终结果和真实服务商、剪映客户端验收状态见下方本轮验收记录。模拟供应商通过不代表真实音画质量或剪映客户端打开已通过。
本轮验收记录(2026-09-07)
- 后端隔离全量回归 426 项通过;前端逻辑 139 项、组件 43 项通过;浏览器模拟接口回归 7 项通过。
- 真实后端浏览器共验证 6 个场景:2 项预案、50 项并发 10、取消大批次、三篇多段原稿不预览直接确认并离开页面、单项目自动成片、390px 手机输入与预览。使用隔离数据库、假供应商、实际 PNG/WAV/FFmpeg。
- 完整本地产物链路通过:自动 MP4(无预先草稿)、SRT/VTT、两类素材包、草稿 ZIP、本地副本和备份替换;ffprobe 确认音轨与有效时长,检查草稿素材引用和字幕样式。前端生产构建、Python 编译和 diff 格式检查通过。
| 真实案例 | 输入 | 最终视频 | 本轮发现 |
|---|---|---|---|
| 彩虹主题 | 主题 | 14.409 秒,1920×1080,有音轨 | 首次完成 |
| 猫咪主题 | 主题 | 15.342 秒,1920×1080,有音轨 | 首次生文失败,明确重试后成功;重试仍为主题模式。6 个分镜中 2 个为通用兜底提示词 |
| 原稿一 | 完整文稿 | 6.942 秒,1920×1080,有音轨 | 原文与空行保留,首次完成 |
| 原稿二 | 完整文稿 | 6.075 秒,1920×1080,有音轨 | 原文与空行保留,首次完成 |
猫咪主题首次失败日志仅确定在 text_generation 阶段出现 RuntimeError,错误分类为 unknown;脱敏日志不能确定具体根因,不能直接归因为 JSON 解析或服务商宕机。首次结果为 3/4 完成,一次明确重试后为 4/4 完成。通用提示词表示对应画面可能不够贴合原文,需要实际预览判断。
真实案例保留在本机“批量预案”中,名称以 [验收0906] 开头。可直接打开主题批次或完整文稿批次。结构化证据见 batch-video-verification.json。
真实剪映客户端打开、真实音画主观质量:未验收。发布状态以仓库 master 的提交和 CI 为准;没有清理用户素材,迁移前备份已保留。