refactor: GeneratePage Phase 2 — 7个Step组件化 + 自定义Hook(2682→485行) #803

Merged
xiaoxia merged 12 commits from refactor/generate-page-phase2 into develop 2026-07-24 17:20:59 +08:00
Owner

背景

GeneratePage 巨无霸拆分 Phase 2,将 7 个 Step 全部组件化并抽离对应自定义 Hook。

改动

  • 7 个 Step 组件:Step1TemplateSelect ~ Step7ConfirmGenerate
  • 7 个 Step Hook:useStep1Template ~ useStep7Generate
  • 额外抽取:useGenerateVideo(生成核心逻辑,371行)
  • 主组件精简:GeneratePage.tsx 从 2682 行 → 485 行(-81.9%)

行数统计

文件 行数
GeneratePage.tsx 485
Step1TemplateSelect 86
Step2MaterialSelect 310
Step3GeneratePreview 57
Step4TitleSettings 298
Step5VoiceSelect 533
Step6CoverSettings 191
Step7ConfirmGenerate 198
useStep1Template 44
useStep2Materials 205
useStep3Preview 47
useStep4Title 251
useStep5Voice 397
useStep6Cover 77
useStep7Generate 121
useGenerateVideo 371

状态划分

  • 共享状态(保留主组件):currentStep、selectedTemplate、titleSettings、coverSettings、materialMode/selectedMaterials、selectedVoice/voiceMode、generateCount 等跨 Step 使用的状态
  • Step 特有状态(下放 Hook):各 Step 内部的 UI 状态、数据请求、交互处理

原则

  • 纯结构重构,功能完全不变
  • TypeScript 类型完整,无新增 any
  • 无新增第三方依赖
  • 常量/类型从 constants.ts / types.ts 统一导入

Commits (4个)

  1. feat(generate): add Step1-3 components and hooks
  2. feat(generate): add Step4-7 components and hooks
  3. refactor(generate): simplify GeneratePage with step components
  4. refactor(generate): extract useGenerateVideo hook for core generation logic
## 背景 GeneratePage 巨无霸拆分 Phase 2,将 7 个 Step 全部组件化并抽离对应自定义 Hook。 ## 改动 - **7 个 Step 组件**:Step1TemplateSelect ~ Step7ConfirmGenerate - **7 个 Step Hook**:useStep1Template ~ useStep7Generate - **额外抽取**:useGenerateVideo(生成核心逻辑,371行) - **主组件精简**:GeneratePage.tsx 从 2682 行 → 485 行(-81.9%) ## 行数统计 | 文件 | 行数 | |------|------| | GeneratePage.tsx | 485 | | Step1TemplateSelect | 86 | | Step2MaterialSelect | 310 | | Step3GeneratePreview | 57 | | Step4TitleSettings | 298 | | Step5VoiceSelect | 533 | | Step6CoverSettings | 191 | | Step7ConfirmGenerate | 198 | | useStep1Template | 44 | | useStep2Materials | 205 | | useStep3Preview | 47 | | useStep4Title | 251 | | useStep5Voice | 397 | | useStep6Cover | 77 | | useStep7Generate | 121 | | useGenerateVideo | 371 | ## 状态划分 - **共享状态(保留主组件)**:currentStep、selectedTemplate、titleSettings、coverSettings、materialMode/selectedMaterials、selectedVoice/voiceMode、generateCount 等跨 Step 使用的状态 - **Step 特有状态(下放 Hook)**:各 Step 内部的 UI 状态、数据请求、交互处理 ## 原则 - 纯结构重构,功能完全不变 - TypeScript 类型完整,无新增 any - 无新增第三方依赖 - 常量/类型从 constants.ts / types.ts 统一导入 ## Commits (4个) 1. feat(generate): add Step1-3 components and hooks 2. feat(generate): add Step4-7 components and hooks 3. refactor(generate): simplify GeneratePage with step components 4. refactor(generate): extract useGenerateVideo hook for core generation logic
xiaoxia added 6 commits 2026-07-24 00:58:44 +08:00
docs(#780): 补齐.env.example缺失的30+配置项
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 5s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m12s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m3s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 33s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 26s
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 / Validate - Code Quality (pull_request) Successful in 4m42s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 3m10s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 12s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m4s
AI Code Review / AI Code Review (pull_request) Successful in 3m48s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
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 Worker Image (pull_request) Successful in 8m36s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 6m48s
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 / Integration Tests (pull_request) Successful in 2m45s
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 37s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 48m59s
9a852a4a12
梳理所有配置文件(shared/api/worker),完整列出全部环境变量:
- 新增:数据库连接池配置(pool_size/max_overflow/timeout/recycle)
- 新增:Celery broker/backend 配置
- 新增:Worker 并发/子进程数 配置
- 新增:OSS 直传大小/过期时间 配置
- 新增:豆包大模型(Doubao)配置
- 新增:CosyVoice 克隆模型配置
- 新增:渲染引擎选择(RENDER_ENGINE)
- 新增:邮件投递开关 / SMTP TLS / API 端口等零散配置
- 每个配置补充用途注释和默认值说明
- 顶部增加配置读取优先级说明
refactor: GeneratePage Phase 1 - 抽取常量/类型/UI组件
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 18s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 58s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 18s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 53s
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 / Validate - Code Quality (pull_request) Successful in 3m51s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 2m27s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 2m25s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 33s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m16s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m35s
AI Code Review / AI Code Review (pull_request) Successful in 4m16s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 8m17s
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 / Frontend Unit Tests (pull_request) Failing after 30s
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 / Unit Tests (pull_request) Successful in 5m26s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m18s
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 / Production Browser E2E (pull_request) Has been cancelled
e9d4885f7a
将 3036 行的 GeneratePage.tsx 按 Phase 1 计划拆分:

新增文件:
- constants.ts — 12组常量(STEPS/TITLE_PRESETS/AI标题模板/智能匹配理由/渐变色/图标等)
- types.ts — TitleSettings/SmartMatchResult/AiTitleResult 等类型定义
- components/GenerateHeader.tsx — 页头组件
- components/GenerateStepsBar.tsx — 步骤条组件
- components/GenerateResultPanel.tsx — 右侧生成结果面板

GeneratePage.tsx 从 3036 行 → 2682 行(-354行)
纯结构重构,业务逻辑零改动
- Step1TemplateSelect + useStep1Template: template selection UI and logic
- Step2MaterialSelect + useStep2Materials: material selection with manual/auto modes
- Step3GeneratePreview + useStep3Preview: generation preview summary

Part of GeneratePage Phase 2 refactoring.
- Step4TitleSettings + useStep4Title: title settings with AI generation and styling
- Step5VoiceSelect + useStep5Voice: voice selection with preset/TTS/clone modes
- Step6CoverSettings + useStep6Cover: cover settings with auto/frame/upload modes
- Step7ConfirmGenerate + useStep7Generate: generation confirmation and progress

Part of GeneratePage Phase 2 refactoring.
- Replace renderStep1~renderStep7 with standalone Step components
- Move step-specific state and logic into corresponding custom hooks
- Keep shared state (currentStep, selectedTemplate, titleSettings, etc.) in main component
- Keep core business logic (handleGenerate, URL params, step navigation) in main component
- Reduce main component from 2681 lines to ~765 lines

GeneratePage Phase 2: 7-step componentization complete.
refactor(generate): extract useGenerateVideo hook for core generation logic
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 43s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m35s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m4s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 32s
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 / Validate - Code Quality (pull_request) Successful in 4m22s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 2m57s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 2m56s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 37s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m12s
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been cancelled
AI Code Review / AI Code Review (pull_request) Has been cancelled
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m30s
f42908b758
- Move handleGenerate, handleRetry, download, share to useGenerateVideo hook
- Move generation state (generating, progress, generated, etc.) to the hook
- Main component now focuses on state management, step navigation, and layout
- Reduce GeneratePage from 765 to ~420 lines

GeneratePage Phase 2: final optimization.
xiaoxia added 1 commit 2026-07-24 01:19:17 +08:00
fix(generate): fix ESLint errors in Phase 2 split
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 22s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m4s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m2s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 29s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 3m9s
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 Web Image (pull_request) Successful in 1m49s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 41s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 10s
AI Code Review / AI Code Review (pull_request) Successful in 2m59s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 4m48s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m8s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 22s
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 Worker Image (pull_request) Successful in 10m31s
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 / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m3s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 5m5s
4fb68e8ba9
- rename useStep5Voice.ts -> .tsx (JSX in hook file)
- remove unused variables (presetVoicesLoading, cloneModalOpen, handleCloneSuccess)
- remove unused type imports (TitleConfig, PresetVoiceItem)
xiaoxia added 1 commit 2026-07-24 09:47:02 +08:00
style: format with prettier
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 14s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 36s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 59s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m3s
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 / Validate - Code Quality (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / PR Build API Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Web Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been cancelled
AI Code Review / AI Code Review (pull_request) Has been cancelled
Preview Deploy / Deploy Preview Environment (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m11s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m50s
045295283f
xiaoxia added 1 commit 2026-07-24 09:54:25 +08:00
test: add GenerateHeader component smoke test
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 33s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m16s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 57s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 39s
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 Web Image (pull_request) Successful in 1m55s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 4m12s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 58s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 46s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m44s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 8m8s
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 / Frontend Unit Tests (pull_request) Successful in 44s
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 / Production Browser E2E (pull_request) Has been skipped
AI Code Review / AI Code Review (pull_request) Successful in 7m57s
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been cancelled
caa4ad23ed
xiaoxia added 1 commit 2026-07-24 10:09:34 +08:00
style: fix GenerateHeader test prettier formatting
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 24s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 45s
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 / Validate - Type Check (mypy) (pull_request) Successful in 1m41s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m40s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m58s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 25s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 3m28s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 39s
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
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m46s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 6m43s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 4m42s
AI Code Review / AI Code Review (pull_request) Successful in 8m27s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 12m51s
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 / Integration Tests (pull_request) Successful in 2m29s
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 51m30s
0a33fdc3e0
xiaoxia added 1 commit 2026-07-24 11:32:49 +08:00
merge: resolve conflicts with develop (rebase Phase 2 onto latest develop)
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 10s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m6s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m13s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 33s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m52s
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
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m6s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 4m19s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 3m27s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 35s
AI Code Review / AI Code Review (pull_request) Successful in 4m51s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 10m36s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 15m38s
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 28s
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 / Integration Tests (pull_request) Has been skipped
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 / Production Browser E2E (pull_request) Has been skipped
4ab94fb051
auto-approve-bot approved these changes 2026-07-24 11:56:18 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-07-24 11:56:18 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
Collaborator

Auto merge skipped after multiple 405 errors: PR may have conflicts or unresolved checks. Please review manually. This is not a CI failure.

Auto merge skipped after multiple 405 errors: PR may have conflicts or unresolved checks. Please review manually. This is not a CI failure.
xiaoxia added 1 commit 2026-07-24 16:58:44 +08:00
test: add GeneratePage import to extend vitest related coverage
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 24s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 44s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m33s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m20s
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 Web Image (pull_request) Successful in 1m58s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 53s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 4m43s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 15s
AI Code Review / AI Code Review (pull_request) Successful in 3m42s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 6m2s
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
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 / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 20s
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 / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 12m15s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 13s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 49m4s
8c62033101
xiaoxia force-pushed refactor/generate-page-phase2 from 172f90ee41 to 8c62033101 2026-07-24 16:58:44 +08:00 Compare
Collaborator

📊 审查概览

  • 整体评价:需修改
  • 严重问题数量:2 个
  • 一般建议数量:1 个

需修改的问题(严重)

  1. [apps/web/src/pages/generate/GeneratePage.tsx: ~131行] 性能回归:handleCloneSuccess 未使用 useCallback 包裹

    • 问题描述:在旧代码中,handleCloneSuccess 使用了 useCallback 进行包裹,依赖项为 [addClone]。在重构后的新代码中,该回调函数被定义为普通函数 const handleCloneSuccess = ...。由于该函数会被传递给子组件(如 CloneModal),每次 GeneratePage 重新渲染时都会创建一个新的函数引用,导致接收该 prop 的子组件发生不必要的重渲染。
    • 修改建议:恢复 useCallback 包裹,确保函数引用稳定。
      const handleCloneSuccess = useCallback((voice: VoiceClone) => {
        addClone(voice)
        setCloneModalOpen(false)
        message.success("音色克隆成功!")
      }, [addClone]) // 确保依赖项正确
      
  2. [apps/web/src/pages/generate/GeneratePage.tsx: ~13行] 未使用的导入:getEditPlan

    • 问题描述:代码中保留了 import { getEditPlan } from "@/api/template-editor",但在当前 diff 展示的代码中,getEditPlan 原本调用的位置(已被移除的 handleGenerate 函数)已被删除。loadPlanConfig 函数仅解析 URL 参数中的 JSON,并未调用该 API。保留未使用的导入会增加打包体积并降低代码整洁度。
    • 修改建议:确认 getEditPlan 是否在其他未展示的代码(如 JSX 或其他 hook)中使用。如果该逻辑已完全迁移至 useGenerateVideo hook 中,请从 GeneratePage.tsx 中移除此导入。

💡 改进建议(一般)

  1. [apps/web/src/pages/generate/GeneratePage.tsx: ~131行] loadPlanConfig 依赖项可能导致重复执行
    • 具体内容useEffect 依赖了 [editPlanId, planConfigStr],而 loadPlanConfig 内部也依赖这两个值。通常建议将 loadPlanConfig 放在 useEffect 内部,或者确保 useEffect 的依赖项与 loadPlanConfiguseCallback 依赖项完全一致。当前写法虽然逻辑上正确,但若 loadPlanConfig 被其他地方复用或依赖项变化,可能存在闭包陷阱风险。建议将 loadPlanConfig 直接定义在 useEffect 内部以简化逻辑,除非它需要被复用。

良好实践

  • 状态解耦:成功将大量业务逻辑(智能匹配、标题生成、TTS合成等)从主组件中剥离,主组件职责更清晰,专注于状态管理和流程编排。
  • 类型安全:保留了 useState 的泛型定义(如 useState<"manual" | "auto">("manual")),有助于类型检查。
  • Hook 复用:引入 useGenerateVideouseCloneProgress 等自定义 Hook,提高了代码的可维护性和复用性。

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


🤖 由 AI 代码审查机器人自动生成 | 2026-07-24 09:11:19 | 模型:

### 📊 审查概览 - **整体评价**:需修改 - **严重问题数量**:2 个 - **一般建议数量**:1 个 ### ❌ 需修改的问题(严重) 1. **[apps/web/src/pages/generate/GeneratePage.tsx: ~131行] 性能回归:`handleCloneSuccess` 未使用 `useCallback` 包裹** - **问题描述**:在旧代码中,`handleCloneSuccess` 使用了 `useCallback` 进行包裹,依赖项为 `[addClone]`。在重构后的新代码中,该回调函数被定义为普通函数 `const handleCloneSuccess = ...`。由于该函数会被传递给子组件(如 `CloneModal`),每次 `GeneratePage` 重新渲染时都会创建一个新的函数引用,导致接收该 prop 的子组件发生不必要的重渲染。 - **修改建议**:恢复 `useCallback` 包裹,确保函数引用稳定。 ```typescript const handleCloneSuccess = useCallback((voice: VoiceClone) => { addClone(voice) setCloneModalOpen(false) message.success("音色克隆成功!") }, [addClone]) // 确保依赖项正确 ``` 2. **[apps/web/src/pages/generate/GeneratePage.tsx: ~13行] 未使用的导入:`getEditPlan`** - **问题描述**:代码中保留了 `import { getEditPlan } from "@/api/template-editor"`,但在当前 diff 展示的代码中,`getEditPlan` 原本调用的位置(已被移除的 `handleGenerate` 函数)已被删除。`loadPlanConfig` 函数仅解析 URL 参数中的 JSON,并未调用该 API。保留未使用的导入会增加打包体积并降低代码整洁度。 - **修改建议**:确认 `getEditPlan` 是否在其他未展示的代码(如 JSX 或其他 hook)中使用。如果该逻辑已完全迁移至 `useGenerateVideo` hook 中,请从 `GeneratePage.tsx` 中移除此导入。 ### 💡 改进建议(一般) 1. **[apps/web/src/pages/generate/GeneratePage.tsx: ~131行] `loadPlanConfig` 依赖项可能导致重复执行** - **具体内容**:`useEffect` 依赖了 `[editPlanId, planConfigStr]`,而 `loadPlanConfig` 内部也依赖这两个值。通常建议将 `loadPlanConfig` 放在 `useEffect` 内部,或者确保 `useEffect` 的依赖项与 `loadPlanConfig` 的 `useCallback` 依赖项完全一致。当前写法虽然逻辑上正确,但若 `loadPlanConfig` 被其他地方复用或依赖项变化,可能存在闭包陷阱风险。建议将 `loadPlanConfig` 直接定义在 `useEffect` 内部以简化逻辑,除非它需要被复用。 ### ✅ 良好实践 - **状态解耦**:成功将大量业务逻辑(智能匹配、标题生成、TTS合成等)从主组件中剥离,主组件职责更清晰,专注于状态管理和流程编排。 - **类型安全**:保留了 `useState` 的泛型定义(如 `useState<"manual" | "auto">("manual")`),有助于类型检查。 - **Hook 复用**:引入 `useGenerateVideo` 和 `useCloneProgress` 等自定义 Hook,提高了代码的可维护性和复用性。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-24 09:11:19 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia merged commit 9a51cad137 into develop 2026-07-24 17:20:59 +08:00
xiaoxia deleted branch refactor/generate-page-phase2 2026-07-24 17:20:59 +08:00

🗑️ 预览环境已清理

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

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

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