fix: 预览生成接口透传 voice_library_id 修复预览无声问题 #1313

Merged
xiaoxia merged 2 commits from fix/preview-voice-library-id into develop 2026-08-09 11:32:53 +08:00
Owner

问题

预览视频没有声音。之前一直在修 TTS 路径,但实际用户选择的是上传的音频素材,不是 AI 合成的 TTS。

根因

POST /api/v1/generation/preview 端点中 voice_library_id 被硬编码为空字符串。

修复

  1. Schema 增加 voice_library_id 字段
  2. 端点透传 request.voice_library_id
  3. 确认生成自动继承源预览任务的 voice_library_id

前端配合

前端调用 POST /api/v1/generation/preview 时需传入 voice_library_id。

## 问题 预览视频没有声音。之前一直在修 TTS 路径,但实际用户选择的是上传的音频素材,不是 AI 合成的 TTS。 ## 根因 `POST /api/v1/generation/preview` 端点中 `voice_library_id` 被硬编码为空字符串。 ## 修复 1. Schema 增加 voice_library_id 字段 2. 端点透传 request.voice_library_id 3. 确认生成自动继承源预览任务的 voice_library_id ## 前端配合 前端调用 POST /api/v1/generation/preview 时需传入 voice_library_id。
xiaoxia added 1 commit 2026-08-09 11:21:46 +08:00
fix: 预览生成接口透传 voice_library_id 修复预览无声问题
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
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 / 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 / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 43s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 55s
AI Code Review / AI Code Review (pull_request) Successful in 1m12s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m23s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m52s
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 / 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
68e41f6173
根因:预览生成接口(POST /preview)硬编码 voice_library_id="",
导致用户选择的上传音频从未传递给 Worker,渲染时没有音频可混入。

修复:
- CreatePreviewGenerationTaskRequest 增加 voice_library_id 字段
- 预览端点将 request.voice_library_id 透传给 CreateGenerationTaskCommand
- 确认生成接口已自动继承源预览任务的 voice_library_id
- 新增 4 个单元测试验证 schema 字段

下游链路(Worker 下载音频 → 渲染引擎混音)无需修改,
只需前端在创建预览任务时传入 voice_library_id 即可。

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1313 | | 预览链接 | [https://pr-1313.preview.xiaoxiajianji.com](https://pr-1313.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot added 1 commit 2026-08-09 11:23:56 +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 / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 43s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 56s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 55s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m33s
AI Code Review / AI Code Review (pull_request) Successful in 1m34s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m43s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m23s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m53s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m32s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 2m24s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 3m47s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m54s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 4m2s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m28s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 7m37s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web 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 / CI Gate (pull_request) Successful in 6s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 48s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 49s
de30703d41
Collaborator

【阻塞级判定】

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

📊 审查概览

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

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

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

  1. [tests/unit/test_preview_voice_library_id.py: 17-18] 测试环境隔离问题
    • 具体内容:测试文件中直接修改了全局的 sys.pathos.environ。虽然这在单文件运行时通常有效,但在使用 pytest 等测试运行器并发执行或与其他测试混跑时,全局状态的修改可能导致污染或不可预期的副作用。
    • 修改建议:建议使用 pytestconftest.py 配置 PYTHONPATH,或者使用 pytestmonkeypatch/tmp_path 等 fixture 来处理环境变量和路径修改,确保测试之间的隔离性。

良好实践

  1. Bug 修复逻辑清晰:准确识别了 generation_preview.pyvoice_library_id 被硬编码为空字符串的问题,并通过 Schema 扩展和参数透传进行了完整修复。
  2. 测试覆盖充分:新增的单元测试覆盖了新增字段的默认值、显式传值及空值场景,有效验证了修复的有效性。
  3. Schema 定义规范:新增字段遵循了现有代码的命名和类型定义规范(使用 Field 设置默认值和描述)。

🤖 由 AI 代码审查机器人自动生成 | 2026-08-09 03:25:29 | 模型:

### 【阻塞级判定】 - 是否存在阻塞级问题:否 - 阻塞级问题数量:0 个 ### 📊 审查概览 - 整体评价:通过 - 建议级问题数量:1 个 ### 🔴 阻塞级问题(必须修复) 无 ### 💡 改进建议(不阻塞合并) 1. **[tests/unit/test_preview_voice_library_id.py: 17-18] 测试环境隔离问题** - 具体内容:测试文件中直接修改了全局的 `sys.path` 和 `os.environ`。虽然这在单文件运行时通常有效,但在使用 pytest 等测试运行器并发执行或与其他测试混跑时,全局状态的修改可能导致污染或不可预期的副作用。 - 修改建议:建议使用 `pytest` 的 `conftest.py` 配置 `PYTHONPATH`,或者使用 `pytest` 的 `monkeypatch`/`tmp_path` 等 fixture 来处理环境变量和路径修改,确保测试之间的隔离性。 ### ✅ 良好实践 1. **Bug 修复逻辑清晰**:准确识别了 `generation_preview.py` 中 `voice_library_id` 被硬编码为空字符串的问题,并通过 Schema 扩展和参数透传进行了完整修复。 2. **测试覆盖充分**:新增的单元测试覆盖了新增字段的默认值、显式传值及空值场景,有效验证了修复的有效性。 3. **Schema 定义规范**:新增字段遵循了现有代码的命名和类型定义规范(使用 `Field` 设置默认值和描述)。 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-08-09 03:25:29 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
auto-approve-bot approved these changes 2026-08-09 11:30:30 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

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

CI全绿,自动审批通过。

CI全绿,自动审批通过。
xiaoxia merged commit 6b5ec0a2f1 into develop 2026-08-09 11:32:53 +08:00
xiaoxia deleted branch fix/preview-voice-library-id 2026-08-09 11:32:54 +08:00

🗑️ 预览环境已清理

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

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

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