背景
本 issue 为 #820 的遗留工作。#820 的 6 大模块中,第 4️⃣ 模块(ObjectGrid 单元格渲染器)是目前唯一完全未完成的部分,其余模块已在 PR #821、#805、#817、#799 等中基本落地。
现状问题
inferColumnType() 自动推断类型后的渲染缺少视觉标识——select/status 类字段显示纯文本
- 日期字段直接输出 ISO 字符串(如
2026-02-26T03:09:07.458Z),用户无法快速识别时间含义
- Boolean 字段无视觉渲染,显示
true/false 原始值
涉及文件
packages/plugin-grid/src/ObjectGrid.tsx — inferColumnType() 和列生成逻辑
packages/fields/src/formatters.ts — formatDate() 等格式化函数
packages/fields/src/widgets/ — 字段级渲染组件
packages/fields/src/cell-renderers.ts — getCellRenderer() 函数
具体改进
1. select/status 类型 Badge 渲染
2. 日期类型格式化
3. Boolean 类型视觉渲染
4. 表头样式统一(已在 #821 中部分完成,需验证)
测试要求
验收标准
关联
背景
本 issue 为 #820 的遗留工作。#820 的 6 大模块中,第 4️⃣ 模块(ObjectGrid 单元格渲染器)是目前唯一完全未完成的部分,其余模块已在 PR #821、#805、#817、#799 等中基本落地。
现状问题
inferColumnType()自动推断类型后的渲染缺少视觉标识——select/status 类字段显示纯文本2026-02-26T03:09:07.458Z),用户无法快速识别时间含义true/false原始值涉及文件
packages/plugin-grid/src/ObjectGrid.tsx—inferColumnType()和列生成逻辑packages/fields/src/formatters.ts—formatDate()等格式化函数packages/fields/src/widgets/— 字段级渲染组件packages/fields/src/cell-renderers.ts—getCellRenderer()函数具体改进
1. select/status 类型 Badge 渲染
field.type为select或status时,getCellRenderer()返回<Badge>组件field.options映射颜色(如{ value: 'In Progress', color: 'blue' }→<Badge variant="blue">)2. 日期类型格式化
formatDate()在packages/fields/src/formatters.ts中增加相对时间模式:"Today""Yesterday""3 days ago""Overdue 2d""Feb 26, 2026"人类可读格式inferColumnType()推断为 date 类型时默认启用人类可读格式3. Boolean 类型视觉渲染
<Checkbox disabled checked={value} />或✓/—图标is_completed等布尔字段的语义化渲染(绿色圆形指示器)—4. 表头样式统一(已在 #821 中部分完成,需验证)
ObjectGrid表头行使用text-[11px] font-semibold uppercase tracking-wider text-muted-foreground/70 bg-muted/5测试要求
getCellRenderer()的 select/date/boolean 类型新增单元测试formatDate()相对时间模式新增测试用例(含 edge case:null、未来日期、逾期日期)pnpm test全量通过验收标准
关联