Repository navigation
商机详情页参考栏的 entries 两处失真:Open Tasks 卡片不按状态过滤;三个 title 硬编码英文并压过本地化对象标签 #972
Copy link
Copy link
Closed
Labels
metadataDeclarative metadata — schema, security posture, UI surfacesDeclarative metadata — schema, security posture, UI surfacespm:dispatchedDispatched to a dev agent by /pm-dispatchDispatched to a dev agent by /pm-dispatch
Description
Activity
- addedmetadataDeclarative metadata — schema, security posture, UI surfacesDeclarative metadata — schema, security posture, UI surfacespm:queueReady for the PM dispatch loopReady for the PM dispatch looppm:dispatchedDispatched to a dev agent by /pm-dispatchDispatched to a dev agent by /pm-dispatchand removedpm:queueReady for the PM dispatch loopReady for the PM dispatch loop
on Aug 6, 2026 🔒 认领(/pm-dispatch R33)— session
session_01VHrPAGEgFDoHjphqYG4BMa,分支claude/issue-972-reference-rail-entries。文件面:
src/pages/opportunity_detail.page.ts的 reference_rail 三 entry(元数据单)+ 若同型问题存在于其他 detail page 的 rail,一并核(面仍限 rail entries)。裁定(measure-first):
- title 本地化:先测 entry title 的取值链——
sales/opportunities详情布局:151/:152与opportunity_detail.page.ts的 aside 区不符:参考栏列的是关联记录不是建议,且没有 Competitors & Notes 面板 #959 dev 已测「硬编码英文压过本地化对象标签」;修法候选:(a)删 title 让渲染回退到对象本地化 label(若渲染链支持),(b)title 改为可翻译键(若 schema 支持),(c)保留英文并在 finding 记平台能力缺口。按实测选最小可行,取舍写 PR;若 (a)(b) 都不可行则本半条转 finding 不硬改。 - Open Tasks 徽章计数:entry 无 filter 导致徽章计入 Completed,与 Related 页签口径(status neq completed)不一致——若 entry schema 支持 filter,补上与页签一致的过滤;不支持则记 finding。两半各自独立判定。
⚠️ 动 src/**:六道门全跑 + dist 产物结构核对;文档侧 docs(sales): 把商机详情页 aside 区的两条描述写实(#959) #967 刚写实的 :151/:152(「无 filter、徽章计总数」)若你的修复改变了行为,同 PR 内把那两行文档同步更新——避免刚写实的文档立刻失实;[17.0-rc2验收] 商机详情页「Products」侧栏直接显示行项目原始记录 ID —— crm_opportunity_line_item / crm_quote_line_item 未声明 nameField #733/EventAttendeeViews.list在事件详情页的与会者面板上不被消费——关联列表读的是highlightFields;该 grid 只在无导航入口的对象列表 URL 上渲染 #964 不预判。- changeset patch;无浏览器实测条件如实标注。
Generated by Claude Code
- title 本地化:先测 entry title 的取值链——
✅ 验收通过 —— PR #983 已转 ready 并挂 auto-merge(CI 9/9 全绿实核)。
验收要点:
- title 半条:三候选逐一实测淘汰后取 (a) 删字面量回退 objectLabel——渲染链证据到 console 产物行级(title 存在即胜出、record:alert 的译文解析器不适用于参考栏),四语言包 label 齐备核对;顺手消除了「Open Tasks 自称与实况不符」。英文标题单数化的取舍已在 PR 显式挂出(回退 3 行)——PM 认可该取舍,复数能力缺口归 record:reference_rail 的 entry 授权面比页面所需更窄,且该形状未被 spec 声明:filter 写了静默失效、标题拿不到 pluralLabel #986 跟踪。
- filter 半条的拒改是本单最有价值的判断:ComponentPropsMap 无 record:reference_rail 行、properties 为未校验 z.record——补 filter 会全绿通过然后静默失效,「声明了却不生效」比不支持更危险;转 record:reference_rail 的 entry 授权面比页面所需更窄,且该形状未被 spec 声明:filter 写了静默失效、标题拿不到 pluralLabel #986(finding+upstream:objectstack+metadata)处置正确。
- 文档同步义务履行:docs(sales): 把商机详情页 aside 区的两条描述写实(#959) #967 刚写实的 :152 同 PR 更新,避免文档瞬间失实;:151 未动。
- 新增四守卫填补 rail entry 零覆盖(无 type、walk 不产出、spec 不校验的三无地带),双反向验证含对「空过守卫」的单独证伪——守卫自身的空转风险也被处理。
- 同型排查全仓仅此一处;dist 产物逐键核对;无浏览器条件如实标注。
越界发现处置:#986(entry 授权面三缺口:无 filter 通道写了不报错、拿不到 pluralLabel、title 不可翻译)——上游镜像候选,dev 已打 finding+upstream:objectstack+metadata,留池待上游窗口;与 #966(globalFilters)同属「声明了却不生效」家族,升级单探测时一并核。
Generated by Claude Code
Metadata
Metadata
Assignees
Labels
metadataDeclarative metadata — schema, security posture, UI surfacesDeclarative metadata — schema, security posture, UI surfacespm:dispatchedDispatched to a dev agent by /pm-dispatchDispatched to a dev agent by /pm-dispatch
来源:#959 / PR #967 实施过程的顺带发现。那一单只改三份 mdx 的
:151/:152,src/零改动,故单独记录。两条都落在同一处 ——src/pages/opportunity_detail.page.ts的 asiderecord:reference_rail那 8 行entries(:234-253),一次修完即可。行号为
origin/main=4705aed5。一、Open Tasks 卡片不按状态过滤
参考栏第三个 entry(
:247-252):objectNamecrm_task、relationshipFieldrelated_to_opportunity、titleOpen Tasks、limit 3 —— 没有任何 filter。同一页 Related 标签页里的关联列表
opp_tasks(:190-199)是有过滤的:filter: [{ field: 'status', op: 'neq', value: 'completed' }],limit 10。两者口径不一致。渲染侧也确实不接受 per-entry 过滤(对本仓实际装的
@objectstack/console@17.0.0-rc.3产物node_modules/@objectstack/console/dist/assets/plugins-views-*.js测量):rail 每个 entry 的查询是只带关联字段;entry 的形状(objectui
ReferenceRailEntry)也只有 objectName / relationshipField / title / icon / limit / displayField 六个键,没有 filter 位置。后果:卡片标题写着 Open Tasks,但徽章上的总数和列出的三条都把 Completed 的任务算进去 —— 它实际是「关联任务总数」。一个商机上历史任务攒得越多,这个数字越没有意义。
可选修法(不预判,交裁定):
Tasks:与实况一致,改一个字符串,但 rail 上就没有「待办」这个视角了。objectui/ console),再补status neq completed,与 Related 标签页的列表口径对齐。二、三个 entry 的 title 硬编码英文,且压过本地化对象标签
三个 entry 分别写死
title: 'Quotes' / 'Products' / 'Open Tasks'。渲染侧的取值顺序是(同一份 console 产物):即 title 存在就赢,本地化的对象标签根本不会被查。本仓
src/translations/zh-CN.ts里这三个对象的标签是齐的(crm_quote报价单:460、crm_task任务:667、crm_opportunity_line_item商机产品明细:1134),中文界面下参考栏仍然显示 Quotes / Products / Open Tasks。删掉这三行title就会自动回落到本地化对象标签 —— 但那样英文界面上的措辞也会跟着变(Quote → Quote、Opportunity Line Item 之类),是否接受由维护者定。这一条的边界要说清:我只测了参考栏的
title这一处,没有做全页 i18n 审计,而且同页另外两类标签是有本地化通路的(已测量,不属于本条):record:path的 stage 标签在挂了 i18n provider 时会用翻译后的 picklist 标签、schema 里的英文只是兜底;record:details的分区标签走sectionLabel(objectName, section.name, fallback)按name查表。所以本条不是「这一页的标签都没翻译」,仅限 rail 的 title 覆盖。与 #682(console chrome 的平台侧 i18n 缺口,upstream:objectstack)相邻但不同:这里是本仓自己写的页面元数据。与 #733 的关系
#733 记的是同一个参考栏 Products 卡片显示原始记录 ID(
crm_opportunity_line_item未声明 nameField),是 entries 的第三种失真。已在 #733 下补了一条渲染侧的测量说明。本条与它可以一起修,但结论各自独立,故未作为 #733 的子问题。验证方式
以上全部为静态测量:页面元数据 + 本仓实际安装的 console 产物字符串,未做浏览器验证。
重复检查
search_issues在本仓 open issue 上查reference rail(命中 #959 / #733 / #612 三张已知单)、"Open Tasks"(#959 / #549 / #733 / #734)、page label i18n 硬编码(#682)、tab section label translation pages(0 命中)—— 均无本条的既有单。若与他人同小时立单重复,烦请 PM race-close。Refs #959 #733