diff --git a/components/agents/AgentGenerationWorkspaceDarkV2.tsx b/components/agents/AgentGenerationWorkspaceDarkV2.tsx index a5eca27dd..c06f28a05 100644 --- a/components/agents/AgentGenerationWorkspaceDarkV2.tsx +++ b/components/agents/AgentGenerationWorkspaceDarkV2.tsx @@ -298,6 +298,8 @@ export function AgentGenerationWorkspaceDarkV2({ onResultPreviewUrlsChange, topNavRightSlot, }: AgentGenerationWorkspaceDarkV2Props) { + const darkSelectContentClass = + "border-white/10 bg-zinc-950 text-white shadow-2xl [--popover:hsl(240_10%_3.9%)] [--popover-foreground:hsl(0_0%_98%)] [--accent:rgba(255,255,255,0.08)] [--accent-foreground:hsl(0_0%_98%)] [--muted:rgba(255,255,255,0.04)] [--muted-foreground:rgba(255,255,255,0.56)]"; const rawChatId = useMemo( () => (chatId.startsWith("canvas-") ? chatId.replace("canvas-", "") : chatId), [chatId] @@ -769,6 +771,10 @@ export function AgentGenerationWorkspaceDarkV2({ (image) => image.source === "primary" || image.source === "secondary" ); const hasSatisfiedSlotRequirement = !hasAgentUploadSlots || attachmentCount >= requiredUploadCount; + const mergedSettingsStepLabel = hasMaterialStep ? "选图与生成" : "生成参数"; + const mergedSettingsStepDescription = hasMaterialStep + ? "搜索素材、补充要求、确认槽位并开始生成" + : "补充要求并开始生成"; const toolSteps = useMemo( () => [ @@ -794,35 +800,15 @@ export function AgentGenerationWorkspaceDarkV2({ }, ] : []), - ...(hasMaterialStep - ? [ - { - key: "materials" as const, - label: "SKU / SPU 选图", - description: "搜索主图和搭配图", - icon: Upload, - disabled: !selectedAgentPresetId, - completed: hasMaterialSelections, - optional: true, - }, - ] - : []), - { - key: "prompt" as const, - label: "补充要求", - description: "补充风格、构图和细节要求", - icon: Sparkles, - disabled: !selectedAgentPresetId, - completed: Boolean(input.trim()), - optional: true, - }, { key: "settings" as const, - label: "生成参数", - description: "选择模型并开始生成", + label: mergedSettingsStepLabel, + description: mergedSettingsStepDescription, icon: Settings2, disabled: !selectedAgentPresetId, - completed: Boolean(selectedAgentPresetId), + completed: + Boolean(selectedAgentPresetId) && + (Boolean(input.trim()) || hasMaterialSelections || hasSatisfiedSlotRequirement), optional: false, }, ], @@ -830,8 +816,10 @@ export function AgentGenerationWorkspaceDarkV2({ hasBrandModelSelection, hasBrandModelStep, hasMaterialSelections, - hasMaterialStep, hasSatisfiedSlotRequirement, + mergedSettingsStepDescription, + mergedSettingsStepLabel, + hasMaterialStep, input, selectedAgentPresetId, ] @@ -943,28 +931,27 @@ export function AgentGenerationWorkspaceDarkV2({ } setActiveToolStep((current) => { - if (current !== "preset") return current; - if (isDetailReplacementPreset || isSkuReplacementPreset) { - if (hasMaterialStep) return "materials"; - return "prompt"; + if ( + current !== "preset" && + current !== "materials" && + current !== "prompt" + ) { + return current; } + if (hasBrandModelStep) return "brand-model"; - if (hasMaterialStep) return "materials"; - return "prompt"; + return "settings"; }); }, [ hasBrandModelStep, - hasMaterialStep, - isDetailReplacementPreset, - isSkuReplacementPreset, selectedAgentPresetId, ]); useEffect(() => { if (!toolSteps.some((step) => step.key === activeToolStep)) { - setActiveToolStep("preset"); + setActiveToolStep(selectedAgentPresetId ? "settings" : "preset"); } - }, [activeToolStep, toolSteps]); + }, [activeToolStep, selectedAgentPresetId, toolSteps]); useEffect(() => { if (!syncGeneratedResultsToCanvas) { @@ -1581,7 +1568,7 @@ export function AgentGenerationWorkspaceDarkV2({ {assignableSourceLibrary.length > 0 ? ( -
{selectedAgentPresetId - ? "顶部流程线配置完成后,切到“生成参数”即可开始生成" + ? hasMaterialStep + ? "在“选图与生成”页完成搜图、槽位确认和参数设置后,即可开始生成" + : "在当前页补充要求并确认参数后,即可开始生成" : "请先从顶部流程线选择一个生图模式"}
diff --git a/components/agents/AgentPresetDialog.tsx b/components/agents/AgentPresetDialog.tsx index 6430d2d76..6932a44db 100644 --- a/components/agents/AgentPresetDialog.tsx +++ b/components/agents/AgentPresetDialog.tsx @@ -149,6 +149,9 @@ export function AgentPresetDialog({ const dialogTitle = initialPreset ? `编辑${entityLabel}` : `新建${entityLabel}`; const dialogDescription = `配置${entityLabel}名称、预览图、模型和槽位提示词。`; const submitLabel = initialPreset ? `保存${entityLabel}` : `创建${entityLabel}`; + const darkSelectContentClass = isDark + ? "border-white/10 bg-zinc-950 text-white shadow-2xl [--popover:hsl(240_10%_3.9%)] [--popover-foreground:hsl(0_0%_98%)] [--accent:rgba(255,255,255,0.08)] [--accent-foreground:hsl(0_0%_98%)] [--muted:rgba(255,255,255,0.04)] [--muted-foreground:rgba(255,255,255,0.56)]" + : ""; const isStructuredImageModeBuilder = type === "image" && modeConfig.modeType !== "legacy"; const isSceneModeBuilder = type === "image" && modeConfig.modeType === "scene_generation"; const isDetailReplacementModeBuilder = @@ -716,7 +719,7 @@ export function AgentPresetDialog({ >