refactor(voices): Phase 1 - extract types, constants and utils #873

Closed
xiaoxia wants to merge 1 commits from refactor/voice-library-phase1 into develop
Owner

VoiceLibrary Phase 1 重构

按 VoiceMaterialLibrary 重构套路,将 VoiceLibrary.tsx 中的类型、常量、工具函数抽离到独立文件。

改动内容

新增文件 (4 + 1 test):

  • apps/web/src/pages/voices/types.ts — 类型定义、接口、映射函数
  • apps/web/src/pages/voices/constants.ts — 常量、选项配置
  • apps/web/src/pages/voices/utils/format.ts — 格式化工具函数
  • apps/web/src/pages/voices/utils/audio.ts — 音频相关工具函数
  • apps/web/src/test/pages/voices/smoke.test.tsx — smoke test

主文件变化:

  • VoiceLibrary.tsx: 1783 行 → 1647 行(减少 136 行)

质量保证

  • 0 any、0 ts-ignore、0 eslint-disable
  • 所有文件权限 644
  • import 路径统一使用 @/pages/voices/xxx
  • 功能完全等价,无任何行为变化

后续 Phase 规划

  • Phase 2: 抽离子组件(VoiceCard、CloneVoiceCard、CloneDetailModal 等)
  • Phase 3: 抽离 hooks(数据查询、播放控制、上传逻辑等)
## VoiceLibrary Phase 1 重构 按 VoiceMaterialLibrary 重构套路,将 VoiceLibrary.tsx 中的类型、常量、工具函数抽离到独立文件。 ### 改动内容 **新增文件 (4 + 1 test):** - `apps/web/src/pages/voices/types.ts` — 类型定义、接口、映射函数 - `apps/web/src/pages/voices/constants.ts` — 常量、选项配置 - `apps/web/src/pages/voices/utils/format.ts` — 格式化工具函数 - `apps/web/src/pages/voices/utils/audio.ts` — 音频相关工具函数 - `apps/web/src/test/pages/voices/smoke.test.tsx` — smoke test **主文件变化:** - VoiceLibrary.tsx: 1783 行 → 1647 行(减少 136 行) ### 质量保证 - 0 any、0 ts-ignore、0 eslint-disable - 所有文件权限 644 - import 路径统一使用 `@/pages/voices/xxx` - 功能完全等价,无任何行为变化 ### 后续 Phase 规划 - Phase 2: 抽离子组件(VoiceCard、CloneVoiceCard、CloneDetailModal 等) - Phase 3: 抽离 hooks(数据查询、播放控制、上传逻辑等)
xiaoxia force-pushed refactor/voice-library-phase1 from 576684398f to 00ff978352 2026-07-25 11:37:04 +08:00 Compare
xiaoxia added 1 commit 2026-07-25 12:15:01 +08:00
refactor(voices): Phase 1 - extract types, constants and utils
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 35s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m15s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m1s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 54s
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 / PR Build Worker Image (pull_request) Successful in 1m1s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m50s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 25s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 4m23s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 43s
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 Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 4m28s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m42s
AI Code Review / AI Code Review (pull_request) Successful in 5m3s
CI/CD Pipeline / Deploy Production (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 / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Failing after 4m56s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 5m58s
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 16s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Failing after 16s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m46s
ae78918ae4
Extract types, constants, and utility functions from VoiceLibrary.tsx
into separate files following the same pattern as VoiceMaterialLibrary.

New files:
- types.ts: VoiceGender, VoiceLanguage, TabKey, display interfaces, mappers
- constants.ts: gender options, language options, clone status config
- utils/format.ts: genderLabel, languageLabel, genderClass, formatTime, formatFileSize
- utils/audio.ts: getAudioDuration
- test/pages/voices/smoke.test.tsx: smoke test for vitest related mode

Main file reduced from 1783 to 1647 lines.
Functionally equivalent, no behavior changes.

Signed-off-by: xiaoxia <xiaoxia@xiaoxiajianji.com>
xiaoxia force-pushed refactor/voice-library-phase1 from 00ff978352 to ae78918ae4 2026-07-25 12:15:01 +08:00 Compare
xiaoxia closed this pull request 2026-07-25 12:25:25 +08:00
Collaborator

代码审查结果 - PR #873

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

  1. Diff 内容截断:提供的 diff 仅包含 pnpm-lock.yaml 的部分内容,且已被截断。PR 修改列表中的核心业务文件(如 VoiceLibrary.tsx, audio.ts, types.ts 等)的代码变更未显示。由于缺少源码变更,无法对本次重构的逻辑正确性、安全隐患及性能问题进行有效审查。

💡 建议(0个可选)


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


🤖 由 AI 代码审查机器人自动生成 | 2026-07-25 04:26:09 | 模型:

## 代码审查结果 - PR #873 ### ⚠️ 问题(1个需要修改) 1. **Diff 内容截断**:提供的 diff 仅包含 `pnpm-lock.yaml` 的部分内容,且已被截断。PR 修改列表中的核心业务文件(如 `VoiceLibrary.tsx`, `audio.ts`, `types.ts` 等)的代码变更未显示。由于缺少源码变更,无法对本次重构的逻辑正确性、安全隐患及性能问题进行有效审查。 ### 💡 建议(0个可选) 无 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-25 04:26:09 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->

🗑️ 预览环境已清理

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

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

🗑️ **预览环境已清理** PR #873 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Some checks are pending
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 35s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m15s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m1s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 54s
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 / PR Build Worker Image (pull_request) Successful in 1m1s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m50s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 25s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 4m23s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 43s
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 Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 4m28s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m42s
AI Code Review / AI Code Review (pull_request) Successful in 5m3s
CI/CD Pipeline / Deploy Production (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 / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Failing after 4m56s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 5m58s
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 16s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Failing after 16s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m46s

Pull request closed

Sign in to join this conversation.