Skip to content

Studio 界面属性面板仍是 metadata-admin 的开发者表单:英文 Machine name tooltip、原始 key 表头、有默认值却空白的数字框、一批未翻译串 #8218

Description

@hotlong

关联:cloud#1955(AI build 第一版上线)· 不阻塞发版,但第一版每个用户都会看到这块面板

现象

Studio「界面」页(/_console/studio/<app>/interfaces?surface=dashboard:<name>)右侧的属性面板,
复用的是 views/metadata-admin/SchemaForm + widgets.tsx。那套表单是给管理员改元数据做的,
现在摆在了 AI build 第一版的 maker 面前——开发者气味整片渗出来。

在一个 AI 搭出来的「客户管理仪表盘」上实测到四类,全部在当前 pin
81a2eb1fbe37)的源码里复核过:

1. 机器名 chip 的 tooltip 是硬编码英文

packages/app-shell/src/views/metadata-admin/SchemaForm.tsx:1408

<code className="ml-2 text-[10px] font-mono text-muted-foreground/70" title="Machine name">
  {name}
</code>

全中文界面里,columns / gap / refreshInterval / header 四个 chip 的
tooltip 都是没过 t() 的英文。更根本的问题是:maker 需不需要看到机器名
在 metadata-admin 里需要,在 AI build 的界面面板里大概率不需要。

2. 数组表格的表头直接漏出原始 key

「页眉 → 操作按钮」的表头是 label / actionUrl / actionType / icon

packages/app-shell/src/views/metadata-admin/widgets.tsx:870

{(itemProps[c]?.title as string) ?? c}

渲染器的兜底本身是对的——真正的缺口在上游:框架的
packages/platform-objects/src/apps/translations/zh-CN.metadata-forms.generated.ts
里,dashboard.fields 只有 header 一条(「页眉」),
header.actions[].label/actionUrl/actionType/icon 在译文目录里根本没有条目——
嵌套的 item 属性没有本地化通道。

⚠️ 这一条的落点很可能在 objectstack(生成器 + 目录),不在本仓。
先判断落点再动手:如果结论是上游,开一张 objectstack 卡把它带过去,
本卡只保留渲染侧该做的部分(比如兜底时至少走一次 t())。
判断的依据请写在卡上——我更想要你的判断,而不是照我说的做。

3. 有默认值的数字框显示为空白

列数 / 间距 / 自动刷新 三个框的 value 实测全是 "",而帮助文字写着
「栅格列数(默认 12)」「0 表示不自动刷新」——生效值只存在于说明文字里
框里什么都不显示。

widgets.tsx:1008 的 number 分支:

<Input type="number" value={value == null ? '' : String(value)}  />

既不拿 schema.default 当 placeholder,也不吃 schema 的 min / max / step
(所以能填出负数列)。这不是仪表盘特有的,任何有 default 的 schema 数字字段都这样

建议:schema.default 灰显成 placeholder(空 = 用默认,而不是空 = 未知),
并把 minimum / maximum / multipleOf 透到 input 上。
「自动刷新」再往前一步会更好——秒数输入框对这个语义过度暴露,
下拉(关闭 / 30 秒 / 1 分钟 / 5 分钟)更贴近用户要表达的东西;
如果你认为这一步超出本卡范围,说出来,别硬塞。

4. 同一面板里还有一批没翻译的串

widgets.tsx 里至少:"Tab label"(1906)、"Select…"(2525)、
"+ Add filter field…"(1877)、"+ Add action button…" / "All actions added" /
"Bind a source object to pick actions"(2043)、"#RRGGBB"(2330)。
把这一片扫干净,别只修我点名的这几行——widgets.tsx + SchemaForm.tsx
两个文件为范围做一次完整清扫
,扫完报一下总数。

为什么打成一张卡

四条是同一个病因:metadata-admin 的开发者表单被直接摆到了 maker 面前
分成四张卡会让每一条都像小修补,合在一起才看得出该做的是一次「去开发者化」。

验收

在本地 prod-like 栈上用 AI 搭一个带仪表盘的应用,打开界面属性面板:

  • 界面里不出现未翻译的英文串(含 tooltip 与表头);
  • 有 default 的数字字段,空框里灰显它的默认值;
  • 数组表格的列名是人话(或已按上游卡带走,并在本卡写明结论)。
    截图附卡。

证据限度

现象来自一台本地栈最后一帧的 DOM,该栈已退出。
上面每一条的代码位置都是在当前 pin 81a2eb1fbe37 的源码里重新读过的
不依赖那一帧;只有下面这组版面数字取自那一帧、需要在活栈上复量:
1512 视口下 main 596 → 预览框 528 → 卡片 376 → 图 326。

Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions