refactor: rewrite useStepNavigation for 5-step flow (#1899)

This commit is contained in:
2026-09-14 20:47:55 +08:00
parent d446149304
commit dd4193e7ba
@@ -1,11 +1,10 @@
/**
* GeneratePage 步骤导航(Issue #1677 修正:固定 6 步,单视频与批量一致)
* 步骤:模板(1) → 素材(2) → 配音(3) → 标题(4) → 确认生成(5) → 封面(6)
* GeneratePage 步骤导航(#1899 简化为 5 步,单视频与批量一致)
* 步骤:素材(1) → 配音(2) → 标题(3) → 确认生成(4) → 封面(5)
*
* - 步骤4底部按钮是「确认生成视频/确认生成 N 个视频」(由 GenerateStepActions 调
* onConfirmGenerate),创建成功后跳转步骤5;本 hook 的 goNext 只负责 1→2→3→4
* 和 5→6 的「下一步」。
* - 步骤5(确认生成进度页):渲染全部完成(generated)后「下一步」解锁进封面。
* - 步骤3底部按钮是「确认生成视频」(由 GenerateStepActions 调 onConfirmGenerate),
* 创建成功后跳转步骤4;本 hook 的 goNext 只负责 1→2→3 和 4→5 的「下一步」。
* - 步骤4(确认生成进度页):渲染全部完成(generated)后「下一步」解锁进封面。
*/
import { message } from "antd"
import type { TitleSettings } from "../types"
@@ -13,14 +12,13 @@ import type { TitleSettings } from "../types"
export interface UseStepNavigationOptions {
currentStep: number
setCurrentStep: (step: number | ((prev: number) => number)) => void
selectedTemplate: string
materialMode: "manual" | "auto"
selectedMaterials: string[]
smartSelectedIds: string[]
titleSettings: TitleSettings
/** 是否已完成视频生成(步骤5全部渲染完成后才能进入封面) */
/** 是否已完成视频生成(步骤4全部渲染完成后才能进入封面) */
generated: boolean
/** Step1 点下一步时弹出数量选择弹窗 */
/** 点素材下一步时弹出数量选择弹窗 */
onOpenCountModal: () => void
}
@@ -33,7 +31,6 @@ export const useStepNavigation = (options: UseStepNavigationOptions): UseStepNav
const {
currentStep,
setCurrentStep,
selectedTemplate,
materialMode,
selectedMaterials,
smartSelectedIds,
@@ -43,30 +40,26 @@ export const useStepNavigation = (options: UseStepNavigationOptions): UseStepNav
const goNext = () => {
if (currentStep === 1) {
if (!selectedTemplate) {
message.warning("请先选择一个模板")
return
}
// 选完模板弹数量选择弹窗(每次都弹,不记忆)
// 选完素材弹数量选择弹窗
onOpenCountModal()
return
}
if (currentStep === 2 && materialMode === "manual" && selectedMaterials.length === 0) {
if (currentStep === 1 && materialMode === "manual" && selectedMaterials.length === 0) {
message.warning("请至少选择一个素材")
return
}
if (currentStep === 2 && materialMode === "auto" && smartSelectedIds.length === 0) {
if (currentStep === 1 && materialMode === "auto" && smartSelectedIds.length === 0) {
message.warning("请先进行智能匹配并选择素材")
return
}
// 步骤5(确认生成):全部渲染完成后才能下一步进封面
if (currentStep === 5) {
// 步骤4(确认生成):全部渲染完成后才能下一步进封面
if (currentStep === 4) {
if (!generated) {
message.warning("视频还在渲染中,请等待生成完成")
return
}
}
if (currentStep < 6) {
if (currentStep < 5) {
setCurrentStep((s) => s + 1)
}
}