diff --git a/components/agents/AgentGenerationWorkspaceDarkV2.tsx b/components/agents/AgentGenerationWorkspaceDarkV2.tsx index 068bab7a8..c05846ecc 100644 --- a/components/agents/AgentGenerationWorkspaceDarkV2.tsx +++ b/components/agents/AgentGenerationWorkspaceDarkV2.tsx @@ -283,6 +283,9 @@ interface AgentModeReferenceSearchResponse { }; } +const AI_DETAIL_GENERATION_DISABLED_MESSAGE = "开发中"; +const IS_AI_DETAIL_GENERATION_DISABLED = true; + function getTaskDetailReferenceSourceLabel(source: AgentTaskDetailReferenceSource) { return source === "main" ? "主图" : source === "sku" ? "SKU图" : "详情图"; } @@ -296,7 +299,8 @@ function getResultModeTypeByBusinessMode( } const canReferenceReplace = mode.referenceReplaceEnabled !== false; - const canAiDetailGenerate = mode.aiDetailGenerateEnabled !== false; + const canAiDetailGenerate = + mode.aiDetailGenerateEnabled !== false && !IS_AI_DETAIL_GENERATION_DISABLED; if (method === "ai_detail_generate" && canAiDetailGenerate) { return "detail_generation"; } @@ -1427,7 +1431,7 @@ export function AgentGenerationWorkspaceDarkV2({ const emitAgentModeState = onAgentModeStateChange || setLocalAgentModeState; const detailReplacementState = resolvedAgentModeState.detailReplacement; const detailReplacementMethod = - detailReplacementState.method === "ai_detail_generate" + detailReplacementState.method === "ai_detail_generate" && !IS_AI_DETAIL_GENERATION_DISABLED ? "ai_detail_generate" : "reference_replace"; const detailReplacementReferenceCards = detailReplacementState.references; @@ -4267,6 +4271,21 @@ export function AgentGenerationWorkspaceDarkV2({ }, [updateDetailReplacementState] ); + const handleAiDetailGenerationUnavailableClick = useCallback(() => { + toast.info(AI_DETAIL_GENERATION_DISABLED_MESSAGE); + }, []); + useEffect(() => { + if (!IS_AI_DETAIL_GENERATION_DISABLED) { + return; + } + if (detailReplacementState.method !== "ai_detail_generate") { + return; + } + updateDetailReplacementState((current) => ({ + ...current, + method: "reference_replace", + })); + }, [detailReplacementState.method, updateDetailReplacementState]); const updateDetailGenerationBriefField = useCallback( (key: keyof AgentDetailBriefForm, value: string) => { updateDetailReplacementState((current) => ({ @@ -5790,7 +5809,7 @@ export function AgentGenerationWorkspaceDarkV2({
详情模式
- 顶部直接切换“参考图替换”或“AI详情生成”,生成结果会自动归档到对应分类。 + 当前可使用“参考图替换”,“AI详情生成”暂为开发中,后续开放后会自动归档到对应分类。
@@ -5808,12 +5827,11 @@ export function AgentGenerationWorkspaceDarkV2({ +
+ + ); + })} + +
+ + + {isEmbeddedPathExpanded ? ( +
+ {activeEmbeddedSelectedPath.length > 0 ? ( +
+ {activeEmbeddedSelectedPath.map( + (option, optionIndex) => { + const optionDepth = optionIndex + 1; + const optionLevelActive = + (activeEmbeddedOptionLevel?.depth || 1) === + optionDepth; + + return ( -
-
- ); - })} -
- -
-
-
- - 当前步骤路径 - - - {activeEmbeddedStepEntry.step.title} - -
- - {activeEmbeddedSelectedPath.length > 0 - ? `已选 ${activeEmbeddedSelectedPath.length} 项` - : "还未选择主卡片"} - -
- - {activeEmbeddedSelectedPath.length > 0 ? ( -
- {activeEmbeddedSelectedPath.map((option, optionIndex) => { - const optionDepth = optionIndex + 1; - const optionLevelActive = - (activeEmbeddedOptionLevel?.depth || 1) === optionDepth; - - return ( - - ); - })} -
- ) : ( -
- 先选择当前步骤的主卡片,完整子节点路径会显示在这里,顶部步骤条只保留紧凑摘要。 -
+ ); + } )}
- - - - - {activeEmbeddedOptionLevel ? ( -
- {autoAdvanceNotice ? ( - -
- - - - 已完成「{autoAdvanceNotice.completedStepTitle}」 - - 已自动切换到「{autoAdvanceNotice.nextStepTitle}」 -
-
- 刚刚完成的内容:{autoAdvanceNotice.completedSummary} -
-
- ) : null} - -
- - {activeEmbeddedOptionLevel.depth === 1 - ? "主卡片" - : `${activeEmbeddedOptionLevel.depth}级子卡片`} - - - {activeEmbeddedOptionLevel.depth === 1 - ? "先选择当前步骤的主卡片" - : "当前层级只展示这一层的子节点卡片,选完再进入下一层"} - + ) : ( +
+ 先选择当前步骤的主卡片,完整子节点路径会收纳在这里,需要时再展开查看。
- - -
- ) : null} - - ) : null - ) : ( - flattenedResolvedSteps.map(({ step, depth }, stepIndex) => ( - 1 && "ml-3 border-l-4 border-l-emerald-500/30 sm:ml-6" - )} - initial={{ opacity: 0, y: 20 }} - animate={{ opacity: 1, y: 0 }} - transition={{ delay: 0.15 + stepIndex * 0.05 }} - > -

- - {stepIndex + 2} - - {step.title} - {depth > 1 ? ( - - {`${depth}级模块`} - - ) : null} -

-
- {stepSelectionSummaryMap[step.key] - ? `已选:${stepSelectionSummaryMap[step.key]}` - : "待选择:先确定这一组风格卡片,系统再继续组合 Prompt"} + )}
- {step.description && ( -

{step.description}

- )} - {renderOptionLevels(step, step.options || [])} -
- )) - )} + ) : null} +
+ + + {activeEmbeddedOptionLevel ? ( +
+ {autoAdvanceNotice ? ( + +
+ + + + + 已完成「{autoAdvanceNotice.completedStepTitle}」 + + + + 已自动切换到「{autoAdvanceNotice.nextStepTitle}」 + +
+
+ 刚刚完成的内容:{autoAdvanceNotice.completedSummary} +
+
+ ) : null} + +
+ + {activeEmbeddedOptionLevel.depth === 1 + ? "主卡片" + : `${activeEmbeddedOptionLevel.depth}级子卡片`} + + + {activeEmbeddedOptionLevel.depth === 1 + ? "先选择当前步骤的主卡片" + : "当前层级只展示这一层的子节点卡片,选完再进入下一层"} + +
+ + +
+ ) : null} + + ) : null + ) : ( + flattenedResolvedSteps.map(({ step, depth }, stepIndex) => ( + 1 && "ml-3 border-l-4 border-l-emerald-500/30 sm:ml-6" + )} + initial={{ opacity: 0, y: 20 }} + animate={{ opacity: 1, y: 0 }} + transition={{ delay: 0.15 + stepIndex * 0.05 }} + > +

+ + {stepIndex + 2} + + {step.title} + {depth > 1 ? ( + + {`${depth}级模块`} + + ) : null} +

+
+ {stepSelectionSummaryMap[step.key] + ? `已选:${stepSelectionSummaryMap[step.key]}` + : "待选择:先确定这一组风格卡片,系统再继续组合 Prompt"} +
+ {step.description && ( +

{step.description}

+ )} + {renderOptionLevels(step, step.options || [])} +
+ )) + )} + ); if (embedded) { @@ -1597,7 +1742,9 @@ function AgentWorkflowPanelDarkV2Component({ actionLabel="开始选择风格" secondaryActionLabel={onSkipStep ? "进入风格生图" : undefined} onActionClick={() => { - const target = document.getElementById("agent-workflow-content"); + const target = document.getElementById( + "agent-workflow-content" + ); if (!target) return; target.scrollIntoView({ behavior: "smooth", block: "start" }); }} @@ -1616,73 +1763,86 @@ function AgentWorkflowPanelDarkV2Component({ - {onNextStep ? ( - -
-
-
-
工作流进度
-
- 已完成 {progress.completed} / {progress.total} 个步骤 - {progress.isComplete ? ",可以直接进入下一步" : ",也可以选择跳过直接进入下一步"} + {onNextStep ? ( + +
+
+
+
+ 工作流进度 +
+
+ 已完成 {progress.completed} / {progress.total} 个步骤 + {progress.isComplete + ? ",可以直接进入下一步" + : ",也可以选择跳过直接进入下一步"} +
+
+
+ {progress.total > 0 + ? Math.round((progress.completed / progress.total) * 100) + : 0} + %
-
- {progress.total > 0 ? Math.round((progress.completed / progress.total) * 100) : 0}% + +
+ 0 ? (progress.completed / progress.total) * 100 : 0}%`, + }} + transition={{ duration: 0.45 }} + /> +
+ +
+ {onSkipStep ? ( + + ) : null} +
- -
- 0 ? (progress.completed / progress.total) * 100 : 0}%` }} - transition={{ duration: 0.45 }} - /> -
- -
- {onSkipStep ? ( - - ) : null} - -
-
-
- ) : null} + + ) : null} {/* 页脚 */}