feat(P1): #579 配音库新增配音素材Tab #596

Merged
auto-approve-bot merged 2 commits from feat/voice-library-add-material-tab into develop 2026-07-19 17:07:05 +08:00
Owner
No description provided.
xiaoxia added 1 commit 2026-07-19 15:57:54 +08:00
feat(P1): #579 配音库新增配音素材Tab
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 / Build Staging Web 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
AI Code Review / AI Code Review (pull_request) Failing after 28s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 31s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 10s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 4m29s
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 4m54s
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 4m48s
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 9m3s
1ad3a5b3fa
- 配音库页面新增第3个Tab:配音素材
- 使用 getAssetsByKind('voice') 加载用户上传的音频素材
- 卡片式展示,包含时长、文件大小等信息
- 支持骨架屏加载和空状态
- 空状态可直接跳转上传音频
- 新增vmat系列卡片样式
xiaoxia added 1 commit 2026-07-19 17:01:52 +08:00
fix(ts): 修复配音素材Tab的API类型不匹配问题
CI Build & Deploy Pipeline / Build Staging Worker 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 Web 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 API Integration Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E 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 19s
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
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m27s
AI Code Review / AI Code Review (pull_request) Successful in 2m53s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 3m16s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 4m1s
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 4m8s
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 5m12s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 34s
14c73b46a2

🚀 预览环境已部署

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

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

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

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

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

代码审查结果 - PR #596

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

  1. apps/web/src/pages/voices/VoiceLibrary.tsx 第809行:硬编码 limit: 50 导致数据截断

    • 问题描述queryFn 中直接写死了 limit: 50,当用户上传的素材超过 50 个时,无法查看或访问后续数据。虽然 API 定义了 pagepage_size 参数,但前端并未实现分页逻辑。
    • 后果:数据展示不全,用户体验受损。
    • 建议:实现分页组件或“加载更多”逻辑,将 pagepage_size 作为状态进行管理。
  2. apps/web/src/pages/voices/VoiceLibrary.tsx 第807行:静态 QueryKey 导致数据无法自动刷新

    • 问题描述useQueryqueryKey 设为固定的 ["voice-materials"]。当用户点击“上传音频”并成功上传后,该列表不会自动刷新,用户必须刷新页面才能看到新上传的素材。
    • 后果:功能交互不连贯,用户误以为上传失败。
    • 建议:在上传成功的回调中调用 queryClient.invalidateQueries(["voice-materials"]) 以刷新数据。
  3. apps/web/src/pages/voices/VoiceLibrary.tsx 第1166行:类型断言存在运行时风险

    • 问题描述:代码使用 as number 强制断言 asset.metadata?.duration 的类型。如果后端返回的数据中 duration 是字符串(如 "120.5")或格式不正确,该断言会掩盖类型错误,且不进行实际转换,可能导致后续计算结果为 NaN
    • 后果:时长显示异常(如 NaN:NaN)。
    • 建议:使用 Number(asset.metadata?.duration)parseFloat 进行安全的类型转换,并增加对 isNaN 的校验。

💡 建议(1个可选)

  1. apps/web/src/api/assets.ts 第187-189行:API 参数命名存在冗余
    • 具体内容filters 中同时存在 limitpagepage_size。通常分页逻辑使用 page + page_size(或 limit + offset)。同时存在 limitpage_size 容易引起混淆(例如:limit 是指总数量限制还是单页数量?)。建议与后端确认语义,若 limit 即为 page_size,建议统一命名。

格式检查通过 | 逻辑审查需修改 | 性能无恙


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

## 代码审查结果 - PR #596 ### ⚠️ 问题(3个需要修改) 1. **apps/web/src/pages/voices/VoiceLibrary.tsx 第809行**:硬编码 `limit: 50` 导致数据截断 - **问题描述**:`queryFn` 中直接写死了 `limit: 50`,当用户上传的素材超过 50 个时,无法查看或访问后续数据。虽然 API 定义了 `page` 和 `page_size` 参数,但前端并未实现分页逻辑。 - **后果**:数据展示不全,用户体验受损。 - **建议**:实现分页组件或“加载更多”逻辑,将 `page` 和 `page_size` 作为状态进行管理。 2. **apps/web/src/pages/voices/VoiceLibrary.tsx 第807行**:静态 QueryKey 导致数据无法自动刷新 - **问题描述**:`useQuery` 的 `queryKey` 设为固定的 `["voice-materials"]`。当用户点击“上传音频”并成功上传后,该列表不会自动刷新,用户必须刷新页面才能看到新上传的素材。 - **后果**:功能交互不连贯,用户误以为上传失败。 - **建议**:在上传成功的回调中调用 `queryClient.invalidateQueries(["voice-materials"])` 以刷新数据。 3. **apps/web/src/pages/voices/VoiceLibrary.tsx 第1166行**:类型断言存在运行时风险 - **问题描述**:代码使用 `as number` 强制断言 `asset.metadata?.duration` 的类型。如果后端返回的数据中 `duration` 是字符串(如 `"120.5"`)或格式不正确,该断言会掩盖类型错误,且不进行实际转换,可能导致后续计算结果为 `NaN`。 - **后果**:时长显示异常(如 `NaN:NaN`)。 - **建议**:使用 `Number(asset.metadata?.duration)` 或 `parseFloat` 进行安全的类型转换,并增加对 `isNaN` 的校验。 ### 💡 建议(1个可选) 1. **apps/web/src/api/assets.ts 第187-189行**:API 参数命名存在冗余 - **具体内容**:`filters` 中同时存在 `limit`、`page` 和 `page_size`。通常分页逻辑使用 `page` + `page_size`(或 `limit` + `offset`)。同时存在 `limit` 和 `page_size` 容易引起混淆(例如:`limit` 是指总数量限制还是单页数量?)。建议与后端确认语义,若 `limit` 即为 `page_size`,建议统一命名。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ✅ 性能无恙 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-19 17:04:44 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
auto-approve-bot approved these changes 2026-07-19 17:06:00 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

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

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot merged commit cb1b13ebf6 into develop 2026-07-19 17:07:05 +08:00
auto-approve-bot deleted branch feat/voice-library-add-material-tab 2026-07-19 17:07:05 +08:00

🗑️ 预览环境已清理

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

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

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