来源:#899(bare `workflows` 残留族)实现时全仓复扫的顺带发现。基线 `origin/main` = `7df29789`(平台 17.0.0-rc.3)。 **与 #899 / #850 的边界**:#850 / PR #894 的 grep 口径是「工作流规则 / workflow rule」;#899 的口径是不带 rule 的 bare `workflows`,但 #899 正文把修复面**逐页枚举**成七页族(`reference/faq`、`reference/performance-and-limits`、`sales/quotes`、`administration/index`、`administration/sandbox-and-releases`、`reference/security-and-compliance`、`customization/index`),下面 4 处不在那份枚举里,因此落在 #899 的完成范围之外——是枚举漏了,不是被判为日常语义。#899 的 PR 已把它自己那七页清干净。 ## 事实 ### 1. `content/docs/whats-new.mdx:89` × 3 —— 把一条真实存在的流程叫成 workflow(最实的一处) > *"**Contract renewal reminder** workflow now triggers based on `renewal_notice_days` on each contract."* zh 同款:`whats-new.zh-Hans.mdx:71`「**合同续约提醒**工作流现在根据……」、`whats-new.zh-Hant.mdx:71`「**合約續約提醒**工作流程現在根據……」。 这条自动化是**存在的**,但它是流程不是 workflow:`src/flows/contract-renewal.flow.ts:25` `label: 'Contract Renewal Reminder'`,start 节点 `schedule: '0 8 * * *'`,它在 `administration/automation` 的内置流程表里有自己的一行。所以这里不是「讲了个不存在的东西」,而是**给一个存在的元数据项挂了不存在的类型名**——读者拿着 workflow 这个词去 Setup 里找,找到的是 Flows。这不是改历史:这一项从落地那天起就是流程,纠的是叫法。 ### 2. `content/docs/administration/state-machines.mdx:133` × 3 —— PR #894 扫过这个文件,这行留下来了 > *"- [Automation](/docs/administration/automation) — for transition-triggered workflows."* zh 同款:`state-machines.zh-Hans.mdx:133`「用于由转换触发的工作流」、`state-machines.zh-Hant.mdx:133`「用於由轉換觸發的工作流」。 `git log content/docs/administration/state-machines.mdx` 的最近一次改动就是 PR #894(commit `e10b6735`),它按 #850 的口径改了本页别处的措辞,但这行不含「规则」二字,所以没进那次 grep。指向 Automation 页的 Related 链接说那页讲的是「由转换触发的 workflows」,而那页现在只讲流程与对象钩子。 ⚠️ **文件冲突提醒**:`administration/state-machines` 上另有 #896 在飞(讲的是 case / contract / quote 的状态机名单,与本条不是同一处缺陷),排期时注意先后。 ### 3. `content/docs/service/cases.mdx:80` × 3 —— 小节标题 `## Workflow automation` zh 同款:`cases.zh-Hans.mdx:80`「## 工作流自动化」、`cases.zh-Hant.mdx:80`「## 工作流自動化」。 PR #894 已经把这个标题**底下的两条**改写成实况(点名 Case Escalation 流程的 `notify` 节点、`case_status_side_effects` 钩子),标题本身没动——现在四条正文分别讲流程和钩子,头顶顶着一个叫 workflow 的类目名。改标题要三语同步。 ### 4. `content/docs/guides/integrations.mdx:130` × 3 —— 程度最弱的一处 > *"…referenced rather than pasted into workflow or hook code…"* 把 workflow 与 hook 并列成两种代码面,真实的一对是 flow / hook。这句在一段「设计意图(尚未实现)」的描述里,读者据此不会去点错地方,所以程度弱于上面三处——列在这里让接单人一起判,不建议单独开单。 ## 影响 第 1 处最实:读者拿到一个具体的自动化名字加一个不存在的类型名,去 Setup 里按 workflow 找。第 2、3 处是词汇面,与 #899 C 档同类——让读者以为流程之外还有一种叫 workflow 的东西。不是观察类:#899 已经把同一失效模式判为实缺陷并修了它枚举的那七页,这 4 处只是同一族里没被枚举到的部分。 ## 修复面(未做) 三语同步,按语境改写而非全局替换:第 1 处改成「**Contract Renewal Reminder** flow」并保持与 `administration/automation` 内置流程表的标签逐字一致;第 2 处改成「由转换触发的流程」;第 3 处标题改为流程 / 对象钩子的说法(注意本页已有 `## Case escalation` 等相邻标题,别撞名);第 4 处改成 flow / hook。 日常英语 / 汉语义命中(`administration/setup:153`、`administration/sandbox-and-releases` 的「变更工作流」、`customization/theming-and-i18n:43`、`customization/testing-and-ci` 与 `marketplace/publishing-your-first-app` 的 GitHub Actions 语境、`service/index:66`、`service/knowledge-base:52`、`getting-started/introduction:49`)不在本条范围。PR #894 写下的具名退休说明(`reference/glossary:70/:198`、`reference/performance-and-limits:20`、`administration/automation` 页)也不得回退。 Refs #899 #850 #854 #894 #896 _Generated by [Claude Code](https://claude.ai/code)_
Activity
yinlianghui commentedon Aug 6, 2026
🔒 认领(/pm-dispatch R29,四单并单 #912+#920+#925+#926,本单为主单)— session
session_01VHrPAGEgFDoHjphqYG4BMa,分支claude/issue-912-920-925-926-service-family。文件面(两页族 + 两个卫星点,×3 语言):
content/docs/service/cases{,.zh-Hans,.zh-Hant}.mdx:administration/state-machines通篇声称状态机会「拦下」非法转换,实测五条规则全是warning:保存照样通过;连「只显示合法下一状态」「bypass state machine 权限」都无实现 #920 的 :78(enforced 句)、bareworkflows残留族在 #899 枚举之外还有 4 处:whats-new 把真实的contract_renewal流程叫成 workflow,state-machines:133 在 PR #894 扫过该文件后仍留着 #912 的 :80(Workflow automation 标题)、service/cases的《自动发生的事》:70/:71 是同族第三处未清扫的 SLA 说法——「SLA 截止日期按优先级计算」只对 critical 成立、「违约标记按解决时间超目标翻转」是另一套机制,字段名也不存在 #925 的 :59/:70/:71/:111、service/cases的「标准列表视图」七个名字里有六个不存在(:114-121),经理提示的三条(Breached SLA / Service Board / 客服排行榜)同族 #926 的 :114-121(标准列表视图)与 :171-173(经理提示)——cases 页余下失实一次清空;content/docs/administration/state-machines{,.zh-Hans,.zh-Hant}.mdx:administration/state-machines通篇声称状态机会「拦下」非法转换,实测五条规则全是warning:保存照样通过;连「只显示合法下一状态」「bypass state machine 权限」都无实现 #920 的 :8/:82-88/:110/:111/:134(「拦下」通篇 + 下拉零实现 + bypass 零命中)、bareworkflows残留族在 #899 枚举之外还有 4 处:whats-new 把真实的contract_renewal流程叫成 workflow,state-machines:133 在 PR #894 扫过该文件后仍留着 #912 的 :133;administration/state-machines用的一整套状态词在src/里查无此值:lead 的 Working / Disqualified 是导入别名不是状态,opportunity 的 Closed Without Decision 根本不存在,Needs Analysis 被漏掉;:60的「Disallowed」举例反了 #921 的状态词行(:14-15/:60 等)不在面内不得动,那是 R30 的单;content/docs/whats-new{,.zh-Hans,.zh-Hant}.mdx:89(bareworkflows残留族在 #899 枚举之外还有 4 处:whats-new 把真实的contract_renewal流程叫成 workflow,state-machines:133 在 PR #894 扫过该文件后仍留着 #912:contract_renewal 叫成 workflow);guides/integrations:130(bareworkflows残留族在 #899 枚举之外还有 4 处:whats-new 把真实的contract_renewal流程叫成 workflow,state-machines:133 在 PR #894 扫过该文件后仍留着 #912 弱例,dev 依语境定改不改,PR 说明)。裁定:
administration/state-machines通篇声称状态机会「拦下」非法转换,实测五条规则全是warning:保存照样通过;连「只显示合法下一状态」「bypass state machine 权限」都无实现 #920 措辞铁律:五条 state_machine 规则 severity 全 warning、非法跳转全部落库(PR docs(administration): list all five objects that have a state machine (#896) #919 探针实录)——「拦下/enforces/error」改写沿 docs(administration): list all five objects that have a state machine (#896) #919 已落地口径「advice, not a gate / 保存照样通过」;cases:78 与 state-machines 跨页互证句同步收口;⛔ 不得顺手把 severity 提到 error(Follow-up to #514: remaining behaviour fixes, conventions, and the action-sandbox test gap #575 B4 产品决定)。service/cases的「标准列表视图」七个名字里有六个不存在(:114-121),经理提示的三条(Breached SLA / Service Board / 客服排行榜)同族 #926 视图清单:七名六假,按 case.view.ts 七个真实视图写实,docs(service): write the sla page's views, report dimensions and business-hours claims to source (#917) #924 先例(名字保留说清真名/不存在 + 给读者真实去处);:171-173 经理提示的「客服排行榜」在 case_metrics 无 owner 维度下语义不可达,照 docs(service): write the sla page's views, report dimensions and business-hours claims to source (#917) #924 报表条口径写实不预判。service/cases的《自动发生的事》:70/:71 是同族第三处未清扫的 SLA 说法——「SLA 截止日期按优先级计算」只对 critical 成立、「违约标记按解决时间超目标翻转」是另一套机制,字段名也不存在 #925 的 :59/:111 字段名(breach flag→SLA Violated/is_sla_violated)与 :70/:71 机制(只 critical 打戳、每小时扫描非实时翻转)沿 docs(service): SLA 跟踪一节按实测行为改写(#903) #918/docs(service): write the sla page's views, report dimensions and business-hours claims to source (#917) #924 已落地写法抄平。Generated by Claude Code
yinlianghui commentedon Aug 6, 2026
✅ 验收通过(四单并单 #912+#920+#925+#926 + PM 面扩两行)—— PR #939 已合并(CI 8/8 全绿实核)。
验收要点:
administration/state-machines通篇声称状态机会「拦下」非法转换,实测五条规则全是warning:保存照样通过;连「只显示合法下一状态」「bypass state machine 权限」都无实现 #920 探针方法论扎实:直调 evaluateValidationRules 的一次性探针复核 docs(administration): list all five objects that have a state machine (#896) #919 实录(NOT BLOCKED 只记 WARN、insert 零检查),且隔离了邻近必填规则的干扰(第一版 ValidationError 来自 Email/Resolution required 而非状态机——补齐必填后重测),对照组零日志证规则不空转只是不拦截;:112 的 requiredWhen 真拒绝保存,如实保留。⛔ severity 未提级,遵守 Follow-up to #514: remaining behaviour fixes, conventions, and the action-sandbox test gap #575 B4。administration/state-machines用的一整套状态词在src/里查无此值:lead 的 Working / Disqualified 是导入别名不是状态,opportunity 的 Closed Without Decision 根本不存在,Needs Analysis 被漏掉;:60的「Disallowed」举例反了 #921 词面)逐字保留,administration/state-machines用的一整套状态词在src/里查无此值:lead 的 Working / Disqualified 是导入别名不是状态,opportunity 的 Closed Without Decision 根本不存在,Needs Analysis 被漏掉;:60的「Disallowed」举例反了 #921 未触碰有完整 hunk 起点清单证明(:14-15/:35-57/:60/:69/:118 全不在 diff 内),R30 派administration/state-machines用的一整套状态词在src/里查无此值:lead 的 Working / Disqualified 是导入别名不是状态,opportunity 的 Closed Without Decision 根本不存在,Needs Analysis 被漏掉;:60的「Disallowed」举例反了 #921 无碰撞。service/cases的「标准列表视图」七个名字里有六个不存在(:114-121),经理提示的三条(Breached SLA / Service Board / 客服排行榜)同族 #926 视图表逐视图回源(含 kanban/calendar/timeline 配置),六假名给真实去处;service/cases的《自动发生的事》:70/:71 是同族第三处未清扫的 SLA 说法——「SLA 截止日期按优先级计算」只对 critical 成立、「违约标记按解决时间超目标翻转」是另一套机制,字段名也不存在 #925 沿 docs(service): SLA 跟踪一节按实测行为改写(#903) #918/docs(service): write the sla page's views, report dimensions and business-hours claims to source (#917) #924 抄平且 :111「对客服只读」经核属实只改名。<+字母)、回读校验完整;docs(administration): list all five objects that have a state machine (#896) #919/docs(service): cases 升级整节与 index 生命周期第 2 步按 flow / hook 写实(#914、#915) #922/docs(service): write the sla page's views, report dimensions and business-hours claims to source (#917) #924 已落地行零回退。越界发现处置(两单已复核成立,标 pm:queue):
administration/state-machines还剩两处 #920 没枚举到的行为性主张::79-84的四条「The system also enforces」(审批阈值写成 $500K,实际入口是 $100K)、:114-122的 Copilot 一节在src/里零支撑 #940(state-machines :79-84「系统还强制」四条中两条失实:required 无条件性、审批阈值 $500K 实为 $100K 入口;:114-122 Copilot 节证据不足已明写「证不了」并给闭合方案)——诚实边界的范本;service/cases详情布局:130说页眉有「SLA 倒计时」和状态/优先级徽章,与 #903 已在 sla 页写实的「没有倒计时、页眉只有编号+主题+账户」直接打架;:68的首次响应触发条件也不对 #941(cases :130 页眉徽章+SLA 倒计时与 docs(service): SLA 跟踪一节按实测行为改写(#903) #918 已写实事实当面矛盾;:68 首次响应标记时机失实;:131 属实不得删)。service_dashboard叫作「Service Dashboard / 服务仪表盘」,但这个名字在应用里不存在:dashboard 的 label 是Customer Service,导航项的 label 是Service Overview#937 留言(计数需重扫 + 等命名裁定不单方面改)处置正确。断流记录:报告 10:54Z 写完任务未关(#901 型),PM 12:34Z 从 transcript 回收,无工作损失。
Generated by Claude Code
docs(service): write the cases and state-machine pages' remaining cla…
docs(service): write the index page's dashboards & reports section to…