refactor: 删除legacy渲染引擎,统一走unified引擎 #599 #608

Merged
auto-approve-bot merged 10 commits from feature/remove-legacy-render-engine into develop 2026-07-20 09:43:50 +08:00
Owner

概述

删除 legacy 渲染引擎,统一走 unified 引擎,完成架构清理。

Closes #599

变更内容

删除的文件 (2个)

  • apps/worker/video_processing/render_engine_resolver.py - 整个 Feature Flag 切换层(含 Redis feature flag、定时刷新、白名单/百分比灰度)
  • tests/unit/test_generation_feature_flag.py - legacy 引擎相关的单测

修改的文件 (6个)

核心渲染路径

  • apps/worker/worker_app/tasks/generation.py - 删除 _resolve_render_engine()_render_with_legacy_engine()_render_video() 直接走 UnifiedRenderService
  • apps/worker/worker_app/tasks/edit_plan_generation.py - 删除 _resolve_render_engine()_render_with_legacy()render_edit_plan() 直接走 RenderAdapter
  • apps/worker/worker_app/tasks/compose_video.py - 删除 _compose_with_legacy_engine()compose_video() 直接走 unified 路径

配置/API

  • apps/worker/worker_app/core/config.py - 移除 render_engine 环境变量配置
  • apps/api/app/api/routes/feature_flags.py - 移除 render_engine 从 Feature Flag 允许列表

测试

  • tests/unit/test_feature_flag.py - 移除 TestRenderEngineResolver 测试类

验收检查

  • render_engine_resolver.py 整个文件已删除
  • generation.py 中不再有 legacy 引擎分支
  • edit_plan_generation.py 中不再有 legacy 引擎分支
  • compose_video.py 中不再有 legacy 引擎分支
  • 所有渲染调用直接走 UnifiedRenderService / RenderAdapter
  • 移除 render_engine 环境变量配置
  • 移除 render_engine Feature Flag 管理接口支持
  • 清理 legacy 相关单元测试
  • 核心 CI 门禁全绿(Unit Tests + Integration Tests)

合并方式

Squash merge

## 概述 删除 legacy 渲染引擎,统一走 unified 引擎,完成架构清理。 Closes #599 ## 变更内容 ### 删除的文件 (2个) - `apps/worker/video_processing/render_engine_resolver.py` - 整个 Feature Flag 切换层(含 Redis feature flag、定时刷新、白名单/百分比灰度) - `tests/unit/test_generation_feature_flag.py` - legacy 引擎相关的单测 ### 修改的文件 (6个) #### 核心渲染路径 - `apps/worker/worker_app/tasks/generation.py` - 删除 `_resolve_render_engine()` 和 `_render_with_legacy_engine()`,`_render_video()` 直接走 UnifiedRenderService - `apps/worker/worker_app/tasks/edit_plan_generation.py` - 删除 `_resolve_render_engine()` 和 `_render_with_legacy()`,`render_edit_plan()` 直接走 RenderAdapter - `apps/worker/worker_app/tasks/compose_video.py` - 删除 `_compose_with_legacy_engine()`,`compose_video()` 直接走 unified 路径 #### 配置/API - `apps/worker/worker_app/core/config.py` - 移除 `render_engine` 环境变量配置 - `apps/api/app/api/routes/feature_flags.py` - 移除 `render_engine` 从 Feature Flag 允许列表 #### 测试 - `tests/unit/test_feature_flag.py` - 移除 `TestRenderEngineResolver` 测试类 ## 验收检查 - [x] `render_engine_resolver.py` 整个文件已删除 - [x] `generation.py` 中不再有 legacy 引擎分支 - [x] `edit_plan_generation.py` 中不再有 legacy 引擎分支 - [x] `compose_video.py` 中不再有 legacy 引擎分支 - [x] 所有渲染调用直接走 UnifiedRenderService / RenderAdapter - [x] 移除 render_engine 环境变量配置 - [x] 移除 render_engine Feature Flag 管理接口支持 - [x] 清理 legacy 相关单元测试 - [ ] 核心 CI 门禁全绿(Unit Tests + Integration Tests) ## 合并方式 Squash merge

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #608 | | 预览链接 | [https://pr-608.preview.xiaoxiajianji.com](https://pr-608.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
xiaoxia added 8 commits 2026-07-19 20:01:08 +08:00
refactor: 删除legacy渲染引擎feature flag测试
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 / Deploy Production (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 / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 17s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m2s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 1m2s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m24s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 1m34s
AI Code Review / AI Code Review (pull_request) Successful in 2m8s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 3m4s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m10s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m50s
b1c341d488
xiaoxia force-pushed feature/remove-legacy-render-engine from 0080e7f6ca to b1c341d488 2026-07-19 20:01:08 +08:00 Compare
Author
Owner

CI 基础设施已修复(#619 + #621 已合入 develop),PG 容器启动问题已解决。

当前 PR 的 CI 是修复前跑的,Unit Tests / Validate 失败属于旧 CI 的 PG 问题。请 rebase 到最新 develop 重跑 CI 即可。

CI 基础设施已修复(#619 + #621 已合入 develop),PG 容器启动问题已解决。 当前 PR 的 CI 是修复前跑的,Unit Tests / Validate 失败属于旧 CI 的 PG 问题。请 rebase 到最新 develop 重跑 CI 即可。
xiaoxia added 1 commit 2026-07-20 09:05:55 +08:00
fix: 清理删除legacy引擎后遗留的unused import和变量
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 / ACR Image Cleanup (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 / 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 32s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m1s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 1m13s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m55s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m19s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 1m53s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m33s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m23s
AI Code Review / AI Code Review (pull_request) Successful in 5m12s
93ad93ab3b
- 删除未使用的 tempfile import
- 删除未使用的 download_asset / upload_to_oss import
- 删除未使用的 user_id 局部变量

修复 CI ruff 检查失败。
xiaoxia added 1 commit 2026-07-20 09:37:48 +08:00
fix: 修复CI增量模式下两个问题导致Validate和Unit Tests失败
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 Web Image (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (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 34s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 45s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m23s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 2m50s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 3m51s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 4m31s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m30s
AI Code Review / AI Code Review (pull_request) Successful in 5m9s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 6m0s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 19s
039a1d2471
1. CI增量模式下,删除文件的PR会把已删除文件传给black/isort,
   报'Path does not exist'。在run_validate.sh中加一层文件存在性过滤。

2. test_generation_p3_optimizations.py 和 test_generation_logging.py
   导入worker_app模块时会触发worker_app.db的ensure_database_exists()
   尝试连接PostgreSQL,增量模式单独跑这些测试时失败。
   参照test_voice_clone_task.py,预注入mock的worker_app.db到sys.modules。
xiaoxia force-pushed feature/remove-legacy-render-engine from b975924918 to 039a1d2471 2026-07-20 09:37:48 +08:00 Compare
auto-approve-bot approved these changes 2026-07-20 09:42:21 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

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

CI全绿,自动审批通过。

CI全绿,自动审批通过。
Collaborator

📊 审查概览

  • 整体评价:需修改
  • 严重问题数量:2 个
  • 一般建议数量:2 个

需修改的问题(严重)

  1. [apps/worker/worker_app/tasks/edit_plan_generation.py: 头部导入区] 潜在的运行时错误

    • 问题描述:代码中删除了 import tempfilefrom video_processing.oss_helpers import download_asset, upload_to_oss。虽然删除了 _render_with_legacy 函数,但剩余的 _render_with_unified 函数或 render_edit_plan 任务主体可能仍依赖这些导入(例如创建临时目录或上传文件)。由于 diff 被截断,无法确认剩余代码是否完全不再使用这些模块,贸然删除会导致 NameError
    • 修改建议:请全量搜索 edit_plan_generation.py 中是否仍有 tempfiledownload_assetupload_to_oss 的调用。如果 _render_with_unified 或任务主流程中使用了这些功能,必须保留导入。
  2. [apps/worker/worker_app/core/config.py: 22] 配置项删除风险

    • 问题描述:删除了 WorkerSettings 中的 render_engine: str = "legacy" 配置项。如果项目中其他未在此 PR 中展示的代码(如其他工具脚本、测试用例或依赖该配置的初始化逻辑)通过 getattr(settings, "render_engine", ...) 或直接访问 settings.render_engine 获取配置,将会抛出 AttributeError
    • 修改建议:在合并前进行全局代码搜索(grep -r "render_engine"),确保没有其他代码路径依赖此配置项,或者保留该配置项但标记为 deprecated,待后续完全清除无引用后再删除。

💡 改进建议(一般)

  1. [apps/api/app/api/routes/feature_flags.py: 35] 功能开关白名单清空风险

    • 具体内容ALLOWED_FLAGS 被修改为空集合 set()。如果该路由用于管理多个 feature flag(不仅仅是 render_engine),此修改将导致所有其他 flag 的管理接口被拒绝(假设接口逻辑包含 if flag not in ALLOWED_FLAGS)。请确认该路由是否仅服务于 render_engine,如果是,建议注释说明“暂无允许管理的 Flag”;如果不是,应恢复其他 Flag 的白名单。
  2. [整体架构] 缺失回滚机制

    • 具体内容:此 PR 移除了通过 Feature Flag 在 legacyunified 引擎之间切换的能力,强制使用 unified 引擎。这虽然简化了代码,但也移除了生产环境遇到紧急问题时的快速回滚(切回旧引擎)能力。
    • 具体内容:建议确保 unified 引擎已在预发环境或通过灰度充分验证,或者保留一个简单的环境变量开关(如 FORCE_USE_LEGACY=True)作为最后的紧急熔断手段,而不是完全硬编码。

良好实践

  • 彻底清理:删除了不再使用的 render_engine_resolver.py 及相关逻辑,避免了代码库中遗留死代码,降低了维护负担。
  • 类型标注:在 feature_flags.py 中使用了 set[str] 类型标注,提高了代码可读性和 IDE 支持。
  • 测试覆盖:PR 中包含了多个测试文件的修改(test_feature_flag.py, test_generation_*.py),表明注重测试同步更新。

🤖 由 AI 代码审查机器人自动生成 | 2026-07-20 09:42:58 | 模型:

### 📊 审查概览 - **整体评价**:需修改 - **严重问题数量**:2 个 - **一般建议数量**:2 个 ### ❌ 需修改的问题(严重) 1. **[apps/worker/worker_app/tasks/edit_plan_generation.py: 头部导入区] 潜在的运行时错误** - **问题描述**:代码中删除了 `import tempfile` 和 `from video_processing.oss_helpers import download_asset, upload_to_oss`。虽然删除了 `_render_with_legacy` 函数,但剩余的 `_render_with_unified` 函数或 `render_edit_plan` 任务主体可能仍依赖这些导入(例如创建临时目录或上传文件)。由于 diff 被截断,无法确认剩余代码是否完全不再使用这些模块,贸然删除会导致 `NameError`。 - **修改建议**:请全量搜索 `edit_plan_generation.py` 中是否仍有 `tempfile`、`download_asset` 或 `upload_to_oss` 的调用。如果 `_render_with_unified` 或任务主流程中使用了这些功能,必须保留导入。 2. **[apps/worker/worker_app/core/config.py: 22] 配置项删除风险** - **问题描述**:删除了 `WorkerSettings` 中的 `render_engine: str = "legacy"` 配置项。如果项目中其他未在此 PR 中展示的代码(如其他工具脚本、测试用例或依赖该配置的初始化逻辑)通过 `getattr(settings, "render_engine", ...)` 或直接访问 `settings.render_engine` 获取配置,将会抛出 `AttributeError`。 - **修改建议**:在合并前进行全局代码搜索(`grep -r "render_engine"`),确保没有其他代码路径依赖此配置项,或者保留该配置项但标记为 deprecated,待后续完全清除无引用后再删除。 ### 💡 改进建议(一般) 1. **[apps/api/app/api/routes/feature_flags.py: 35] 功能开关白名单清空风险** - **具体内容**:`ALLOWED_FLAGS` 被修改为空集合 `set()`。如果该路由用于管理多个 feature flag(不仅仅是 `render_engine`),此修改将导致所有其他 flag 的管理接口被拒绝(假设接口逻辑包含 `if flag not in ALLOWED_FLAGS`)。请确认该路由是否仅服务于 `render_engine`,如果是,建议注释说明“暂无允许管理的 Flag”;如果不是,应恢复其他 Flag 的白名单。 2. **[整体架构] 缺失回滚机制** - **具体内容**:此 PR 移除了通过 Feature Flag 在 `legacy` 和 `unified` 引擎之间切换的能力,强制使用 `unified` 引擎。这虽然简化了代码,但也移除了生产环境遇到紧急问题时的快速回滚(切回旧引擎)能力。 - **具体内容**:建议确保 `unified` 引擎已在预发环境或通过灰度充分验证,或者保留一个简单的环境变量开关(如 `FORCE_USE_LEGACY=True`)作为最后的紧急熔断手段,而不是完全硬编码。 ### ✅ 良好实践 - **彻底清理**:删除了不再使用的 `render_engine_resolver.py` 及相关逻辑,避免了代码库中遗留死代码,降低了维护负担。 - **类型标注**:在 `feature_flags.py` 中使用了 `set[str]` 类型标注,提高了代码可读性和 IDE 支持。 - **测试覆盖**:PR 中包含了多个测试文件的修改(`test_feature_flag.py`, `test_generation_*.py`),表明注重测试同步更新。 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-20 09:42:58 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
auto-approve-bot merged commit d42965bba1 into develop 2026-07-20 09:43:50 +08:00
auto-approve-bot deleted branch feature/remove-legacy-render-engine 2026-07-20 09:43:50 +08:00

🗑️ 预览环境已清理

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

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

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