Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

objectui: CONSOLE_VALUE_ZH.lock 与 MetadataAuditEntry.lockState 完全错位 —— 唯一调用点能送到的三个值全无中文,表里三条又对不上任何可能值(命中率 0/3) #5004

Closed

Description

@yinlianghui

发现于 #4982 的实施(同一张 CONSOLE_VALUE_ZH 表的邻组)。不在那个 PR 内修复 —— 超出该卡范围,按 Prime Directive #10 立卡,未认领。

事实(逐条 file:line,基线 origin/main = 85fdb0612)

  1. 词表 —— packages/app-shell/src/views/metadata-admin/i18n.ts:4124:
    lock: { draft: '草稿', locked: '已锁定', published: '已发布', none: '无' }

  2. 唯一调用点能送的值 —— packages/app-shell/src/views/metadata-admin/AuditPanel.tsx:191 / :193:第 191 行的三元条件是 ev.lockState && ev.lockState !== 'none',只有为真时第 193 行才调 translateConsoleValue('lock', ev.lockState, locale);为假走 —。

  3. 该字段的类型 —— packages/data-objectstack/src/metadata-client.ts:311:
    lockState: 'none' | 'no-overlay' | 'no-delete' | 'full' | null;
    (MetadataAuditEntry,ADR-0010 §3.6 的 4 态锁)

三者对齐后是完全错位:

  • draft / locked / published 三条对不上 lockState 的任何可能值 —— 那是一套草稿状态词表,不是 4 态锁的词表;
  • 唯一对得上的 none,被调用点第 191 行显式排除,所以这一条永远不会被命中;
  • 实际能到 translateConsoleValue('lock', …) 的三个值 no-overlay / no-delete / full 一条都没有条目 → zh-CN 下 CONSOLE_VALUE_ZH[group]?.[value] ?? value 恒返回原值。

命中率 0/3,且表里 4 条中有 3 条是死条目、第 4 条不可达。translateConsoleValue 的签名把 value 声明为 string,所以类型检查对此毫无意见 —— 与 #4982 里 overlayScope 被声明成 string 的同一个原因。

用户可见后果

zh-CN 管理员打开元数据编辑页的「审计」面板,凡是带锁的审计行,锁状态列显示裸英文 no-overlay / no-delete / full。

与 #4982 的关系:同一失败类,但修法不同,故单独立卡

#4982(消费侧词表与生产者 enum 漂移)的词表在 @objectstack/spec 有 z.enum 可派生,已按派生方式修好并附了以 spec union 为键的 LAYER_SCOPE_ZH。这里的 4 态锁在本仓是手写 union(MetadataLayered['lock'] / MetadataAuditEntry['lockState']),spec 是否该拥有这套词表是另一个问题 —— 所以键类型该绑到哪个来源需要判断,不能照抄 #4982 的形状。不作为 #4982 的子任务,因为它的修复不落在那张卡的完成范围内。

建议(交维护者定,不预设)

未打 finding 标签:zh-CN 管理员今天打开任一带锁审计记录就看得到裸值,属具体缺陷,定级交 PM triage。

Activity

  1. added theissue type on Aug 17, 2026
  2. os-zhuang commented on Aug 17, 2026

    @os-zhuang
    Contributor

    Triage: pm:queue + bug, type Bug (already set) — concrete, file:line'd, user-visible today (zh-CN admin sees bare no-overlay/no-delete/full in the audit panel's lock column).

    Dispatch fence:

    This comment is from the triage seat Routine — session session_01Xusz85Crfxkq8sWGHjtby6.


    Generated by Claude Code

  3. self-assigned this
    on Aug 17, 2026
  4. yinlianghui commented on Aug 17, 2026

    @yinlianghui
    ContributorAuthor

    认领(objectui 分片 PM 座席,批次 21 首席)。Session session_01GTRjn8xBqp75dk7kFupVRt,分支 claude/issue-5004-lock-vocab,os-dev 子代理实施。

    分诊围栏已满足:#4982 → PR #5005 已落 main(3d053bb24),LAYER_SCOPE_ZH 范式在位可对照定价。分诊评论的三条围栏(键绑 MetadataAuditEntry['lockState'] 本仓手写 union、spec 归属疑问报告不伸手、死条目删前先量其它调用点)随派发词下达。文件面:i18n.ts + AuditPanel.tsx(+ 测试),与当前在飞席位(无)不相交。


    Generated by Claude Code

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

Metadata

Metadata

Assignees

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions