diff --git a/app/(admin)/settings/agent-workflow/psd-templates/psd-templates-settings-client.tsx b/app/(admin)/settings/agent-workflow/psd-templates/psd-templates-settings-client.tsx index eec56f474..a76375806 100644 --- a/app/(admin)/settings/agent-workflow/psd-templates/psd-templates-settings-client.tsx +++ b/app/(admin)/settings/agent-workflow/psd-templates/psd-templates-settings-client.tsx @@ -182,16 +182,25 @@ function countEditableTextLayers(template: AgentPsdTemplate | null) { ); } +function hasTemplateParsedCanvas(template: AgentPsdTemplate | null) { + return Boolean( + template && + Number(template.width || 0) > 1 && + Number(template.height || 0) > 1 && + String(template.previewUrl || "").trim() + ); +} + function getTemplateParseLabel(template: AgentPsdTemplate | null) { if (!template) return "未解析"; switch (template.parseStatus) { case "processing": - return "解析中"; + return hasTemplateParsedCanvas(template) ? "补全中" : "解析中"; case "completed": return "已解析"; case "failed": - return "解析失败"; + return hasTemplateParsedCanvas(template) ? "补全失败" : "解析失败"; default: return "待解析"; } @@ -219,6 +228,9 @@ function getTemplateParseProgress(template: AgentPsdTemplate | null) { } function getTemplateParseActionLabel(template: AgentPsdTemplate | null) { + if (template?.parseStatus === "processing") { + return "补全中"; + } return template?.parseStatus === "completed" ? "重新解析" : "解析 PSD"; } @@ -775,8 +787,12 @@ export function PsdTemplatesSettingsClient({ onStart: () => { setTemplateUploadStatus("正在解析 PSD,请稍候..."); }, - onDone: () => { - setTemplateUploadStatus("解析完成"); + onDone: (template) => { + setTemplateUploadStatus( + template.parseStatus === "completed" + ? "解析完成" + : "快速解析完成,后台继续补全资产..." + ); }, onError: (message) => { setTemplateUploadStatus(`解析失败:${message}`); @@ -1035,7 +1051,7 @@ export function PsdTemplatesSettingsClient({ options?: { skipCompletedConfirm?: boolean; onStart?: () => void; - onDone?: () => void; + onDone?: (template: AgentPsdTemplate) => void; onError?: (message: string) => void; } ) { @@ -1099,11 +1115,15 @@ export function PsdTemplatesSettingsClient({ throw new Error(payload.error || "PSD 解析失败"); } - toast.success(`模板“${payload.template.name}”解析完成`); + toast.success( + payload.template.parseStatus === "completed" + ? `模板“${payload.template.name}”解析完成` + : `模板“${payload.template.name}”已完成快速解析,后台继续补全资产` + ); setDraftTemplate(cloneTemplate(payload.template)); await mutate(); setSelectedTemplateId(payload.template.id); - options?.onDone?.(); + options?.onDone?.(payload.template); } catch (error) { await mutate(); const message = error instanceof Error ? error.message : "PSD 解析失败"; @@ -1184,7 +1204,7 @@ export function PsdTemplatesSettingsClient({ {getTemplateParseLabel(draftTemplate)} - {draftTemplate.parseStatus === "completed" + {hasTemplateParsedCanvas(draftTemplate) ? `${draftTemplate.width} x ${draftTemplate.height}` : "等待解析后显示尺寸"} @@ -1851,7 +1871,7 @@ export function PsdTemplatesSettingsClient({
{template.name}
- {template.parseStatus === "completed" + {hasTemplateParsedCanvas(template) ? `${template.width} x ${template.height} · ${template.layerCount} 图层` : "待解析完成后生成尺寸和图层"}
@@ -2031,12 +2051,12 @@ export function PsdTemplatesSettingsClient({ className="flex w-full items-center justify-center bg-black/5" style={{ aspectRatio: - draftTemplate.parseStatus === "completed" + hasTemplateParsedCanvas(draftTemplate) ? `${Math.max(1, draftTemplate.width)} / ${Math.max(1, draftTemplate.height)}` : "1 / 1", }} > - {draftTemplate.parseStatus === "completed" ? ( + {hasTemplateParsedCanvas(draftTemplate) ? ( {draftTemplate.name} {draftTemplate.parseStatus === "processing" ? (
@@ -2103,7 +2125,7 @@ export function PsdTemplatesSettingsClient({
画布尺寸
- {draftTemplate.parseStatus === "completed" + {hasTemplateParsedCanvas(draftTemplate) ? `${draftTemplate.width} x ${draftTemplate.height}` : "待解析"}
@@ -2111,7 +2133,7 @@ export function PsdTemplatesSettingsClient({
当前槽位
- {draftTemplate.parseStatus === "completed" + {hasTemplateParsedCanvas(draftTemplate) ? `${countEditableLayers(draftTemplate)} / ${draftTemplate.layers.length}` : "待解析"}
@@ -2388,7 +2410,7 @@ export function PsdTemplatesSettingsClient({ 当前图层数: - {draftTemplate.parseStatus === "completed" + {hasTemplateParsedCanvas(draftTemplate) ? draftTemplate.layers.length : "待解析"} @@ -2438,7 +2460,9 @@ export function PsdTemplatesSettingsClient({
先解析 PSD,再配置槽位
- 当前模板还没有生成图层结构、缩略图和字体识别结果,完成解析后这里会自动显示可编辑配置项。 + {hasTemplateParsedCanvas(draftTemplate) + ? "快速解析已经返回图层结构,后台正在补全缩略图、源图和底图,完成后这里会自动开放完整配置。" + : "当前模板还没有生成图层结构、缩略图和字体识别结果,完成解析后这里会自动显示可编辑配置项。"}