下游应用(hotcrm,@objectstack/* 17.0.0-rc.3)在 hotcrm#715 实施过程中发现,记录于此。同包内两条规则互相矛盾:
现象
object/missing-name-field 的谓词(node_modules/@objectstack/lint/dist/index.js,lintDataModel):
hasNameField = !!obj.primaryField || !!obj.titleFormat || fields.some(name-like)
- 从不读
obj.nameField;
- 却仍然采信
titleFormat——而同一个包里的 validate-record-title.ts 明确报告 titleFormat 已被 ADR-0079 退役,并指示迁移到 nameField。
净效果:一个照平台自己的迁移建议声明了 nameField 的应用,反而会得到一条新的 "records will display as raw IDs" suggestion。
下游实测面(hotcrm main)
6 处命中,4 处为误报——这四个对象都显式声明了 nameField:
| 对象 |
nameField |
| crm_campaign_member |
member_number |
| crm_event_attendee |
attendee_number |
| crm_contract |
contract_number |
| crm_forecast |
display_title |
只有两个 line-item 对象(crm_opportunity_line_item / crm_quote_line_item)是真命中(确实没有 name 面)。
建议
谓词补上 !!obj.nameField,并考虑摘掉对已退役 titleFormat 的采信(或至少降为迁移期兼容并注明)。
查重:已在 objectstack 与 hotcrm 两仓按 missing-name-field / nameField / titleFormat / ADR-0079 检索 open issues,无既有单。
Refs: objectstack-ai/hotcrm#715(发现现场,PR objectstack-ai/hotcrm#1007)
下游应用(hotcrm,
@objectstack/* 17.0.0-rc.3)在 hotcrm#715 实施过程中发现,记录于此。同包内两条规则互相矛盾:现象
object/missing-name-field的谓词(node_modules/@objectstack/lint/dist/index.js,lintDataModel):obj.nameField;titleFormat——而同一个包里的validate-record-title.ts明确报告titleFormat已被 ADR-0079 退役,并指示迁移到nameField。净效果:一个照平台自己的迁移建议声明了
nameField的应用,反而会得到一条新的 "records will display as raw IDs" suggestion。下游实测面(hotcrm main)
6 处命中,4 处为误报——这四个对象都显式声明了
nameField:只有两个 line-item 对象(crm_opportunity_line_item / crm_quote_line_item)是真命中(确实没有 name 面)。
建议
谓词补上
!!obj.nameField,并考虑摘掉对已退役titleFormat的采信(或至少降为迁移期兼容并注明)。查重:已在 objectstack 与 hotcrm 两仓按 missing-name-field / nameField / titleFormat / ADR-0079 检索 open issues,无既有单。
Refs: objectstack-ai/hotcrm#715(发现现场,PR objectstack-ai/hotcrm#1007)