现象
商机详情页(opportunity_detail page)右侧 record:reference_rail 的 Products 卡片,列表项直接渲染行项目的原始记录 ID:
Products 3 View All
0ir2KtfW9CrJeEhs
AlnwKKByYgjqJSB0
murd79YEmt8re75Q
对业务用户完全不可读。同卡片的 Quotes / Open Tasks 条目正常显示名称。
复现
pnpm exec objectstack dev … --seed-admin,admin 登录 console
- 打开任意带行项目的商机,如 seeded「Initech Phase 1」:
/_console/apps/app.objectstack.hotcrm/crm_opportunity/record/<id>
- 右侧 Products 卡片 → 三行全是 ID(截图见验收记录
20-crm_opportunity-detail.png)
API 对账:GET /api/v1/data/crm_opportunity_line_item?filters=[["crm_opportunity","=","<id>"]] 返回的行 display_title: null、无 name 字段 —— 行项目对象没有任何可显示名。
期望 vs 实际
- 期望:侧栏列表显示可读的行项目标识(如产品名或 description)
- 实际:原始记录 ID
落点分析
两层原因:
- HotCRM 元数据(主因):
src/objects/opportunity_line_item.object.ts 与 quote_line_item.object.ts 都未声明 nameField(编译后 meta nameField: null),record:reference_rail(src/pages/opportunity_detail.page.ts:236 附近的 entries 配置)拿不到显示名只能回落到 id。Related 标签页里的 related_list(声明了 columns: ['crm_product', …])不受影响,渲染正常 —— 佐证问题出在"没有 nameField 的对象在无列配置的荟萃卡片里如何取显示名"。
- 平台侧(次要):console 的 reference_rail 在对象无 nameField 时直接回落原始 id,体验上可以有更好的兜底(如第一个 text 字段);此处不单独立平台单,修 HotCRM 侧 nameField 即可消除现象。
环境
hotcrm@0899b4f + @objectstack 17.0.0-rc.2
现象
商机详情页(
opportunity_detailpage)右侧record:reference_rail的 Products 卡片,列表项直接渲染行项目的原始记录 ID:对业务用户完全不可读。同卡片的 Quotes / Open Tasks 条目正常显示名称。
复现
pnpm exec objectstack dev … --seed-admin,admin 登录 console/_console/apps/app.objectstack.hotcrm/crm_opportunity/record/<id>20-crm_opportunity-detail.png)API 对账:
GET /api/v1/data/crm_opportunity_line_item?filters=[["crm_opportunity","=","<id>"]]返回的行display_title: null、无name字段 —— 行项目对象没有任何可显示名。期望 vs 实际
落点分析
两层原因:
src/objects/opportunity_line_item.object.ts与quote_line_item.object.ts都未声明nameField(编译后 metanameField: null),record:reference_rail(src/pages/opportunity_detail.page.ts:236附近的 entries 配置)拿不到显示名只能回落到 id。Related 标签页里的 related_list(声明了columns: ['crm_product', …])不受影响,渲染正常 —— 佐证问题出在"没有 nameField 的对象在无列配置的荟萃卡片里如何取显示名"。环境
hotcrm@0899b4f + @objectstack 17.0.0-rc.2