refactor(worker): generate_video直接读取edit_plan_clips渲染,删除内存重建逻辑 #1468

Merged
xiaoxia merged 5 commits from refactor/worker-use-edit-plan-clips into develop 2026-08-23 16:03:31 +08:00
Owner

核心改造

generate_video 有 source_edit_plan_id 时直接调 RenderAdapter.render_plan(plan_id) 从数据库渲染,不再内存重建 clips。

改动清单

  1. 新API端点 PUT /templates/{id}/editor/clips:批量替换clips(delete_all+create+mark_ready)
  2. Worker核心 generation.py:新增_sync_task_config_to_plan + _render_from_edit_plan,有source_edit_plan_id走新路径,旧路径标DEPRECATED
  3. RenderAdapter render_plan新增voiceover_audio_path参数透传
  4. 删除死代码 edit_plan_generation.py(452行)+compose_video.py(198行)+celery注册清理+2个过时测试文件
  5. 旧路由 templates_editor/generation.py的send_task改为worker.generate_video

测试

  • 新增3个batch clips端点测试
  • 全量13790 passed, 8 skipped
## 核心改造 generate_video 有 source_edit_plan_id 时直接调 RenderAdapter.render_plan(plan_id) 从数据库渲染,不再内存重建 clips。 ## 改动清单 1. **新API端点** PUT /templates/{id}/editor/clips:批量替换clips(delete_all+create+mark_ready) 2. **Worker核心** generation.py:新增_sync_task_config_to_plan + _render_from_edit_plan,有source_edit_plan_id走新路径,旧路径标DEPRECATED 3. **RenderAdapter** render_plan新增voiceover_audio_path参数透传 4. **删除死代码** edit_plan_generation.py(452行)+compose_video.py(198行)+celery注册清理+2个过时测试文件 5. **旧路由** templates_editor/generation.py的send_task改为worker.generate_video ## 测试 - 新增3个batch clips端点测试 - 全量13790 passed, 8 skipped
xiaoxia added 1 commit 2026-08-23 15:14:16 +08:00
refactor(worker): generate_video直接读取edit_plan_clips渲染,删除内存重建逻辑
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 / Staging E2E Tests (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 / Check if frontend-only change (pull_request) Successful in 40s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m34s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m46s
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m54s
AI Code Review / AI Code Review (pull_request) Failing after 2m10s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m16s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 31s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m46s
CI/CD Pipeline / Validate - Code Quality (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
PR Automation / Auto Approve on CI Green (pull_request) Has been cancelled
0cb67afd61
核心改造:
- 有source_edit_plan_id时,Worker直接调用RenderAdapter.render_plan(plan_id)
  从数据库加载edit_plan+clips渲染,不再_download_all_assets+_build_plan_and_clips
- 新增_sync_task_config_to_plan:将title_config/bgm_config/分辨率同步到plan.config,
  配音下载后通过voiceover_audio_path传给RenderAdapter
- 无source_edit_plan_id时保留旧路径(标记DEPRECATED)
- RenderAdapter.render_plan新增voiceover_audio_path参数透传给_do_render

新增API:
- PUT /templates/{id}/editor/clips 批量替换clips(delete_all+create+mark_ready)
- EditorClipBatchItem/EditorClipBatchUpdateRequest/EditorClipBatchUpdateResponse schema

删除死代码:
- worker_app/tasks/edit_plan_generation.py(worker.render_edit_plan,452行)
- worker_app/tasks/compose_video.py(worker.compose_video,198行)
- celery_app.py imports清理、tasks/__init__.py清理
- test_edit_plan_worker_failure.py、test_cover_url_finalize.py(测试已删除模块)
- templates_editor/generation.py的send_task改为worker.generate_video

新增3个单测,全量13790 passed

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1468 | | 预览链接 | [https://pr-1468.preview.xiaoxiajianji.com](https://pr-1468.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot added 1 commit 2026-08-23 15:17:15 +08:00
style: auto-format with black + isort + prettier [skip ci-format-check]
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 / Staging E2E Tests (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 / Check if frontend-only change (pull_request) Successful in 49s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m32s
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
AI Code Review / AI Code Review (pull_request) Failing after 1m50s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m52s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m1s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 31s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m25s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m41s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m44s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 3m9s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 5m2s
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 / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m43s
CI/CD Pipeline / CI Gate (pull_request) Successful in 7s
dd7513a512
auto-approve-bot approved these changes 2026-08-23 15:25:30 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-08-23 15:25:30 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
xiaoxia added 1 commit 2026-08-23 15:32:14 +08:00
fix(editor): 批量更新clips加事务保护+asset_id校验 (#1468)
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 / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 31s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 40s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m43s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m42s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m53s
AI Code Review / AI Code Review (pull_request) Failing after 2m13s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m33s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 2m4s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 3m14s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m33s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 3m31s
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 / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m46s
CI/CD Pipeline / CI Gate (pull_request) Failing after 8s
0386a1f08f
AI Code Review 修复:
1. batch_update_clips 改用 replace_all_clips_transactional:
   清空→创建→标记ready 在同一事务内完成,失败自动 rollback
2. EditorClipBatchItem.asset_id 加 min_length=1 校验,
   禁止空字符串避免脏数据

新增 8 个测试(5 endpoint + 3 service),全量相关 92 passed。
xiaoxia added 1 commit 2026-08-23 15:39:10 +08:00
fix(editor): B017 lint修复 pytest.raises(Exception)→ValidationError
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 / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 32s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m20s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m40s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m39s
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m43s
AI Code Review / AI Code Review (pull_request) Failing after 2m9s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 31s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m42s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m41s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 3m30s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 5m17s
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 / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
ee561b0d64
Collaborator

【阻塞级判定】

  • 是否存在阻塞级问题:是
  • 阻塞级问题数量:3 个

📊 审查概览

  • 整体评价:需修改
  • 建议级问题数量:2 个

🔴 阻塞级问题(必须修复)

  1. [apps/api/app/api/routes/templates_editor/schemas.py: 497] Schema 字段验证与服务逻辑不匹配

    • 问题类型:逻辑bug
    • 问题描述:EditorClipBatchItem.asset_id 定义了 min_length=1,这意味着该字段不能为空字符串。然而,在 edit_plan_service.pyreplace_all_clips_transactional 方法中,逻辑明确处理了 asset_id != "" 的情况来区分状态(有 asset 为 ready,无 asset 为 pending)。这表明服务层支持空 asset_id(例如用于纯文本片段),但 API 层的 Schema 强制禁止了空值,导致前端无法创建无素材关联的片段。
    • 修改建议:移除 min_length=1 限制,或根据业务需求确认 asset_id 是否必填。如果支持空 asset,应允许空字符串通过验证。
  2. [apps/api/app/api/routes/templates_editor/draft.py: 141-148] 批量更新时 order 字段默认值逻辑错误

    • 问题类型:逻辑bug
    • 问题描述:在构建 clips_data 时,代码无条件地包含 "order": clip_item.order。由于 EditorClipBatchItemorder 的默认值为 0,当用户未指定顺序时,所有片段的 order 都会被显式设置为 0。在 edit_plan_service.py 中,逻辑 order = clip_item["order"] if "order" in clip_item else i 会检测到 "order" 键存在并使用传入的 0,导致所有未排序的片段 order 均为 0,破坏了预期的排序逻辑(应默认为索引 i)。
    • 修改建议:在 draft.py 中构建字典时,应检查用户是否显式提供了 order,或者修改 Schema 中 order 的默认值为 None,并在服务层处理 None 时回退到索引 i。最简单的修复是在 draft.py 中仅当用户提供了 order 时才将其加入字典。
  3. [apps/api/app/api/routes/templates_editor/generation.py: 200] 调用未修改的任务导致参数不匹配

    • 问题类型:逻辑bug
    • 问题描述:代码将任务调用从 worker.render_edit_plan(接收 plan_id)改为 worker.generate_video,并传入 gen_task.id(即 job_id)。然而,PR 的修改文件列表中不包含 apps/worker/worker_app/tasks/generation.py,这意味着 worker.generate_video 任务的定义并未被修改。如果该任务原本期望接收 generation_idplan_id,现在传入 job_id 将导致任务执行失败或逻辑错误。
    • 修改建议:确认 worker.generate_video 任务是否已支持接收 job_id 并从中解析 plan_id。如果未修改,必须同步修改 worker.generate_video 的实现以适配新的参数类型,或者恢复原有的任务调用逻辑。

💡 改进建议(不阻塞合并)

  1. [apps/api/app/services/edit_plan_service.py: 406-423] 手动映射 ORM 模型存在维护风险

    • 具体内容:在 replace_all_clips_transactional 中,代码手动将 EditPlanClip 对象的属性映射到 EditPlanClipModel。这种硬编码映射容易出错,当领域模型或数据库模型增加字段时容易遗漏。建议使用 ORM 的映射机制或重构为 Repository 层的转换方法。
  2. [apps/api/app/services/edit_plan_service.py: 389-392] 循环删除性能较差

    • 具体内容:在事务中通过循环 db.delete(existing) 逐个删除现有片段。虽然注释提到是为了触发 ORM 事件,但如果数据量较大(如数百个片段),这会产生大量的 SQL 语句。如果 ORM 事件不是强依赖(如仅用于级联删除),建议使用 db.query(...).delete(synchronize_session=False) 进行批量删除以提升性能。

良好实践

  • replace_all_clips_transactional 方法正确使用了事务处理(try...commit...except...rollback),保证了数据的一致性。
  • 移除了 celery_app.py 中不再使用的任务导入,保持了配置的整洁。

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


🤖 由 AI 代码审查机器人自动生成 | 2026-08-23 07:49:58 | 模型:

### 【阻塞级判定】 - 是否存在阻塞级问题:是 - 阻塞级问题数量:3 个 ### 📊 审查概览 - 整体评价:需修改 - 建议级问题数量:2 个 ### 🔴 阻塞级问题(必须修复) 1. **[apps/api/app/api/routes/templates_editor/schemas.py: 497] Schema 字段验证与服务逻辑不匹配** - 问题类型:逻辑bug - 问题描述:`EditorClipBatchItem.asset_id` 定义了 `min_length=1`,这意味着该字段不能为空字符串。然而,在 `edit_plan_service.py` 的 `replace_all_clips_transactional` 方法中,逻辑明确处理了 `asset_id != ""` 的情况来区分状态(有 asset 为 ready,无 asset 为 pending)。这表明服务层支持空 `asset_id`(例如用于纯文本片段),但 API 层的 Schema 强制禁止了空值,导致前端无法创建无素材关联的片段。 - 修改建议:移除 `min_length=1` 限制,或根据业务需求确认 `asset_id` 是否必填。如果支持空 asset,应允许空字符串通过验证。 2. **[apps/api/app/api/routes/templates_editor/draft.py: 141-148] 批量更新时 `order` 字段默认值逻辑错误** - 问题类型:逻辑bug - 问题描述:在构建 `clips_data` 时,代码无条件地包含 `"order": clip_item.order`。由于 `EditorClipBatchItem` 中 `order` 的默认值为 `0`,当用户未指定顺序时,所有片段的 `order` 都会被显式设置为 `0`。在 `edit_plan_service.py` 中,逻辑 `order = clip_item["order"] if "order" in clip_item else i` 会检测到 "order" 键存在并使用传入的 `0`,导致所有未排序的片段 `order` 均为 `0`,破坏了预期的排序逻辑(应默认为索引 `i`)。 - 修改建议:在 `draft.py` 中构建字典时,应检查用户是否显式提供了 `order`,或者修改 Schema 中 `order` 的默认值为 `None`,并在服务层处理 `None` 时回退到索引 `i`。最简单的修复是在 `draft.py` 中仅当用户提供了 `order` 时才将其加入字典。 3. **[apps/api/app/api/routes/templates_editor/generation.py: 200] 调用未修改的任务导致参数不匹配** - 问题类型:逻辑bug - 问题描述:代码将任务调用从 `worker.render_edit_plan`(接收 `plan_id`)改为 `worker.generate_video`,并传入 `gen_task.id`(即 `job_id`)。然而,PR 的修改文件列表中**不包含** `apps/worker/worker_app/tasks/generation.py`,这意味着 `worker.generate_video` 任务的定义并未被修改。如果该任务原本期望接收 `generation_id` 或 `plan_id`,现在传入 `job_id` 将导致任务执行失败或逻辑错误。 - 修改建议:确认 `worker.generate_video` 任务是否已支持接收 `job_id` 并从中解析 `plan_id`。如果未修改,必须同步修改 `worker.generate_video` 的实现以适配新的参数类型,或者恢复原有的任务调用逻辑。 ### 💡 改进建议(不阻塞合并) 1. **[apps/api/app/services/edit_plan_service.py: 406-423] 手动映射 ORM 模型存在维护风险** - 具体内容:在 `replace_all_clips_transactional` 中,代码手动将 `EditPlanClip` 对象的属性映射到 `EditPlanClipModel`。这种硬编码映射容易出错,当领域模型或数据库模型增加字段时容易遗漏。建议使用 ORM 的映射机制或重构为 Repository 层的转换方法。 2. **[apps/api/app/services/edit_plan_service.py: 389-392] 循环删除性能较差** - 具体内容:在事务中通过循环 `db.delete(existing)` 逐个删除现有片段。虽然注释提到是为了触发 ORM 事件,但如果数据量较大(如数百个片段),这会产生大量的 SQL 语句。如果 ORM 事件不是强依赖(如仅用于级联删除),建议使用 `db.query(...).delete(synchronize_session=False)` 进行批量删除以提升性能。 ### ✅ 良好实践 - `replace_all_clips_transactional` 方法正确使用了事务处理(`try...commit...except...rollback`),保证了数据的一致性。 - 移除了 `celery_app.py` 中不再使用的任务导入,保持了配置的整洁。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-08-23 07:49:58 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia added 1 commit 2026-08-23 15:54:48 +08:00
fix(editor): 移除asset_id min_length限制+order默认None (#1468)
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 / Staging E2E Tests (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 / Check if frontend-only change (pull_request) Successful in 45s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 44s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m49s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m52s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m53s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m23s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m44s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m35s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 3m9s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 5m54s
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 / Canary Release to Production (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
AI Code Review / AI Code Review (pull_request) Successful in 6m51s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m15s
CI/CD Pipeline / CI Gate (pull_request) Successful in 6s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 39s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 57s
6f222db4c7
AI Code Review 第三轮修复:
1. EditorClipBatchItem.asset_id 移除 min_length=1,允许空字符串(占位片段场景)
2. EditorClipBatchItem.order 默认值改为 None(非0),仅在显式传入时加入 dict
3. 服务层 order 逻辑:dict 无 order key 时回退到索引 i
4. 测试更新:9 passed
xiaoxia force-pushed refactor/worker-use-edit-plan-clips from 951184c23a to 6f222db4c7 2026-08-23 15:54:48 +08:00 Compare
xiaoxia merged commit b4e3bb0fe7 into develop 2026-08-23 16:03:31 +08:00

🗑️ 预览环境已清理

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

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

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