Files
2026-06-22 13:19:45 +08:00

145 lines
3.7 KiB
Markdown
Raw Permalink Blame History

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