feat(P1): 智能剪辑配音支持从配音库选择 #566

Merged
auto-approve-bot merged 3 commits from feat/smart-edit-voice-library into develop 2026-07-19 10:55:19 +08:00
Owner

改动

智能剪辑(原一键生成)页面配音选择新增「从配音库选择」模式

功能

  1. 新增配音方式:配音选择卡片增加「从配音库选择」入口
  2. 素材列表:网格展示用户配音库所有素材,显示名称、时长
  3. 点击选中:高亮边框 + 背景色,明确选中状态
  4. 试听功能:每个素材可独立试听/暂停
  5. 提交生成:选中后通过 custom_audio_url 将音频文件URL传给后端

交互

  • 2列网格布局,最多300px高度滚动
  • 选中配音名称自动同步到步骤5的确认信息
  • 空状态友好提示

影响范围

1个文件(GeneratePage.tsx),+155/-2

## 改动 智能剪辑(原一键生成)页面配音选择新增「从配音库选择」模式 ### 功能 1. **新增配音方式**:配音选择卡片增加「从配音库选择」入口 2. **素材列表**:网格展示用户配音库所有素材,显示名称、时长 3. **点击选中**:高亮边框 + 背景色,明确选中状态 4. **试听功能**:每个素材可独立试听/暂停 5. **提交生成**:选中后通过 `custom_audio_url` 将音频文件URL传给后端 ### 交互 - 2列网格布局,最多300px高度滚动 - 选中配音名称自动同步到步骤5的确认信息 - 空状态友好提示 ## 影响范围 1个文件(GeneratePage.tsx),+155/-2
xiaoxia added 2 commits 2026-07-19 10:32:24 +08:00
- 配音选择新增'从配音库选择'模式
- 拉取用户配音库素材列表,支持选择、试听
- 选中后通过 custom_audio_url 传给后端生成
- 支持时长显示和点击选中高亮
ci: retrigger checks
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 15s
AI Code Review / AI Code Review (pull_request) Failing after 21s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 24s
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 27s
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 51s
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 52s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 30s
5043a043d5
xiaoxia force-pushed feat/smart-edit-voice-library from bcc8fabc0d to 5043a043d5 2026-07-19 10:32:24 +08:00 Compare
xiaoxia added 1 commit 2026-07-19 10:51:16 +08:00
fix: 补全handleGenerate的useCallback依赖 - voiceAssets和selectedVoiceAssetId
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 1m29s
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 24s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 21s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 47s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 50s
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 4m2s
AI Code Review / AI Code Review (pull_request) Successful in 2m18s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 23s
e9bf48a34e
react-hooks/exhaustive-deps警告,--max-warnings 0会导致lint失败
auto-approve-bot approved these changes 2026-07-19 10:52:46 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-07-19 10:52:46 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
xiaoxia closed this pull request 2026-07-19 10:53:03 +08:00
xiaoxia reopened this pull request 2026-07-19 10:53:07 +08:00

🗑️ 预览环境已清理

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

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

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

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #566 | | 预览链接 | [https://pr-566.preview.xiaoxiajianji.com](https://pr-566.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot merged commit 7f6104017a into develop 2026-07-19 10:55:19 +08:00
auto-approve-bot deleted branch feat/smart-edit-voice-library 2026-07-19 10:55:19 +08:00
Collaborator

代码审查结果 - PR #566

⚠️ 问题(1个需要修改)

  1. apps/web/src/pages/generate/GeneratePage.tsx 第474行:校验逻辑存在漏洞,可能导致生成请求参数缺失。
    • 原因:代码仅检查了 selectedVoiceAssetId 是否为空字符串,但未检查该 ID 是否在当前的 voiceAssets 列表中真实存在。如果列表数据发生更新(例如删除、刷新),导致用户之前选中的 ID 失效,校验仍会通过,但后续第498行的 find 操作将返回 undefined,导致 voiceConfig.custom_audio_url 未被赋值,最终发送错误的生成请求。
    • 后果:用户以为选择了配音,但实际生成的视频可能缺少配音或接口报错。
    • 建议:修改校验条件,增加对 ID 有效性的检查,例如:if (voiceMode === "library" && !selectedVoiceAssetId) { ... } 改为 if (voiceMode === "library" && (!selectedVoiceAssetId || !voiceAssets.find(a => a.id === selectedVoiceAssetId))) { ... }

💡 建议(1个可选)

  1. apps/web/src/pages/generate/GeneratePage.tsx 第695行:依赖项优化建议。
    • 内容:在依赖项数组中加入了整个 voiceAssets 数组对象。如果该依赖项所属的 useEffectuseCallback 仅用于计算预览文本或状态同步,建议仅依赖 voiceAssets.lengthselectedVoiceAssetId,避免因数组引用变化(即使数据未变)导致不必要的回调或副作用重新执行。

格式检查通过 | 逻辑审查需修改 | 性能无明显问题


🤖 由 AI 代码审查机器人自动生成 | 2026-07-19 10:55:27 | 模型:

## 代码审查结果 - PR #566 ### ⚠️ 问题(1个需要修改) 1. **apps/web/src/pages/generate/GeneratePage.tsx 第474行**:校验逻辑存在漏洞,可能导致生成请求参数缺失。 - **原因**:代码仅检查了 `selectedVoiceAssetId` 是否为空字符串,但未检查该 ID 是否在当前的 `voiceAssets` 列表中真实存在。如果列表数据发生更新(例如删除、刷新),导致用户之前选中的 ID 失效,校验仍会通过,但后续第498行的 `find` 操作将返回 `undefined`,导致 `voiceConfig.custom_audio_url` 未被赋值,最终发送错误的生成请求。 - **后果**:用户以为选择了配音,但实际生成的视频可能缺少配音或接口报错。 - **建议**:修改校验条件,增加对 ID 有效性的检查,例如:`if (voiceMode === "library" && !selectedVoiceAssetId) { ... }` 改为 `if (voiceMode === "library" && (!selectedVoiceAssetId || !voiceAssets.find(a => a.id === selectedVoiceAssetId))) { ... }`。 ### 💡 建议(1个可选) 1. **apps/web/src/pages/generate/GeneratePage.tsx 第695行**:依赖项优化建议。 - **内容**:在依赖项数组中加入了整个 `voiceAssets` 数组对象。如果该依赖项所属的 `useEffect` 或 `useCallback` 仅用于计算预览文本或状态同步,建议仅依赖 `voiceAssets.length` 或 `selectedVoiceAssetId`,避免因数组引用变化(即使数据未变)导致不必要的回调或副作用重新执行。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ✅ 性能无明显问题 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-19 10:55:27 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->

🗑️ 预览环境已清理

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

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

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