refactor(editing-planner): 拆分 useEditPlanClipMutations 抽出重排序和素材导入(183→134行, -27%) #1101

Merged
xiaoxia merged 1 commits from refactor/clip-mutations into develop 2026-07-28 16:20:00 +08:00
Owner

变更说明

将 useEditPlanClipMutations 中的重排序和素材导入逻辑抽为独立 Hook,主文件从 183 行精简到 134 行(-27%)。

拆分结构

useEditPlanClips/
├── useEditPlanClipMutations.ts    (134行, 主入口,核心 CRUD)
├── useClipReorder.ts              (重排序 mutation)
└── useClipImport.ts               (素材导入 mutation)

三阶段拆分

  • Phase 1: 类型常量(来自 @/api/template-editor,无需改动)
  • Phase 2: 抽离业务 Hook — useClipReorder / useClipImport
  • Phase 3: 主文件保留核心 CRUD(create/update/delete/batchDelete)

兼容性

  • 主入口 useEditPlanClipMutations 导出接口完全不变
  • index.ts re-export 无需修改
## 变更说明 将 useEditPlanClipMutations 中的重排序和素材导入逻辑抽为独立 Hook,主文件从 183 行精简到 134 行(-27%)。 ## 拆分结构 ``` useEditPlanClips/ ├── useEditPlanClipMutations.ts (134行, 主入口,核心 CRUD) ├── useClipReorder.ts (重排序 mutation) └── useClipImport.ts (素材导入 mutation) ``` ## 三阶段拆分 - Phase 1: 类型常量(来自 @/api/template-editor,无需改动) - Phase 2: 抽离业务 Hook — useClipReorder / useClipImport - Phase 3: 主文件保留核心 CRUD(create/update/delete/batchDelete) ## 兼容性 - 主入口 useEditPlanClipMutations 导出接口完全不变 - index.ts re-export 无需修改
Collaborator

代码审查结果 - PR #1101

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

💡 建议(1个可选)

  1. useClipImport.ts, useClipReorder.ts, useEditPlanClipMutations.ts:代码中 QUERY_KEY 均为硬编码字符串 "editPlanClips"。虽然目前逻辑正确,但为了避免未来重构时出现拼写错误或不一致,建议将其提取为共享常量(例如从 @/api/template-editor 或专门的 constants 文件中导出),确保三处引用完全一致。

格式检查通过 | 逻辑审查通过 | 性能良好

【阻塞级判定】

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

📊 审查概览

  • 整体评价:通过
  • 建议级问题数量:1 个

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

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

  1. [useClipImport.ts, useClipReorder.ts, useEditPlanClipMutations.ts] 常量提取
    • 具体内容:建议将 QUERY_KEY = "editPlanClips" 提取到一个公共常量文件中,并在三个文件中引用。这有助于消除魔法字符串,降低维护成本和拼写错误风险。

良好实践

  1. 关注点分离:将 useClipImportuseClipReorder 从复杂的 useEditPlanClipMutations 中拆分出来,使得代码结构更清晰,职责更单一,便于维护和测试。
  2. 空值安全处理:在调用 mutation 前均检查了 planId 的存在性(if (!planId ...) return),有效避免了空指针导致的运行时错误。
  3. 参数校验:对 assetIdsitems 进行了长度校验,防止发送无效的空请求给后端。
  4. 错误反馈:在 onError 回调中均提供了用户友好的错误提示,提升了用户体验。

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

## 代码审查结果 - PR #1101 ### ⚠️ 问题(0个需要修改) 无 ### 💡 建议(1个可选) 1. **useClipImport.ts, useClipReorder.ts, useEditPlanClipMutations.ts**:代码中 `QUERY_KEY` 均为硬编码字符串 `"editPlanClips"`。虽然目前逻辑正确,但为了避免未来重构时出现拼写错误或不一致,建议将其提取为共享常量(例如从 `@/api/template-editor` 或专门的 constants 文件中导出),确保三处引用完全一致。 --- ✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能良好 ### 【阻塞级判定】 - 是否存在阻塞级问题:否 - 阻塞级问题数量:0 个 ### 📊 审查概览 - 整体评价:通过 - 建议级问题数量:1 个 ### 🔴 阻塞级问题(必须修复) 无 ### 💡 改进建议(不阻塞合并) 1. **[useClipImport.ts, useClipReorder.ts, useEditPlanClipMutations.ts] 常量提取** - 具体内容:建议将 `QUERY_KEY = "editPlanClips"` 提取到一个公共常量文件中,并在三个文件中引用。这有助于消除魔法字符串,降低维护成本和拼写错误风险。 ### ✅ 良好实践 1. **关注点分离**:将 `useClipImport` 和 `useClipReorder` 从复杂的 `useEditPlanClipMutations` 中拆分出来,使得代码结构更清晰,职责更单一,便于维护和测试。 2. **空值安全处理**:在调用 mutation 前均检查了 `planId` 的存在性(`if (!planId ...) return`),有效避免了空指针导致的运行时错误。 3. **参数校验**:对 `assetIds` 和 `items` 进行了长度校验,防止发送无效的空请求给后端。 4. **错误反馈**:在 `onError` 回调中均提供了用户友好的错误提示,提升了用户体验。 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-28 07:20:00 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia added 1 commit 2026-07-28 16:06:29 +08:00
refactor: extract useClipReorder and useClipImport from useEditPlanClipMutations
CI/CD Pipeline / Check if frontend-only change (pull_request) Waiting to run
CI/CD Pipeline / Validate - Code Quality (pull_request) Waiting to run
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Waiting to run
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Waiting to run
CI/CD Pipeline / Unit Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / Integration Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / Frontend Lint (pull_request) Waiting to run
CI/CD Pipeline / Frontend Unit Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / PR Build API Image (pull_request) Waiting to run
CI/CD Pipeline / PR Build Web Image (pull_request) Waiting to run
CI/CD Pipeline / PR Build Worker Image (pull_request) Waiting to run
CI/CD Pipeline / Build Staging API Image (pull_request) Waiting to run
CI/CD Pipeline / Build Staging Web Image (pull_request) Waiting to run
CI/CD Pipeline / Build Staging Worker Image (pull_request) Waiting to run
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Blocked by required conditions
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 / Build Production API Image (pull_request) Blocked by required conditions
CI/CD Pipeline / Build Production Web Image (pull_request) Blocked by required conditions
CI/CD Pipeline / Build Production Worker Image (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
PR Automation / Auto Approve on CI Green (pull_request) Waiting to run
PR Automation / Auto Merge on CI Green + Approved (pull_request) Waiting to run
Preview Deploy / Deploy Preview Environment (pull_request) Waiting to run
CI/CD Pipeline / CI Gate (pull_request) 手动设置
AI Code Review / AI Code Review (pull_request) 手动设置
Preview Cleanup / Cleanup Preview Environment (pull_request) Waiting to run
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
18c386a805
Split the large mutations hook into focused sub-hooks. Main file reduces
from 183 to 134 lines (-27%).

- useClipReorder: reorder mutation with query invalidation
- useClipImport: create clips from assets mutation
- Main hook retains core CRUD (create/update/delete/batchDelete)
xiaoxia force-pushed refactor/clip-mutations from e5b5ca439c to 18c386a805 2026-07-28 16:06:29 +08:00 Compare
xiaoxia merged commit 23edd869c6 into develop 2026-07-28 16:20:00 +08:00
Sign in to join this conversation.