From f201661dcfabefea2630ae30b243dce06aa56c85 Mon Sep 17 00:00:00 2001 From: chenpei Date: Fri, 28 Aug 2026 10:54:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=90=8E=E5=8F=B0=E5=A4=84?= =?UTF-8?q?=E7=90=86=E8=BF=9B=E5=BA=A6=E6=94=B9=E7=94=A8=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E8=AF=9D=E6=9C=AF=EF=BC=8C=E5=86=85=E9=83=A8=E9=98=B6=E6=AE=B5?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E4=B8=8D=E5=86=8D=E7=9B=B4=E6=8E=A5=E6=98=BE?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/upload/ProductPackageUploader.tsx | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/components/upload/ProductPackageUploader.tsx b/components/upload/ProductPackageUploader.tsx index 6878eab..ccd10db 100644 --- a/components/upload/ProductPackageUploader.tsx +++ b/components/upload/ProductPackageUploader.tsx @@ -290,6 +290,19 @@ export function stripTrailingImageExtensions(fileName: string): string { return result; } +// 后台处理阶段的用户话术;未知阶段一律兜底中文,内部 stage 常量绝不直接上屏。 +const JOB_STAGE_LABELS: Record = { + queued: '后台排队中...', + validating: '正在校验素材信息...', + assembling: '正在合并上传文件...', + previews: '正在生成预览图...', + zips: '正在打包下载文件...', + database: '正在保存素材信息...', + cleanup: '正在清理临时文件...', + completed: '完成!', + failed: '后台处理失败', +} + function AssetThumbnail({ asset, alt, @@ -1261,7 +1274,8 @@ export default function ProductPackageUploader({ if (!mountedRef.current) return; const backendProgress = Number.isFinite(status.progress) ? Math.max(0, Math.min(100, status.progress || 0)) : 0; setProgress(90 + backendProgress * 0.1); - setProcessingStep(status.stage || (status.status === 'queued' ? '后台排队处理中...' : '后台处理中...')); + const stageLabel = status.stage ? JOB_STAGE_LABELS[status.stage] : undefined; + setProcessingStep(stageLabel || (status.status === 'queued' ? JOB_STAGE_LABELS.queued : '后台处理中...')); }, }); }