3.7 KiB
3.7 KiB
Phase 8: 自动剪辑模板与编排引擎设计
状态:规划中
基线:Phase 7 已完成上传 → 分类 → 生成 → 下载主链路
原则:Clean Architecture、单一环境真源、生产不构建、未实现不假入口
一、目标
Phase 8 的目标是把当前“用户上传素材后手动发起生成”的 MVP,升级为“按模板自动编排素材并生成成片”的自动剪辑 1.0。
一句话:用户选择项目、素材库和剪辑模板,系统自动选素材、排顺序、生成剪辑计划,并交给 FFmpeg Worker 输出成片。
二、不做范围
- 不做复杂 AI 脚本理解。
- 不做数字人、直播切片、自动带货文案生成。
- 不做真实支付/订阅闭环。
- 不做假模板市场或 mock 运营后台。
三、核心能力
-
剪辑模板管理
- 内置模板:基础混剪、产品展示、探店短片、口播素材拼接。
- 模板字段:比例、目标时长、片段数量、片段时长、分类偏好、转场策略、音乐策略。
-
自动选片
- 基于素材分类、质量分、时长、类型筛选候选素材。
- 生成候选片段列表,不直接修改原素材。
-
剪辑计划
- 新增
EditPlan聚合,保存自动编排结果。 - 新增
EditPlanClip,描述每个片段的素材、入点、出点、顺序、转场。 - 生成任务从“直接 FFmpeg”升级为“按 EditPlan 执行 FFmpeg”。
- 新增
-
前端工作流
- 项目生成页新增模板选择。
- 生成前展示剪辑计划预览。
- 用户确认后创建生成任务。
- 不支持的模板能力显示“暂未开放”,不得 fake success。
四、架构设计
Domain
EditTemplateEditPlanEditPlanClipTemplateKindClipSelectionRule
Ports
EditTemplateRepositoryEditPlanRepositoryClipSelectorEditPlanRenderer
Application Use Cases
ListEditTemplatesUseCasePreviewEditPlanUseCaseCreateEditPlanUseCaseCreateGenerationTaskFromEditPlanUseCase
Adapters
- SQLAlchemy repositories 保存模板与剪辑计划。
- Rule-based
ClipSelector先实现确定性选片。 - FFmpeg renderer 根据
EditPlan拼接视频。
API
GET /api/v1/edit-templatesPOST /api/v1/edit-plans/previewPOST /api/v1/edit-plansGET /api/v1/edit-plans/{id}POST /api/v1/generation/from-edit-plan
五、数据库迁移
新增 Alembic migration:
edit_templatesedit_plansedit_plan_clips
迁移规则:
- Alembic 是唯一迁移真源。
- 禁止生产自动建表。
- 新字段必须进入 schema guard。
六、前端页面
-
ProjectGeneration.tsx- 模板选择
- 参数输入
- 预览剪辑计划
- 创建生成任务
-
新增
EditPlanPreview.tsx- 片段顺序
- 素材名
- 分类标签
- 预计时长
- 缺素材提示
七、测试与验收
单元测试
- 模板参数校验。
- 自动选片规则。
- 剪辑计划生成。
- FFmpeg 命令计划生成。
集成测试
- 创建模板 → 上传素材 → 分类 → 预览计划 → 创建计划 → 生成任务。
公网 smoke
- 注册登录。
- 创建工作空间/项目/素材库。
- 上传小视频。
- 创建 edit plan。
- 生成 MP4。
- 下载验证
Content-Type: video/mp4。
八、发布门禁
npm run type-checknpm run buildpytest覆盖新增 use case/repository/API。- Alembic preflight 通过。
- 公网 smoke 通过。
- 生产部署继续 artifact/image 模式,生产机器不做前端构建。
九、里程碑
- Week 1:领域模型、迁移、repository、模板列表 API。
- Week 2:自动选片与剪辑计划 preview。
- Week 3:FFmpeg 按 EditPlan 拼接。
- Week 4:前端生成页接入、smoke、发布。