feat(pipeline): V1 雪藏拼接导出(代码保留,V2 恢复)

- 阶段步进器 STAGE_STEPS 去掉「拼接导出」第 5 项 → 菜单只剩 1-4
- 视频阶段「确认视频,进入拼接」入口按钮 {false &&} 隐藏(代码留存)
- 已完成项目落到第 4 阶段(视频)而非被藏的第 5,避免空白
- Stage 5 拼接导出渲染块原样保留,V2 恢复改 false→true + 还原菜单项即可

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
seaislee1209
2026-06-20 18:39:49 +08:00
co-authored by Claude Opus 4.8
parent b946a64409
commit d7f7ed2bae
+7 -3
View File
@@ -231,8 +231,8 @@ const STAGE_STEPS: Array<{ n: number; label: string }> = [
{ n: 1, label: "脚本" }, { n: 1, label: "脚本" },
{ n: 2, label: "基础资产" }, { n: 2, label: "基础资产" },
{ n: 3, label: "故事板" }, { n: 3, label: "故事板" },
{ n: 4, label: "视频" }, { n: 4, label: "视频" }
{ n: 5, label: "拼接导出" } // V1 雪藏「拼接导出」(代码保留,V2 恢复):{ n: 5, label: "拼接导出" }
]; ];
// 行34 · 行内「添加标签」:点 + 展开输入框,回车 / 失焦提交(空则收起) // 行34 · 行内「添加标签」:点 + 展开输入框,回车 / 失焦提交(空则收起)
@@ -851,7 +851,8 @@ export function PipelinePage(props: {
// 步进器:对齐镜像 activateStage 逻辑。默认(无 hash)pane=脚本(1) 但步进器 active=项目真实阶段; // 步进器:对齐镜像 activateStage 逻辑。默认(无 hash)pane=脚本(1) 但步进器 active=项目真实阶段;
// 一旦导航(hash 或点击),active 跟随所看阶段,completed=max(项目阶段-1, 所看阶段-1)。 // 一旦导航(hash 或点击),active 跟随所看阶段,completed=max(项目阶段-1, 所看阶段-1)。
const projectStage = project.status === "completed" ? 5 : Math.max(1, (stageOrder as readonly string[]).indexOf(project.current_stage) + 1); // V1 雪藏拼接导出:已完成项目落到第 4 阶段(视频),不落到被藏的第 5(V2 恢复改回 5)
const projectStage = project.status === "completed" ? 4 : Math.max(1, (stageOrder as readonly string[]).indexOf(project.current_stage) + 1);
const initHash = typeof location !== "undefined" ? location.hash.match(/#stage-(\d)/) : null; const initHash = typeof location !== "undefined" ? location.hash.match(/#stage-(\d)/) : null;
const [viewStage, setViewStage] = useState(initHash ? Number(initHash[1]) : 1); const [viewStage, setViewStage] = useState(initHash ? Number(initHash[1]) : 1);
const [navigated, setNavigated] = useState(Boolean(initHash)); const [navigated, setNavigated] = useState(Boolean(initHash));
@@ -3017,7 +3018,10 @@ export function PipelinePage(props: {
<div className="info"><span className="mono">[ {segDone} · {segTotalSec}s · · ]</span></div> <div className="info"><span className="mono">[ {segDone} · {segTotalSec}s · · ]</span></div>
<div className="hstack"> <div className="hstack">
<button className="btn" type="button" onClick={() => goStage(3)}><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"><path d="M19 12H5M12 19l-7-7 7-7" /></svg> </button> <button className="btn" type="button" onClick={() => goStage(3)}><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"><path d="M19 12H5M12 19l-7-7 7-7" /></svg> </button>
{/* V1 雪藏拼接导出:隐藏「进入拼接」入口(代码保留,V2 恢复 false→true) */}
{false && (
<button className="btn btn-primary btn-lg" type="button" onClick={() => goStage(5)}>, <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"><path d="M5 12h14M12 5l7 7-7 7" /></svg></button> <button className="btn btn-primary btn-lg" type="button" onClick={() => goStage(5)}>, <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"><path d="M5 12h14M12 5l7 7-7 7" /></svg></button>
)}
</div> </div>
</div> </div>
</section> </section>