From e15456ea149417c0cc129ec467bb26b329d65e24 Mon Sep 17 00:00:00 2001 From: Suzumiya Date: Fri, 11 Sep 2026 19:18:12 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=BB=E6=97=B6=E4=B8=A2=E5=BC=83=E7=9A=84?= =?UTF-8?q?=E5=9D=90=E6=A0=87=E4=B8=8D=E5=86=8D=E9=9D=99=E9=BB=98=EF=BC=9A?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E6=9D=A1=E5=B8=A6=E6=9D=A1=E6=95=B0=E5=B9=B6?= =?UTF-8?q?=E5=9C=A8=20DOM=20=E4=B8=8A=E5=88=86=E5=BC=80=E4=B8=89=E7=B1=BB?= =?UTF-8?q?=E8=AE=A1=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - readReport 增加 droppedMissingResource(资源已不在 manifest)/ droppedSectionMismatch(分区与资源分类不匹配)/ dropped(两者之和),判据仍是 normalizeResourceCanvasPosition,未改 resourceCanvasLayoutModel 的丢弃语义。 - 文案补上跳过条数与两类原因:归并与丢弃同时发生时用「另有 N 条坐标无法对齐已跳过(…)」;只有丢弃时用「打开项目时有 N 条坐标无法对齐已跳过(…)」。 - 提示条暴露 data-resource-canvas-layout-normalized / -dropped / -dropped-missing-resource / -dropped-section-mismatch,供排障直接读 DOM;完全没丢时四个值都是 0。 - 读盘触发条件放宽为「有归并或有丢弃」,避免只有丢弃时什么都不提示。 - 断言:读盘统计用例覆盖三种情况分离;文案用例覆盖四形态(含真机 112 / 66 / 16 口径);appSurface 用例断言四个 data-* 与完整文案。 - 变异验证:把 dropped 计数改成恒 0 → 统计用例、读盘报告用例、提示条用例三处变红;去掉 data-resource-canvas-layout-dropped → 提示条用例变红。 --- .../src/view/project-development/index.tsx | 15 +++- .../useProjectResourceCanvasLayout.ts | 68 +++++++++++++++---- .../appSurface/project-development.suite.ts | 12 ++-- .../useProjectResourceCanvasLayout.test.ts | 51 ++++++++++++-- 4 files changed, 120 insertions(+), 26 deletions(-) diff --git a/apps/ai-game-creator-shell/src/view/project-development/index.tsx b/apps/ai-game-creator-shell/src/view/project-development/index.tsx index 4c67ce121..767290844 100644 --- a/apps/ai-game-creator-shell/src/view/project-development/index.tsx +++ b/apps/ai-game-creator-shell/src/view/project-development/index.tsx @@ -1396,8 +1396,8 @@ export default function ProjectDevelopmentView({ const autoOpenedUiWorkflowResourceRef = useRef(null); const [resourceWorkbenchNotice, setResourceWorkbenchNotice] = useState(''); /** - * 打开项目时读盘归并旧分区是当场写回 sidecar 的副作用,改前完全静默。 - * 这条提示只在项目刚打开时出现一次,可手动关掉,不是常驻说明。 + * 打开项目时读盘归并旧分区 / 跳过无法对齐的坐标都是当场写回 sidecar 的副作用, + * 改前完全静默。这条提示只在项目刚打开时出现一次,可手动关掉,不是常驻说明。 */ const [resourceLayoutReadNotice, setResourceLayoutReadNotice] = useState<{ text: string; @@ -2099,7 +2099,7 @@ export default function ProjectDevelopmentView({ const resourceLayoutNotice = activeResourceLayout.notice; const resourceLayoutSaving = activeResourceLayout.saving; /** - * 读时归并发生在「打开项目」这一刻,且结果会被当场写回的 sidecar 固化, + * 读时归并 / 读时丢弃都发生在「打开项目」这一刻,且结果会被当场写回的 sidecar 固化, * 所以必须让用户看见一次。两个排序模式各读一份 sidecar,这里只取先到的那份、 * 每个项目只提示一次,避免两条提示互相覆盖;切项目后上一次的提示必须清掉。 */ @@ -6066,6 +6066,15 @@ export default function ProjectDevelopmentView({ data-resource-canvas-layout-normalized={ resourceLayoutReadNotice.report.normalizedSections } + data-resource-canvas-layout-dropped={ + resourceLayoutReadNotice.report.dropped + } + data-resource-canvas-layout-dropped-missing-resource={ + resourceLayoutReadNotice.report.droppedMissingResource + } + data-resource-canvas-layout-dropped-section-mismatch={ + resourceLayoutReadNotice.report.droppedSectionMismatch + } > {resourceLayoutReadNotice.text}