refactor(generate): 拆分 useStep5Voice 模式选择逻辑到子Hook(184→165行, -10%) #1089

Merged
xiaoxia merged 2 commits from refactor/use-step5-voice into develop 2026-07-28 16:18:55 +08:00
Owner

变更说明

将 useStep5Voice 中的模式切换、克隆操作等选择逻辑抽离为 useVoiceModeSelection 子 Hook,主文件从 184 行减至 165 行(-10%)。

注:useStep5Voice 之前已拆分为 4 个子 Hook(useVoiceAudio/useVoiceRecommend/useTtsSynthesis/useSaveToLibrary),本此为增量优化。

拆分结构

  • useVoiceModeSelection:模式切换、克隆弹窗、音色选择等操作回调
  • useStep5Voice:主 Hook,组装各子模块并对外暴露统一接口

兼容性

  • 导出路径不变
  • 返回值接口完全兼容,无破坏性变更
### 变更说明 将 useStep5Voice 中的模式切换、克隆操作等选择逻辑抽离为 `useVoiceModeSelection` 子 Hook,主文件从 184 行减至 165 行(-10%)。 注:useStep5Voice 之前已拆分为 4 个子 Hook(useVoiceAudio/useVoiceRecommend/useTtsSynthesis/useSaveToLibrary),本此为增量优化。 ### 拆分结构 - **useVoiceModeSelection**:模式切换、克隆弹窗、音色选择等操作回调 - **useStep5Voice**:主 Hook,组装各子模块并对外暴露统一接口 ### 兼容性 - 导出路径不变 - 返回值接口完全兼容,无破坏性变更
xiaoxia force-pushed refactor/use-step5-voice from 35fc644e96 to e2304f316f 2026-07-28 14:42:42 +08:00 Compare
xiaoxia added 2 commits 2026-07-28 16:06:06 +08:00
chore: retrigger CI
CI/CD Pipeline / Staging E2E Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / Staging API Integration Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / Deploy Production (pull_request) Blocked by required conditions
CI/CD Pipeline / Production Browser E2E (pull_request) Blocked by required conditions
CI/CD Pipeline / ACR Image Cleanup (pull_request) Blocked by required conditions
CI/CD Pipeline / Canary Release to Production (pull_request) Blocked by required conditions
Preview Cleanup / Cleanup Preview Environment (pull_request) Waiting to run
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 39s
CI/CD Pipeline / Unit Tests (pull_request) Waiting to run
CI/CD Pipeline / Frontend Unit Tests (pull_request) Waiting to run
CI/CD Pipeline / Build Production API Image (pull_request) Waiting to run
CI/CD Pipeline / Build Production Web Image (pull_request) Waiting to run
CI/CD Pipeline / Build Production Worker Image (pull_request) Waiting to run
CI/CD Pipeline / CI Gate (pull_request) Blocked by required conditions
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 50s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m10s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web 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) Waiting to run
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m9s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 3m31s
CI/CD Pipeline / Integration Tests (pull_request) Waiting to run
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m57s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 1m18s
PR Automation / Auto Approve on CI Green (pull_request) Failing after 1m14s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 59s
AI Code Review / AI Code Review (pull_request) Successful in 4m1s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 7m34s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 46m18s
4750e67c55
xiaoxia force-pushed refactor/use-step5-voice from 2673e71774 to 4750e67c55 2026-07-28 16:06:06 +08:00 Compare
xiaoxia merged commit 15f12ead3f into develop 2026-07-28 16:18:55 +08:00
auto-approve-bot reviewed 2026-07-28 16:31:09 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。

🚀 预览环境已部署

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

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

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

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

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

【阻塞级判定】

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

📊 审查概览

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

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

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

  1. [useVoiceModeSelection.ts: 43-47] 逻辑不一致风险

    • 具体内容:handleSelectClonedVoice 函数仅更新了 selectedClonedVoice,但未同步更新 voiceMode"clone"。相比之下,handleSelectPresetVoicehandleSelectRecommendedVoice 均在选中音色时同步更新了模式。这种不对称可能导致状态不一致(例如:当前模式为 preset,但 selectedClonedVoice 有值),建议在函数内补充 onVoiceModeChange("clone")
  2. [useStep5Voice.tsx: 104] 性能优化建议

    • 具体内容:重构后的 handleCloneSuccess 是一个普通函数,每次组件重新渲染时都会创建新的引用。如果该函数被传递给子组件或用于 useEffect 依赖项,会导致不必要的重渲染或副作用循环。建议使用 useCallback 包裹,并将 rawCloneSuccess 加入依赖数组。

良好实践

  • useVoiceModeSelection 逻辑抽离为独立的 Hook,符合关注点分离原则,提高了代码的可复用性和可测试性。
  • 保留了 message.success 在上层组件调用,使得底层 Hook 不依赖具体的 UI 组件库,保持了良好的纯度。

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


🤖 由 AI 代码审查机器人自动生成 | 2026-07-28 08:33:55 | 模型:

### 【阻塞级判定】 - 是否存在阻塞级问题:否 - 阻塞级问题数量:0 个 ### 📊 审查概览 - 整体评价:需修改 - 建议级问题数量:2 个 ### 🔴 阻塞级问题(必须修复) 无 ### 💡 改进建议(不阻塞合并) 1. **[useVoiceModeSelection.ts: 43-47] 逻辑不一致风险** - 具体内容:`handleSelectClonedVoice` 函数仅更新了 `selectedClonedVoice`,但未同步更新 `voiceMode` 为 `"clone"`。相比之下,`handleSelectPresetVoice` 和 `handleSelectRecommendedVoice` 均在选中音色时同步更新了模式。这种不对称可能导致状态不一致(例如:当前模式为 preset,但 selectedClonedVoice 有值),建议在函数内补充 `onVoiceModeChange("clone")`。 2. **[useStep5Voice.tsx: 104] 性能优化建议** - 具体内容:重构后的 `handleCloneSuccess` 是一个普通函数,每次组件重新渲染时都会创建新的引用。如果该函数被传递给子组件或用于 `useEffect` 依赖项,会导致不必要的重渲染或副作用循环。建议使用 `useCallback` 包裹,并将 `rawCloneSuccess` 加入依赖数组。 ### ✅ 良好实践 - 将 `useVoiceModeSelection` 逻辑抽离为独立的 Hook,符合关注点分离原则,提高了代码的可复用性和可测试性。 - 保留了 `message.success` 在上层组件调用,使得底层 Hook 不依赖具体的 UI 组件库,保持了良好的纯度。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-28 08:33:55 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
Sign in to join this conversation.