fix: 确保预览和生成API始终传递voice_library_id #1518

Closed
xiaoxia wants to merge 1 commits from fix/voice-library-id-passthrough into develop
Owner

问题

用户在配音步骤选择了配音,但确认生成后视频中没有用户选择的配音,且保留了原视频声音。后端确认最新task的voice_library_id为空。

根因

useGenerateVideo.tsuseStep6Cover.ts 中 voice_library_id 使用条件展开(非空才传),在某些边界情况下可能被忽略。

修复

  • useGenerateVideo.ts: voice_library_id 始终传递(不再条件展开)
  • useStep6Cover.ts: 预览创建时同样始终传递 voice_library_id
  • clone模式增加 selectedVoice 兜底
  • 保留 voice_ids 作为二次兜底

测试

  • TypeScript
  • ESLint
  • Prettier
## 问题 用户在配音步骤选择了配音,但确认生成后视频中没有用户选择的配音,且保留了原视频声音。后端确认最新task的voice_library_id为空。 ## 根因 `useGenerateVideo.ts` 和 `useStep6Cover.ts` 中 voice_library_id 使用条件展开(非空才传),在某些边界情况下可能被忽略。 ## 修复 - `useGenerateVideo.ts`: voice_library_id 始终传递(不再条件展开) - `useStep6Cover.ts`: 预览创建时同样始终传递 voice_library_id - clone模式增加 selectedVoice 兜底 - 保留 voice_ids 作为二次兜底 ## 测试 - TypeScript ✅ - ESLint ✅ - Prettier ✅
xiaoxia added 1 commit 2026-08-27 11:43:14 +08:00
fix: 确保预览和生成API始终传递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 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 3m3s
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 3m45s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 4m2s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 4m6s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 4m13s
AI Code Review / AI Code Review (pull_request) Failing after 4m48s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 5m1s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m59s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m37s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m42s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 9m4s
CI/CD Pipeline / Integration Tests (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
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 2m48s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 2m24s
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 / CI Gate (pull_request) Successful in 34s
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
67e2d939ae
问题:用户在配音步骤选择了配音,但确认生成后视频中没有配音。
根因:voice_library_id 使用条件展开(非空才传),在某些边界情况下
可能被忽略,导致后端收不到配音参数。

修复:
1. useGenerateVideo.ts: voice_library_id 始终传递(不再条件展开)
2. useStep6Cover.ts: 预览创建时同样始终传递 voice_library_id
3. clone模式增加 selectedVoice 兜底,避免切换模式后配音丢失
4. 保留 voice_ids 作为二次兜底

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1518 | | 预览链接 | [https://pr-1518.preview.xiaoxiajianji.com](https://pr-1518.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
Collaborator

【阻塞级判定】

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

📊 审查概览

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

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

  1. [useGenerateVideo.ts: 第92行 & useStep6Cover.ts: 第185行] 空字符串作为 ID 传递可能导致兜底逻辑失效
    • 问题类型:逻辑bug
    • 问题描述:
      代码将 voice_library_id 强制设置为 voiceLibraryId,即使该变量为空字符串 ""
      虽然代码意图是“始终传递”,但当 voiceLibraryId 为空字符串时,后端通常会将其视为“已提供但无效的值”。
      此时,后端可能会优先处理 voice_library_id(即使是空的),而忽略作为兜底的 voice_ids 字段,导致配音参数传递错误或生成任务失败。
      之前的逻辑 ...(voiceLibraryId ? { voice_library_id: voiceLibraryId } : {}) 更为安全,因为它在无效时不传递该字段。
    • 修改建议:
      应仅在 voiceLibraryId 有实际值时才传递该字段,或者将其赋值为 undefined 而不是空字符串 ""
      建议修改为:
      ...(voiceLibraryId ? { voice_library_id: voiceLibraryId } : {})
      
      或者确保 voiceLibraryId 为空时赋值为 undefined
      const voiceLibraryId = ... || undefined;
      // ...
      voice_library_id: voiceLibraryId,
      

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

良好实践

  1. 逻辑优化:在 useGenerateVideo.tsuseStep6Cover.ts 中,增加了 selectedClonedVoice 回退到 selectedVoice 的逻辑(props.selectedClonedVoice || props.selectedVoice),有效防止了用户在切换语音模式时丢失已选择的语音,提升了用户体验。

🤖 由 AI 代码审查机器人自动生成 | 2026-08-27 03:47:58 | 模型:

### 【阻塞级判定】 - 是否存在阻塞级问题:是 - 阻塞级问题数量:1 个 ### 📊 审查概览 - 整体评价:需修改 - 建议级问题数量:0 个 ### 🔴 阻塞级问题(必须修复) 1. **[useGenerateVideo.ts: 第92行 & useStep6Cover.ts: 第185行] 空字符串作为 ID 传递可能导致兜底逻辑失效** - 问题类型:逻辑bug - 问题描述: 代码将 `voice_library_id` 强制设置为 `voiceLibraryId`,即使该变量为空字符串 `""`。 虽然代码意图是“始终传递”,但当 `voiceLibraryId` 为空字符串时,后端通常会将其视为“已提供但无效的值”。 此时,后端可能会优先处理 `voice_library_id`(即使是空的),而忽略作为兜底的 `voice_ids` 字段,导致配音参数传递错误或生成任务失败。 之前的逻辑 `...(voiceLibraryId ? { voice_library_id: voiceLibraryId } : {})` 更为安全,因为它在无效时不传递该字段。 - 修改建议: 应仅在 `voiceLibraryId` 有实际值时才传递该字段,或者将其赋值为 `undefined` 而不是空字符串 `""`。 建议修改为: ```typescript ...(voiceLibraryId ? { voice_library_id: voiceLibraryId } : {}) ``` 或者确保 `voiceLibraryId` 为空时赋值为 `undefined`: ```typescript const voiceLibraryId = ... || undefined; // ... voice_library_id: voiceLibraryId, ``` ### 💡 改进建议(不阻塞合并) 无 ### ✅ 良好实践 1. **逻辑优化**:在 `useGenerateVideo.ts` 和 `useStep6Cover.ts` 中,增加了 `selectedClonedVoice` 回退到 `selectedVoice` 的逻辑(`props.selectedClonedVoice || props.selectedVoice`),有效防止了用户在切换语音模式时丢失已选择的语音,提升了用户体验。 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-08-27 03:47:58 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia closed this pull request 2026-08-27 11:51:25 +08:00

🗑️ 预览环境已清理

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

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

🗑️ **预览环境已清理** PR #1518 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Some checks are pending
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 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 3m3s
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 3m45s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 4m2s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 4m6s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 4m13s
AI Code Review / AI Code Review (pull_request) Failing after 4m48s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 5m1s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m59s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m37s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m42s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 9m4s
CI/CD Pipeline / Integration Tests (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
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 2m48s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 2m24s
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 / CI Gate (pull_request) Successful in 34s
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped

Pull request closed

Sign in to join this conversation.