来源:#869(PR 待提)实施中在 dist/objectstack.json 做旧串残留扫描时的顺带发现。#851/PR #870 修的是 Automation 页表行 + flow 的 description,#869 修的是节点 label + 文件头 JSDoc;本条是同族说法在第三个载体上的残留,两次派单边界都没覆盖到。
基线 origin/main = 6cd53d2(已含 PR #870 与 #874)。
事实
src/docs/crm_sales.md 两处声称经理会收到通知,两条 flow 都只发负责人一人:
1. 第 73 行 —— 停滞商机提醒
A daily 07:30 sweep finds any open opportunity that has sat in its current
stage for more than 14 days. The owner and their manager are notified, and a
high-priority follow-up task is created.
src/flows/opportunity-stagnation.flow.ts:89-91:
id: 'notify_owner', type: 'notify', label: 'Nudge Owner',
config: { recipients: ['{currentOpp.owner_id}'], … }
只有负责人一个收件人。该 flow 里不存在任何 manager / position / team 收件目标。
2. 第 78 行 —— 大额赢单提醒
When a deal over $100,000 is marked Closed Won, the owner and manager are
notified automatically.
这正是 #851 已从 Automation 页表行和 opportunity_won_alert 的 description 里删掉的那句话。src/flows/opportunity-won-alert.flow.ts 的 notify 节点 recipients: ['{record.owner_id}'],节点上方注释写明了原因:{record.owner_id.manager} 无法在原始触发快照上穿透 lookup,会插值成字面量 undefined。
注意措辞差一个字:73 行是 owner and their manager,78 行是 owner and manager。#851 当时按 and their manager 检索,所以 78 行漏网。
为什么不是纯注释问题
src/docs/*.md 是 ADR-0046 的 package docs,objectstack build 会 → Collecting package docs (ADR-0046) 把它整篇收进产物。已实测确认:在 dist/objectstack.json 里能直接搜到第 73 行的原文。所以这两句和 #851 修的表行是同一类读者伤害,随 app 一起发布。
为什么现有守卫没抓到
test/docs-drift.test.ts 确实盯着 crm_sales.md,但它的 RULES[] 只抽取数值与 cron(审批阈值、赢单阈值、停滞天数、报价有效期、各 sweep 的 schedule),不涉及收件人。所以金额 $100,000 是被钉住的、准确的,紧挨着它的「and manager」不在任何规则的检查面内。
修复面(未做)
Refs #851 #869 #595
来源:#869(PR 待提)实施中在
dist/objectstack.json做旧串残留扫描时的顺带发现。#851/PR #870 修的是 Automation 页表行 + flow 的description,#869 修的是节点label+ 文件头 JSDoc;本条是同族说法在第三个载体上的残留,两次派单边界都没覆盖到。基线
origin/main= 6cd53d2(已含 PR #870 与 #874)。事实
src/docs/crm_sales.md两处声称经理会收到通知,两条 flow 都只发负责人一人:1. 第 73 行 —— 停滞商机提醒
src/flows/opportunity-stagnation.flow.ts:89-91:只有负责人一个收件人。该 flow 里不存在任何 manager / position / team 收件目标。
2. 第 78 行 —— 大额赢单提醒
这正是 #851 已从 Automation 页表行和
opportunity_won_alert的description里删掉的那句话。src/flows/opportunity-won-alert.flow.ts的 notify 节点recipients: ['{record.owner_id}'],节点上方注释写明了原因:{record.owner_id.manager}无法在原始触发快照上穿透 lookup,会插值成字面量undefined。为什么不是纯注释问题
src/docs/*.md是 ADR-0046 的 package docs,objectstack build会→ Collecting package docs (ADR-0046)把它整篇收进产物。已实测确认:在dist/objectstack.json里能直接搜到第 73 行的原文。所以这两句和 #851 修的表行是同一类读者伤害,随 app 一起发布。为什么现有守卫没抓到
test/docs-drift.test.ts确实盯着crm_sales.md,但它的RULES[]只抽取数值与 cron(审批阈值、赢单阈值、停滞天数、报价有效期、各 sweep 的 schedule),不涉及收件人。所以金额$100,000是被钉住的、准确的,紧挨着它的「and manager」不在任何规则的检查面内。修复面(未做)
the owner alone, not their manager一致,不再造新说法。docs-drift.test.ts加一条收件人规则(从 flow 源码抽recipients: [...],断言 doc 不出现未出现在其中的角色词)—— 这是能力面,若认为值得应单独立单,不必混进文案修复。Refs #851 #869 #595