feat(P1): 一键生成配音支持从配音素材库选用户上传的音频 #567

Merged
auto-approve-bot merged 2 commits from fix/p1-oneclick-voice-asset-selection into develop 2026-07-19 10:29:58 +08:00
Owner

背景

智能剪辑(一键生成)配音选择目前只有预设音色/TTS/克隆三种,缺少最常用的「选我上传的配音文件」。

方案

复用 voice_library_id 字段传配音素材库的 asset_id,worker端下载配音时:

  1. 先查 asset 表取 storage_key 下载(用户上传到配音库的音频)
  2. 查不到再 fallback 旧版 voice/{id}.mp3 路径(向后兼容)

前端配合

前端加「我的配音」Tab,调用素材接口(assets?kind=voice)列出配音库音频,用户选中后把asset_id填到voice_library_id即可。

## 背景 智能剪辑(一键生成)配音选择目前只有预设音色/TTS/克隆三种,缺少最常用的「选我上传的配音文件」。 ## 方案 复用 voice_library_id 字段传配音素材库的 asset_id,worker端下载配音时: 1. 先查 asset 表取 storage_key 下载(用户上传到配音库的音频) 2. 查不到再 fallback 旧版 voice/{id}.mp3 路径(向后兼容) ## 前端配合 前端加「我的配音」Tab,调用素材接口(assets?kind=voice)列出配音库音频,用户选中后把asset_id填到voice_library_id即可。
xiaoxia added 1 commit 2026-07-19 09:59:31 +08:00
feat(P1): 一键生成配音支持从配音素材库选用户上传的音频
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 16s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 23s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
AI Code Review / AI Code Review (pull_request) Failing after 36s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 53s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 36s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 1m6s
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 1m37s
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 1m40s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m29s
88349f600d
voice_library_id字段支持传入配音素材库的asset_id:
- 先查asset表取storage_key下载(用户上传的配音)
- 查不到再fallback旧版voice/{id}.mp3路径(向后兼容)
xiaoxia added 1 commit 2026-07-19 10:24:40 +08:00
fix: isort import排序修复
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging API 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 Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Web 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 25s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m4s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m5s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 46s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 2m16s
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 2m45s
AI Code Review / AI Code Review (pull_request) Successful in 2m45s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m22s
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 5m19s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 20s
b487a2b306

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #567 | | 预览链接 | [https://pr-567.preview.xiaoxiajianji.com](https://pr-567.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot approved these changes 2026-07-19 10:27:25 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

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

CI全绿,自动审批通过。

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

代码审查结果 - PR #567

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

  1. apps/worker/worker_app/tasks/generation.py 第498行:数据库连接资源未及时释放,存在连接池耗尽风险。
    • 问题描述:在数据库会话 (session) 的生命周期内(try 块中)直接调用了 download_asset。如果该下载操作涉及网络 I/O 且耗时较长,会导致数据库连接被长时间占用而不释放。在 Worker 高并发运行场景下,极易耗尽数据库连接池,导致新任务阻塞或服务崩溃。
    • 修改建议:应调整逻辑,先在 try 块中获取 asset.storage_key,确保在 finally 块中关闭 session 之后,再执行耗时的 download_asset 操作。

💡 建议(2个可选)

  1. apps/worker/worker_app/tasks/generation.py 第482-486行:避免在函数内部进行模块导入。
    • 具体内容:代码在函数内部导入了 SessionLocalSQLAlchemyAssetRepository。虽然这能规避循环导入问题,但会增加函数调用的微小开销,并掩盖代码结构设计问题。建议优先尝试将导入移至文件顶部;若必须在此处导入,建议添加注释说明原因(如 "Avoid circular import")。
  2. apps/worker/worker_app/tasks/generation.py 第487-506行:使用上下文管理器简化资源管理。
    • 具体内容:当前使用 try...finally...close 手动管理会话,代码稍显冗余。如果 SessionLocal 返回的对象支持上下文协议(SQLAlchemy 通常支持),推荐使用 with SessionLocal() as session: 语法,更加简洁且安全。

格式检查通过 | 逻辑审查需修改 | ⚠️ 建议关注性能


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

## 代码审查结果 - PR #567 ### ⚠️ 问题(1个需要修改) 1. **apps/worker/worker_app/tasks/generation.py 第498行**:数据库连接资源未及时释放,存在连接池耗尽风险。 - **问题描述**:在数据库会话 (`session`) 的生命周期内(`try` 块中)直接调用了 `download_asset`。如果该下载操作涉及网络 I/O 且耗时较长,会导致数据库连接被长时间占用而不释放。在 Worker 高并发运行场景下,极易耗尽数据库连接池,导致新任务阻塞或服务崩溃。 - **修改建议**:应调整逻辑,先在 `try` 块中获取 `asset.storage_key`,确保在 `finally` 块中关闭 `session` 之后,再执行耗时的 `download_asset` 操作。 ### 💡 建议(2个可选) 1. **apps/worker/worker_app/tasks/generation.py 第482-486行**:避免在函数内部进行模块导入。 - **具体内容**:代码在函数内部导入了 `SessionLocal` 和 `SQLAlchemyAssetRepository`。虽然这能规避循环导入问题,但会增加函数调用的微小开销,并掩盖代码结构设计问题。建议优先尝试将导入移至文件顶部;若必须在此处导入,建议添加注释说明原因(如 "Avoid circular import")。 2. **apps/worker/worker_app/tasks/generation.py 第487-506行**:使用上下文管理器简化资源管理。 - **具体内容**:当前使用 `try...finally...close` 手动管理会话,代码稍显冗余。如果 `SessionLocal` 返回的对象支持上下文协议(SQLAlchemy 通常支持),推荐使用 `with SessionLocal() as session:` 语法,更加简洁且安全。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-19 10:27:27 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
auto-approve-bot merged commit 222ccdc7b3 into develop 2026-07-19 10:29:58 +08:00
auto-approve-bot deleted branch fix/p1-oneclick-voice-asset-selection 2026-07-19 10:29:59 +08:00

🗑️ 预览环境已清理

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

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

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