fix(preview): 预览生成从模板读取 editing_mode 作为 strategy_id #1235

Merged
xiaoxia merged 3 commits from fix/preview-strategy-id-from-template into develop 2026-08-04 14:43:50 +08:00
Owner

问题

预览生成时 strategy_id 写死为空字符串,Worker 端 fallback 到 one_take 模式,导致预览不跟随用户选择的模板类型(pip/standard/voice_pip 等)。

修复

  • 新增 _resolve_strategy_id_from_template() 函数
  • 优先查新模板系统 EditTemplate.editing_mode
  • fallback 旧模板系统 Template.mode
  • 将解析结果传入 CreateGenerationTaskCommand(strategy_id=...)
  • Worker 端 gen_task.strategy_id 不再为空,渲染 mode 正确跟随模板

测试

  • 新增 TestResolveStrategyIdFromTemplate(8 个用例)
  • 新增 TestPreviewRoutePassesStrategyId(2 个用例)
  • 修复已有 test_auto_infer_pip_resolution 适配新 import
## 问题 预览生成时 `strategy_id` 写死为空字符串,Worker 端 fallback 到 `one_take` 模式,导致预览不跟随用户选择的模板类型(pip/standard/voice_pip 等)。 ## 修复 - 新增 `_resolve_strategy_id_from_template()` 函数 - 优先查新模板系统 `EditTemplate.editing_mode` - fallback 旧模板系统 `Template.mode` - 将解析结果传入 `CreateGenerationTaskCommand(strategy_id=...)` - Worker 端 `gen_task.strategy_id` 不再为空,渲染 mode 正确跟随模板 ## 测试 - 新增 `TestResolveStrategyIdFromTemplate`(8 个用例) - 新增 `TestPreviewRoutePassesStrategyId`(2 个用例) - 修复已有 `test_auto_infer_pip_resolution` 适配新 import
xiaoxia added 2 commits 2026-08-04 14:33:48 +08:00
修复预览生成不跟随用户选择模板的问题:
- 新增 _resolve_strategy_id_from_template() 函数
- 优先查新模板系统 EditTemplate.editing_mode
- fallback 旧模板系统 Template.mode
- Worker 端 gen_task.strategy_id 不再为空,不再总是默认 one_take
test: 补充 _resolve_strategy_id_from_template 单元测试
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 / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 41s
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 / Validate - Migration (alembic) (pull_request) Successful in 48s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m5s
AI Code Review / AI Code Review (pull_request) Successful in 1m14s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m26s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m44s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 1m47s
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / PR Build API Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (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
33a1485e28
- 新增 TestResolveStrategyIdFromTemplate (8个用例)
- 新增 TestPreviewRoutePassesStrategyId (2个用例)
- 修复已有 test_auto_infer_pip_resolution 适配新 import

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1235 | | 预览链接 | [https://pr-1235.preview.xiaoxiajianji.com](https://pr-1235.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot added 1 commit 2026-08-04 14:35:36 +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 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 / 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 46s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 48s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m5s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m21s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m42s
AI Code Review / AI Code Review (pull_request) Successful in 2m16s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m30s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m28s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m38s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 4m6s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 3m44s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 3m45s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 4m36s
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 / PR Build API Image (pull_request) Successful in 4m18s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m50s
CI/CD Pipeline / CI Gate (pull_request) Successful in 46s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 46s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 57s
72f28ff4eb
Collaborator

【阻塞级判定】

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

📊 审查概览

  • 整体评价:通过
  • 建议级问题数量:0 个

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

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

良好实践

  1. 优雅的降级机制_resolve_strategy_id_from_template 函数实现了从新模板系统到旧模板系统的优雅降级,并且在查询失败时通过 try-except 捕获异常,确保了系统的健壮性,避免了因单点故障导致整个预览生成流程中断。
  2. 完善的单元测试:新增的 TestResolveStrategyIdFromTemplateTestPreviewRoutePassesStrategyId 测试类覆盖了正常流程、Fallback 流程、异常流程以及边界条件(如空 ID、空属性),测试覆盖率较高。
  3. 日志记录规范:在关键逻辑分支(如查询成功、降级查询、查询失败)均添加了详细的日志记录,且使用了 exc_info=True 记录异常堆栈,便于线上问题排查。
  4. 代码兼容性处理:在测试文件中,正确地通过 patch 模拟了新旧两套 Repository 的行为,确保了测试环境的隔离和代码逻辑的验证准确性。

格式检查通过 | 逻辑审查通过 | 性能良好


🤖 由 AI 代码审查机器人自动生成 | 2026-08-04 06:37:50 | 模型:

### 【阻塞级判定】 - 是否存在阻塞级问题:否 - 阻塞级问题数量:0 个 ### 📊 审查概览 - 整体评价:通过 - 建议级问题数量:0 个 ### 🔴 阻塞级问题(必须修复) 无 ### 💡 改进建议(不阻塞合并) 无 ### ✅ 良好实践 1. **优雅的降级机制**:`_resolve_strategy_id_from_template` 函数实现了从新模板系统到旧模板系统的优雅降级,并且在查询失败时通过 `try-except` 捕获异常,确保了系统的健壮性,避免了因单点故障导致整个预览生成流程中断。 2. **完善的单元测试**:新增的 `TestResolveStrategyIdFromTemplate` 和 `TestPreviewRoutePassesStrategyId` 测试类覆盖了正常流程、Fallback 流程、异常流程以及边界条件(如空 ID、空属性),测试覆盖率较高。 3. **日志记录规范**:在关键逻辑分支(如查询成功、降级查询、查询失败)均添加了详细的日志记录,且使用了 `exc_info=True` 记录异常堆栈,便于线上问题排查。 4. **代码兼容性处理**:在测试文件中,正确地通过 `patch` 模拟了新旧两套 Repository 的行为,确保了测试环境的隔离和代码逻辑的验证准确性。 --- ✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能良好 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-08-04 06:37:50 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
auto-approve-bot approved these changes 2026-08-04 14:40:30 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

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

CI全绿,自动审批通过。

CI全绿,自动审批通过。
xiaoxia merged commit f396e3ecb4 into develop 2026-08-04 14:43:50 +08:00

🗑️ 预览环境已清理

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

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

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