From 553e5b53732f0c1f54f3f87b507a148832970206 Mon Sep 17 00:00:00 2001 From: 134 Date: Tue, 16 Jun 2026 21:19:37 +0800 Subject: [PATCH] fix: add edit actions to detail replacement results --- .../agents/AgentGenerationWorkspaceDarkV2.tsx | 126 ++++++++++++++++-- 1 file changed, 112 insertions(+), 14 deletions(-) diff --git a/components/agents/AgentGenerationWorkspaceDarkV2.tsx b/components/agents/AgentGenerationWorkspaceDarkV2.tsx index 903611ee5..cd7077efb 100644 --- a/components/agents/AgentGenerationWorkspaceDarkV2.tsx +++ b/components/agents/AgentGenerationWorkspaceDarkV2.tsx @@ -223,6 +223,7 @@ type DetailResultLocalEditTarget = { cardId: string; imageUrl: string; title: string; + resultModeType: "detail_generation" | "detail_replacement"; }; type DetailResultLocalEditRect = { @@ -4590,9 +4591,14 @@ export function AgentGenerationWorkspaceDarkV2({ [activeResultModeType, mergedResultCollections, onResultPreviewUrlsChange] ); const handleEnhanceDetailGenerationResult = useCallback( - async (params: { cardId: string; imageUrl: string }) => { + async (params: { + cardId: string; + imageUrl: string; + resultModeType?: "detail_generation" | "detail_replacement"; + }) => { const cardId = String(params.cardId || "").trim(); const imageUrl = String(params.imageUrl || "").trim(); + const resultModeType = params.resultModeType || "detail_generation"; if (!cardId || !/^https?:\/\//i.test(imageUrl)) { toast.error("详情图地址无效,无法高清处理"); return; @@ -4612,12 +4618,29 @@ export function AgentGenerationWorkspaceDarkV2({ throw new Error(result.error || "高清处理失败"); } const nextUrl = result.data.url; - if (!appendResultUrlToCollection("detail_generation", nextUrl)) { - throw new Error("当前项目未接入结果保存能力"); + if (resultModeType === "detail_replacement") { + handleUpdateReplacementResultRecord({ + modeType: "detail_replacement", + cardId, + url: nextUrl, + text: "已完成高清处理。", + status: "completed", + }); + setActiveResultModeType("detail_replacement"); + setActiveDetailReferenceCardId(cardId); + setSelectedResultUrl(nextUrl); + } else { + if (!appendResultUrlToCollection("detail_generation", nextUrl)) { + throw new Error("当前项目未接入结果保存能力"); + } + setActiveResultModeType("detail_generation"); + setSelectedResultUrl(nextUrl); } - setActiveResultModeType("detail_generation"); - setSelectedResultUrl(nextUrl); - toast.success("高清处理完成,已加入 AI详情结果区"); + toast.success( + resultModeType === "detail_replacement" + ? "高清处理完成,已更新当前套详情结果图" + : "高清处理完成,已加入 AI详情结果区" + ); } catch (error) { console.error("[AgentGenerationWorkspaceDarkV2] 详情图高清失败:", error); toast.error(error instanceof Error ? error.message : "高清处理失败,请稍后重试"); @@ -4629,7 +4652,11 @@ export function AgentGenerationWorkspaceDarkV2({ }); } }, - [appendResultUrlToCollection, detailEnhancingCardIds] + [ + appendResultUrlToCollection, + detailEnhancingCardIds, + handleUpdateReplacementResultRecord, + ] ); const handleSubmitDetailLocalEdit = useCallback( async (params: { @@ -4641,6 +4668,7 @@ export function AgentGenerationWorkspaceDarkV2({ const target = detailLocalEditTarget; const cardId = String(target?.cardId || "").trim(); const imageUrl = String(params.imageUrl || "").trim(); + const resultModeType = target?.resultModeType || "detail_generation"; if (!target || !cardId || !/^https?:\/\//i.test(imageUrl)) { toast.error("详情图地址无效,无法局部编辑"); return; @@ -4694,13 +4722,30 @@ export function AgentGenerationWorkspaceDarkV2({ if (!/^https?:\/\//i.test(nextUrl)) { throw new Error("局部编辑完成但结果地址无效"); } - if (!appendResultUrlToCollection("detail_generation", nextUrl)) { - throw new Error("当前项目未接入结果保存能力"); + if (resultModeType === "detail_replacement") { + handleUpdateReplacementResultRecord({ + modeType: "detail_replacement", + cardId, + url: nextUrl, + text: "已完成局部编辑处理。", + status: "completed", + }); + setActiveResultModeType("detail_replacement"); + setActiveDetailReferenceCardId(cardId); + setSelectedResultUrl(nextUrl); + } else { + if (!appendResultUrlToCollection("detail_generation", nextUrl)) { + throw new Error("当前项目未接入结果保存能力"); + } + setActiveResultModeType("detail_generation"); + setSelectedResultUrl(nextUrl); } - setActiveResultModeType("detail_generation"); - setSelectedResultUrl(nextUrl); setDetailLocalEditTarget(null); - toast.success("局部编辑完成,已加入 AI详情结果区"); + toast.success( + resultModeType === "detail_replacement" + ? "局部编辑完成,已更新当前套详情结果图" + : "局部编辑完成,已加入 AI详情结果区" + ); return; } @@ -4717,7 +4762,12 @@ export function AgentGenerationWorkspaceDarkV2({ setDetailLocalEditSubmittingId(null); } }, - [appendResultUrlToCollection, detailLocalEditSubmittingId, detailLocalEditTarget] + [ + appendResultUrlToCollection, + detailLocalEditSubmittingId, + detailLocalEditTarget, + handleUpdateReplacementResultRecord, + ] ); const handlePsdDerivedImageCreated = useCallback( (imageUrl: string) => { @@ -7452,6 +7502,8 @@ export function AgentGenerationWorkspaceDarkV2({ const isPending = card.status === "generating" || card.status === "queued"; const hasResult = Boolean(card.resultUrl) && !isPending; const isWatermarkRemoving = detailWatermarkRemoveCardIds.has(card.id); + const isDetailLocalEditing = detailLocalEditSubmittingId === card.id; + const isDetailEnhancing = detailEnhancingCardIds.has(card.id); return (
下载 -
+
+ +