fix: 补齐剩余3个预置音色的preview_url(longsanshu/longyingjing/longshuo) #1217

Closed
xiaoxia wants to merge 5 commits from feat/preset-voice-previews-round2 into develop
Owner

问题

PR #1216 替换了3个无效音色(longxiaochen→longsanshu, longjing→longyingjing, longbo→longshuo),但新音色当时还未部署到 staging,无法生成 preview_url。

修复

staging 部署后,调用 CosyVoice preview API 为3个新音色生成试听音频并回填:

  • longsanshu_v3(龙三叔)
  • longyingjing_v3(龙应静)
  • longshuo_v3(龙硕)

验证

  • 80个预置音色相关单测全绿
  • 至此8个预置音色全部拥有 preview_url,#1195 试听功能可完整工作
## 问题 PR #1216 替换了3个无效音色(longxiaochen→longsanshu, longjing→longyingjing, longbo→longshuo),但新音色当时还未部署到 staging,无法生成 preview_url。 ## 修复 staging 部署后,调用 CosyVoice preview API 为3个新音色生成试听音频并回填: - `longsanshu_v3`(龙三叔) - `longyingjing_v3`(龙应静) - `longshuo_v3`(龙硕) ## 验证 - 80个预置音色相关单测全绿 - 至此8个预置音色全部拥有 preview_url,#1195 试听功能可完整工作
xiaoxia added 5 commits 2026-08-02 12:21:31 +08:00
- 替换3个不存在的CosyVoice v3音色:
  - longxiaochen_v3(龙小晨) → longsanshu_v3(龙三叔)
  - longjing_v3(龙静) → longyingjing_v3(龙应静)
  - longbo_v3(龙博) → longshuo_v3(龙硕)
- 填充5个可用音色的preview_url(CosyVoice试听音频)
- 新增seed脚本scripts/seed_test_voice_clones.py用于staging测试数据
- 更新3个测试文件匹配新音色ID和描述
ci: rebase on latest develop (include #1214 #1215)
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 / 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 33s
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 - Type Check (mypy) (pull_request) Successful in 52s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 58s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m22s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m40s
AI Code Review / AI Code Review (pull_request) Successful in 2m22s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m58s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 2m0s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 2m13s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 2m52s
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
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m29s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m14s
CI/CD Pipeline / CI Gate (pull_request) Successful in 6s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 45s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 1m1s
6397a25e41
fix: 补齐剩余3个预置音色的preview_url
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 / ACR Image Cleanup (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 / Validate - Migration (alembic) (pull_request) Successful in 40s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 43s
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 - Type Check (mypy) (pull_request) Successful in 1m1s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m23s
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 / Unit Tests (pull_request) Successful in 1m52s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 3m27s
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
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m30s
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 3m7s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 3m9s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m21s
CI/CD Pipeline / CI Gate (pull_request) Successful in 6s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 12s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 18s
bf43b3eef9
为 longsanshu_v3(龙三叔)、longyingjing_v3(龙应静)、longshuo_v3(龙硕)
填充 CosyVoice 生成的试听音频 URL。

至此8个预置音色全部拥有 preview_url,#1195 试听功能可完整工作。

🚀 预览环境已部署

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

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

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

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

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

代码审查结果 - PR #1217

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

  1. scripts/seed_test_voice_clones.py 第168行:事务回滚逻辑错误,会导致数据丢失。
    • 问题描述:在循环中执行 create_clone_profile 时,如果某个记录插入失败,代码捕获异常后执行了 session.rollback()。由于 SQLAlchemy 的默认事务机制,rollback() 会回滚当前 Session 中所有未提交的更改(包括循环中之前成功插入但尚未 Commit 的记录)。这导致脚本日志显示“Created”,但实际上该记录已被回滚丢弃,最终只有错误发生之后的记录会被提交。
    • 后果:导致测试数据植入不完整,且日志记录与数据库实际状态不一致,影响 E2E 测试的准确性。
    • 修改建议:移除 except 块中的 session.rollback(),或者将事务粒度缩小到每条记录(即每次插入后立即 commit 或使用 begin_nested)。对于 Seed 脚本,最简单的修复方式是移除 rollback(),仅记录错误,让最后的 commit() 处理成功的记录;或者如果希望保持原子性,应在出错时直接 sys.exit(1) 终止脚本。

💡 建议(2个可选)

  1. packages/domain/preset_voices.py 第52-118行:预览音频 URL 使用 HTTP 协议存在安全隐患及功能风险。
    • 具体内容:所有的 preview_url 均使用 http:// 开头。如果应用部署在 HTTPS 环境下,浏览器会拦截这些混合内容,导致用户无法播放预览音频。建议统一替换为 https://
  2. packages/domain/preset_voices.py 第52-118行:硬编码带签名的 OSS URL 存在维护风险。
    • 具体内容:URL 中包含 Expires(过期时间)和 Signature(签名)。一旦 URL 过期,功能将失效,且需要重新生成并替换代码。建议考虑使用服务端签名或前端直传 OSS 的动态 URL 生成方案,而非硬编码。

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


🤖 由 AI 代码审查机器人自动生成 | 2026-08-02 04:23:47 | 模型:

## 代码审查结果 - PR #1217 ### ⚠️ 问题(1个需要修改) 1. **scripts/seed_test_voice_clones.py 第168行**:事务回滚逻辑错误,会导致数据丢失。 - **问题描述**:在循环中执行 `create_clone_profile` 时,如果某个记录插入失败,代码捕获异常后执行了 `session.rollback()`。由于 SQLAlchemy 的默认事务机制,`rollback()` 会回滚当前 Session 中所有未提交的更改(包括循环中之前成功插入但尚未 Commit 的记录)。这导致脚本日志显示“Created”,但实际上该记录已被回滚丢弃,最终只有错误发生之后的记录会被提交。 - **后果**:导致测试数据植入不完整,且日志记录与数据库实际状态不一致,影响 E2E 测试的准确性。 - **修改建议**:移除 `except` 块中的 `session.rollback()`,或者将事务粒度缩小到每条记录(即每次插入后立即 `commit` 或使用 `begin_nested`)。对于 Seed 脚本,最简单的修复方式是移除 `rollback()`,仅记录错误,让最后的 `commit()` 处理成功的记录;或者如果希望保持原子性,应在出错时直接 `sys.exit(1)` 终止脚本。 ### 💡 建议(2个可选) 1. **packages/domain/preset_voices.py 第52-118行**:预览音频 URL 使用 HTTP 协议存在安全隐患及功能风险。 - **具体内容**:所有的 `preview_url` 均使用 `http://` 开头。如果应用部署在 HTTPS 环境下,浏览器会拦截这些混合内容,导致用户无法播放预览音频。建议统一替换为 `https://`。 2. **packages/domain/preset_voices.py 第52-118行**:硬编码带签名的 OSS URL 存在维护风险。 - **具体内容**:URL 中包含 `Expires`(过期时间)和 `Signature`(签名)。一旦 URL 过期,功能将失效,且需要重新生成并替换代码。建议考虑使用服务端签名或前端直传 OSS 的动态 URL 生成方案,而非硬编码。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-08-02 04:23:47 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia reviewed 2026-08-02 12:29:06 +08:00
xiaoxia left a comment
Author
Owner

CI green, auto-approve

CI green, auto-approve
xiaoxia closed this pull request 2026-08-02 12:33:12 +08:00

🗑️ 预览环境已清理

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

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

🗑️ **预览环境已清理** PR #1217 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Some checks are pending
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 / ACR Image Cleanup (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 / Validate - Migration (alembic) (pull_request) Successful in 40s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 43s
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 - Type Check (mypy) (pull_request) Successful in 1m1s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m23s
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 / Unit Tests (pull_request) Successful in 1m52s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 3m27s
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
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m30s
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 3m7s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 3m9s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m21s
CI/CD Pipeline / CI Gate (pull_request) Successful in 6s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 12s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 18s

Pull request closed

Sign in to join this conversation.