feat(phase2): 模板编辑器子路由全量迁移(38个端点) #641

Merged
auto-approve-bot merged 4 commits from feat/phase2-editor-subroutes into develop 2026-07-20 14:56:08 +08:00
Owner

变更内容

Phase 2 Step 6:模板编辑器子路由全量迁移,共新增38个端点,全部复用 EditPlanService,零业务逻辑复制。

第一批(16个端点)

  • BGM模块:GET/PUT /bgm + GET /bgm/presets(3个)
  • 生成模块:POST /generate + GET /generation-status + GET /generations(3个)
  • 时间线:GET /timeline(1个)
  • 转场模块:GET /transition-presets + PUT /clips/{id}/transition + POST /transitions/batch(3个)
  • 滤镜模块:GET /filter-presets + GET/PUT /filter(3个)
  • 导出模块:GET /export-presets + GET/PUT /export(3个)

第二批(22个端点)

  • AI推荐:POST /ai-recommend(1个)
  • 封面生成:POST /generate-cover(1个)
  • 字幕模块:CRUD + 批量更新(5个)
  • 片段调整:speed/volume/trim/adjustments/batch-speed(5个)
  • 封面管理:GET/PUT /cover + extract + smart(4个)
  • 片段批量:reorder + batch-delete + from-assets(3个)
  • 片段详情+分割合并:GET详情 + split + merge(3个)

合计

模板编辑器总端点:45个(核心7 + 第一批16 + 第二批22)

设计原则

  • 路由层零业务逻辑,全部转发到 EditPlanService
  • 通过 get_draft_plan_id 依赖将 template_id 转换为 plan_id
  • 草稿与普通剪辑计划通过 config.is_template_draft=True 区分
  • 向后兼容:原 /edit-plans/* 路由继续保留(已加deprecated标记,PR #640)
## 变更内容 Phase 2 Step 6:模板编辑器子路由全量迁移,共新增38个端点,全部复用 EditPlanService,零业务逻辑复制。 ### 第一批(16个端点) - BGM模块:GET/PUT /bgm + GET /bgm/presets(3个) - 生成模块:POST /generate + GET /generation-status + GET /generations(3个) - 时间线:GET /timeline(1个) - 转场模块:GET /transition-presets + PUT /clips/{id}/transition + POST /transitions/batch(3个) - 滤镜模块:GET /filter-presets + GET/PUT /filter(3个) - 导出模块:GET /export-presets + GET/PUT /export(3个) ### 第二批(22个端点) - AI推荐:POST /ai-recommend(1个) - 封面生成:POST /generate-cover(1个) - 字幕模块:CRUD + 批量更新(5个) - 片段调整:speed/volume/trim/adjustments/batch-speed(5个) - 封面管理:GET/PUT /cover + extract + smart(4个) - 片段批量:reorder + batch-delete + from-assets(3个) - 片段详情+分割合并:GET详情 + split + merge(3个) ### 合计 模板编辑器总端点:45个(核心7 + 第一批16 + 第二批22) ### 设计原则 - 路由层零业务逻辑,全部转发到 EditPlanService - 通过 get_draft_plan_id 依赖将 template_id 转换为 plan_id - 草稿与普通剪辑计划通过 config.is_template_draft=True 区分 - 向后兼容:原 /edit-plans/* 路由继续保留(已加deprecated标记,PR #640)
xiaoxia added 1 commit 2026-07-20 13:49:35 +08:00
feat(phase2): 模板编辑器子路由迁移第一批(BGM/生成/时间线/转场/滤镜/导出)
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 11s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
AI Code Review / AI Code Review (pull_request) Successful in 2m3s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m5s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 3m14s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 5m16s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 5m12s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 6m39s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 6m39s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m49s
5d106319d0
新增16个模板编辑器端点:
- BGM: GET/PUT /bgm + GET /bgm/presets(3个)
- 生成: POST /generate + GET /generation-status + GET /generations(3个,含4个自动兜底+队列限流)
- 时间线: GET /timeline(1个)
- 转场: GET /transition-presets + PUT /clips/{id}/transition + POST /transitions/batch(3个)
- 滤镜: GET /filter-presets + GET/PUT /filter(3个)
- 导出: GET /export-presets + GET/PUT /export(3个)

总计: 模板编辑器从7个端点 → 23个端点
全部复用 EditPlanService 业务逻辑,零代码重复

🚀 预览环境已部署

项目 详情
PR号 #641
预览链接 https://pr-641.preview.xiaoxiajianji.com
API环境 staging

💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。

🔄 每次提交新代码后预览环境会自动更新。

🗑️ PR 关闭或合并后,预览环境会自动清理。

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #641 | | 预览链接 | [https://pr-641.preview.xiaoxiajianji.com](https://pr-641.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
xiaoxia added 1 commit 2026-07-20 14:07:00 +08:00
feat(phase2): 模板编辑器子路由迁移第二批(AI/字幕/调整/封面/批量/分割合并)
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 16s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 17s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
AI Code Review / AI Code Review (pull_request) Failing after 38s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 3m22s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 4m10s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 4m40s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 5m0s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 5m0s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m6s
d5b94d7590
- 新增22个端点:AI推荐、封面生成、字幕CRUD(5)、片段调整(5)、封面管理(4)、片段批量(3)、片段详情、分割、合并
- 全部复用 EditPlanService,零业务逻辑复制
- 模板编辑器总端点达到45个
xiaoxia changed title from feat(phase2): 模板编辑器子路由迁移第一批(BGM/生成/时间线/转场/滤镜/导出) to feat(phase2): 模板编辑器子路由全量迁移(38个端点) 2026-07-20 14:08:05 +08:00
xiaoxia added 1 commit 2026-07-20 14:31:01 +08:00
feat(phase2): 模板编辑器子路由全量迁移 + 单元测试
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 24s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 30s
AI Code Review / AI Code Review (pull_request) Successful in 3m56s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Failing after 1m16s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 7m5s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 3m48s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 6m52s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 8m51s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m1s
498219b2e7
- 38个新端点:BGM/生成/时间线/转场/滤镜/导出/AI/字幕/调整/封面/批量/分割合并
- 26个单元测试用例,覆盖草稿/片段/BGM/时间线/生成等核心路径
- 全部复用 EditPlanService,零业务逻辑复制
- 模板编辑器总端点:45个(核心7 + 子路由38)
xiaoxia added 1 commit 2026-07-20 14:48:37 +08:00
test(phase2): 模板编辑器单元测试补全(30个用例,42%覆盖率)
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 15s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Successful in 1m12s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m30s
AI Code Review / AI Code Review (pull_request) Successful in 1m59s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 3m38s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 4m17s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 4m35s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m50s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 7m30s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 15s
c47c000396
- 覆盖草稿/片段/BGM/时间线/字幕/生成等核心模块
- 增量覆盖率42%,超过40%门禁门槛
Collaborator

代码审查结果 - PR #641

⚠️ 问题(2个需要修改)

  1. apps/api/app/api/routes/templates_editor.py (get_editor_timeline函数):获取时间线数据时使用了硬编码的分页限制 limit=200

    • 说明:如果模板包含超过200个片段,时间线数据将被截断,导致前端展示不完整且计算的总时长不准确。
    • 后果:长视频/复杂模板编辑功能异常,用户体验受损。
    • 建议:移除 limit 参数或设置为一个非常大的合理上限(如10000),确保获取所有片段。
  2. apps/api/app/api/routes/templates_editor.py (batch_update_editor_transitions函数):批量更新转场时使用了硬编码的分页限制 limit=500

    • 说明:如果片段数量超过500,后续片段将无法被更新,导致数据不一致。
    • 后果:部分片段的转场效果未生效,生成视频结果不符合预期。
    • 建议:同上,移除限制或确保覆盖所有片段。

💡 建议(3个可选)

  1. apps/api/app/api/routes/templates_editor.py (batch_update_editor_transitions函数):存在 N+1 性能问题。

    • 说明:代码在循环中调用 plan_svc.update_clip,如果有大量片段,会产生大量的数据库写操作。建议在 Service 层实现真正的批量更新方法(如 batch_update_clips),减少数据库交互开销。
  2. apps/api/app/api/routes/templates_editor.py (_auto_fallback_auto_material_mode函数)import random 位于函数内部。

    • 说明:虽然在功能上可行,但将 import 语句放在函数内部会降低代码执行效率(每次调用都需导入),且不符合 Python 编码规范(PEP 8)。
    • 建议:将 import random 移至文件顶部。
  3. apps/api/app/api/routes/templates_editor.py (_auto_fallback_auto_material_mode函数):加载素材库可能存在性能隐患。

    • 说明asset_repo.find_by_library(video_lib.id) 没有分页限制,如果素材库包含成千上万个视频文件,会一次性加载到内存中,仅为了随机选取一个。
    • 建议:在 Repository 层实现随机获取素材的方法(如 SQL ORDER BY RANDOM() LIMIT 1),避免全量数据加载。

格式检查通过 | 逻辑审查需修改 | ⚠️ 建议关注性能


🤖 由 AI 代码审查机器人自动生成 | 2026-07-20 14:50:36 | 模型:

## 代码审查结果 - PR #641 ### ⚠️ 问题(2个需要修改) 1. **apps/api/app/api/routes/templates_editor.py (get_editor_timeline函数)**:获取时间线数据时使用了硬编码的分页限制 `limit=200`。 - **说明**:如果模板包含超过200个片段,时间线数据将被截断,导致前端展示不完整且计算的总时长不准确。 - **后果**:长视频/复杂模板编辑功能异常,用户体验受损。 - **建议**:移除 `limit` 参数或设置为一个非常大的合理上限(如10000),确保获取所有片段。 2. **apps/api/app/api/routes/templates_editor.py (batch_update_editor_transitions函数)**:批量更新转场时使用了硬编码的分页限制 `limit=500`。 - **说明**:如果片段数量超过500,后续片段将无法被更新,导致数据不一致。 - **后果**:部分片段的转场效果未生效,生成视频结果不符合预期。 - **建议**:同上,移除限制或确保覆盖所有片段。 ### 💡 建议(3个可选) 1. **apps/api/app/api/routes/templates_editor.py (batch_update_editor_transitions函数)**:存在 N+1 性能问题。 - **说明**:代码在循环中调用 `plan_svc.update_clip`,如果有大量片段,会产生大量的数据库写操作。建议在 Service 层实现真正的批量更新方法(如 `batch_update_clips`),减少数据库交互开销。 2. **apps/api/app/api/routes/templates_editor.py (_auto_fallback_auto_material_mode函数)**:`import random` 位于函数内部。 - **说明**:虽然在功能上可行,但将 `import` 语句放在函数内部会降低代码执行效率(每次调用都需导入),且不符合 Python 编码规范(PEP 8)。 - **建议**:将 `import random` 移至文件顶部。 3. **apps/api/app/api/routes/templates_editor.py (_auto_fallback_auto_material_mode函数)**:加载素材库可能存在性能隐患。 - **说明**:`asset_repo.find_by_library(video_lib.id)` 没有分页限制,如果素材库包含成千上万个视频文件,会一次性加载到内存中,仅为了随机选取一个。 - **建议**:在 Repository 层实现随机获取素材的方法(如 SQL `ORDER BY RANDOM() LIMIT 1`),避免全量数据加载。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-20 14:50:36 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
auto-approve-bot approved these changes 2026-07-20 14:53:12 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-07-20 14:53:13 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot merged commit 850db009cb into develop 2026-07-20 14:56:08 +08:00
auto-approve-bot deleted branch feat/phase2-editor-subroutes 2026-07-20 14:56:08 +08:00

🗑️ 预览环境已清理

PR #641 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #641 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Sign in to join this conversation.