From d1cd30069548869c5cfa5bcb953737569906af64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E7=89=A9?= <253518756@qq.com> Date: Wed, 17 Jun 2026 17:46:13 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9A=90=E8=97=8F=E5=9B=BE=E7=89=87=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E4=B8=AD=E7=9A=84=E4=B8=8A=E6=B8=B8=E6=A0=87=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 图片信息弹窗标题固定为图片信息,不再拼接图片名称 图片信息弹窗移除 Provider 展示行 Task 展示收口为任务标识末尾数字,避免暴露 Provider 字符串 补充图片信息脱敏展示回归测试 更新画板角色形象生成文档中的图片信息展示口径 --- ...编辑器】画板角色形象生成入口设计-2026-06-15.md | 7 +++++++ .../ImageCanvasMetadataModalView.test.tsx | 14 +++++++++----- .../image-editor/ImageCanvasMetadataModalView.tsx | 11 +++++++---- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/docs/【编辑器】画板角色形象生成入口设计-2026-06-15.md b/docs/【编辑器】画板角色形象生成入口设计-2026-06-15.md index 41360ec0..b67d3218 100644 --- a/docs/【编辑器】画板角色形象生成入口设计-2026-06-15.md +++ b/docs/【编辑器】画板角色形象生成入口设计-2026-06-15.md @@ -57,6 +57,13 @@ - 提交生成规范时,若存在参考图,前端必须把参考图作为 `referenceImageSrcs[0]` 提交到 `/api/editor/images/generations`,并在生图提示词开头自动追加“参考图生成规范”语义:要求模型参考图 1 的构图、风格、材质、色彩、形状语言和视觉层级生成规范图,但不要复制参考图中的文字、水印或无关背景。 - 生成结果的信息快照必须记录该参考图,标题为 `参考图`,便于后续在图片信息面板回看生成输入。 +## 图片信息展示 + +- 图片信息弹窗标题固定为 `图片信息`,不拼接图片 / 图层名称。 +- 图片信息弹窗不展示 Provider 行,也不在 Task 中暴露 Provider 字符串。 +- Task 只展示任务标识里的数字部分;若任务标识没有数字,则显示 `-`。 +- 图片 / 图层名称只用于画布内部选择、图层列表和素材管理,不进入图片信息弹窗。 + ## 可访问性与状态 - 点选状态下画布显示状态提示 `请选择画布中的图片作为角色形象规范,按 Esc 退出`。 diff --git a/src/components/image-editor/ImageCanvasMetadataModalView.test.tsx b/src/components/image-editor/ImageCanvasMetadataModalView.test.tsx index ba2e0efa..2263bdf0 100644 --- a/src/components/image-editor/ImageCanvasMetadataModalView.test.tsx +++ b/src/components/image-editor/ImageCanvasMetadataModalView.test.tsx @@ -31,7 +31,7 @@ describe('ImageCanvasMetadataModalView', () => { layer={createLayer({ model: 'gpt-image-2', provider: 'VectorEngine', - taskId: 'task-123', + taskId: 'gpt-image-2-task-123', objectKey: 'generated/object.png', generationInputs: { fields: [{ title: '生成提示词', value: '清爽游戏按钮' }], @@ -48,8 +48,9 @@ describe('ImageCanvasMetadataModalView', () => { />, ); - const dialog = screen.getByRole('dialog', { name: '生成主图图片信息' }); + const dialog = screen.getByRole('dialog', { name: '图片信息' }); + expect(within(dialog).queryByText('生成主图')).toBeNull(); expect(within(dialog).getByText('生成图片')).toBeTruthy(); expect(within(dialog).getByText('生成提示词')).toBeTruthy(); expect(within(dialog).getByText('清爽游戏按钮')).toBeTruthy(); @@ -57,8 +58,10 @@ describe('ImageCanvasMetadataModalView', () => { expect(within(dialog).getByText('角色立绘')).toBeTruthy(); expect(within(dialog).getByText('gpt-image-2')).toBeTruthy(); expect(within(dialog).getByText('1024 x 768 px')).toBeTruthy(); - expect(within(dialog).getByText('VectorEngine')).toBeTruthy(); - expect(within(dialog).getByText('task-123')).toBeTruthy(); + expect(within(dialog).queryByText('Provider')).toBeNull(); + expect(within(dialog).queryByText(/VectorEngine/u)).toBeNull(); + expect(within(dialog).queryByText(/task-/u)).toBeNull(); + expect(within(dialog).getByText('123')).toBeTruthy(); expect(within(dialog).getByText('generated/object.png')).toBeTruthy(); }); @@ -80,8 +83,9 @@ describe('ImageCanvasMetadataModalView', () => { />, ); - const dialog = screen.getByRole('dialog', { name: '上传素材图片信息' }); + const dialog = screen.getByRole('dialog', { name: '图片信息' }); + expect(within(dialog).queryByText('上传素材')).toBeNull(); expect(within(dialog).getByText('上传图片')).toBeTruthy(); expect(within(dialog).getAllByText('-').length).toBeGreaterThanOrEqual(3); expect(within(dialog).getByText('asset-object-1')).toBeTruthy(); diff --git a/src/components/image-editor/ImageCanvasMetadataModalView.tsx b/src/components/image-editor/ImageCanvasMetadataModalView.tsx index 6751cd6a..628ea40b 100644 --- a/src/components/image-editor/ImageCanvasMetadataModalView.tsx +++ b/src/components/image-editor/ImageCanvasMetadataModalView.tsx @@ -7,6 +7,11 @@ export type ImageCanvasMetadataModalViewProps = { onClose: () => void; }; +function formatTaskIdForDisplay(taskId?: string | null) { + const numericParts = taskId?.match(/\d+/gu); + return numericParts?.length ? numericParts[numericParts.length - 1] : '-'; +} + export function ImageCanvasMetadataModalView({ layer, onClose, @@ -14,7 +19,7 @@ export function ImageCanvasMetadataModalView({ return ( {layer.originalWidth} x {layer.originalHeight} px -
Provider
-
{layer.provider ?? '-'}
Task
-
{layer.taskId ?? '-'}
+
{formatTaskIdForDisplay(layer.taskId)}
Object
{layer.objectKey ?? layer.assetObjectId ?? '-'}