Skip to content

[objectui] 记录表单渲染器需按 userActions.edit + 逐字段 readonly 渲染 managedBy 对象(ADR-0092 D4 配套) #2833

Description

@os-zhuang

背景

ADR-0092 D4 的框架侧(#2817 / PR #2832)已给 sys_useruserActions: { edit: true } 并对非档案字段做逐字段 readonly 治理。server 元数据正确(/api/v1/meta/object/sys_user 返回 userActions.edit=true、仅 name/imagereadonly=false)。

问题(浏览器验证发现)

当前 vendored console(objectui @object-ui/console 14.3.0,framework 里 pin SHA 6fa8e6a)的记录表单渲染器protection.lock:'full' / managedBy:'better-auth' 对象的所有表单字段渲染为 readonly disabled —— 包括本应可编辑的 name/image

现象(Setup → Users → 行菜单 Edit):

  • ✅ 行菜单出现 "Edit"(resolveCrudAffordances 正确解析了 userActions.edit
  • ✅ Edit 表单只暴露 Name + Profile Image 两个字段(只读字段正确排除)
  • ❌ 但这两个字段的 <input>readonly disabled 属性,无法输入 → affordance "可见但不可用"

DOM 证据:<input readonly disabled name="name" group="Identity" value="Dev Admin" schema="[object Object]">。字段 widget 的只读判定为 field.readonly || <form-level lock>;namefield.readonly=false,故是表单级/对象级的一刀切锁定(RecordFormPage 仅用 managedBy 渲染 badge,禁用逻辑在共享 widget 层)。

需求

记录表单渲染器应:当对象 userActions.edit === true 时,按逐字段 readonly 渲染,而非按 protection.lock / managedBy 对整个表单一刀切禁用。 protection.lock 是元数据保护(能否改 schema,ADR-0010),不应等同于记录数据只读。

联动

相关

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions