Repository navigation
docs(service): 把升级触发条件、Critical 违约行与三处技能能力主语按源码写实 (#886, #890) - #907
Merged
Merged
Conversation
…and three skill subjects to source Fixes #886 Fixes #890 #886 — content/docs/service/sla-and-escalation.mdx (+ zh-Hans / zh-Hant): - The "High priority AND the related account is a Customer" escalation branch does not exist. `src/flows/case-escalation.flow.ts` gates the start node on `record.priority == "critical"` and nothing else; its insert-time twin `case_escalation_on_create` reuses the same condition. No flow in the app reads an account type or tier. Written real: only Critical auto-escalates, High never does, and raising a High case is a manual step. The SLA-monitor fallback does not cover them either — `case.hook.ts` stamps `sla_due_date` for `critical` only. - The Critical breach row promised a red banner and an alert to a support manager. There is no banner mechanism under `src/`, and the breach notice is `case-sla-monitor.flow.ts`'s notify node, whose recipients are `{currentCase.owner_id}` alone. #890 — service/cases.mdx:156, service/index.mdx:48, service/sla-and-escalation.mdx:105 (+ zh-Hans / zh-Hant): "Suggest a resolution" searching the knowledge base and drafting a reply, and the Copilot pattern-matching past cases, are attributed to skills that cannot do it: `case_triage` carries `describe_object` + `get_record` and no query tool, and `email_drafting` never reaches for a knowledge source. The skill that reads articles is `customer_360`. All three sentences rewritten on the #861 / #865 line, and the fictional "Support Knowledge Base" link label replaced with the page's real name. Docs only, three pages x three locales, plus a changeset. No change under `src/**`. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VHrPAGEgFDoHjphqYG4BMa
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
yinlianghui
marked this pull request as ready for review
August 6, 2026 05:50
This was referenced Aug 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #886
Fixes #890
两单同落 service 页族、行集互斥(#886 是行为主张,#890 是技能能力主语),按 PM 认领评论并单一个 PR。基线
origin/main=90686a4f,已含 PR #894(e10b6735,同页族 42 处 1:1 行改动)与 #885 / #892 / #895;这两个 PR 已写实的行本 PR 零回退,:101附近的 emoji 锚点面(#866)与 zh 页:138链接缺锚点均未触碰。纯文档改动:3 个页族 × 3 语言 = 9 个文件,加 1 个 changeset。未触碰
src/**、content/docs/releases/,没有任何 flow / hook / skill / 条件 / 收件人 / 字段发生变化。一、前提复核(逐条重核于
90686a4f)六处断言全部成立,无一失效:
record.priority == "critical"src/flows/case-escalation.flow.ts:76-79,逐节点复核,全 flow 无第二个优先级项case-escalation.flow.ts:155-165,只把triggerType换成record-after-creategrep -rn "account_type|'customer'|tier" src/flows/仅 2 处无关注释(demo-bootstrap/opportunity-approval);pnpm validate报Logic: 24 Flowssrc/无任何横幅机制grep -rni "banner" src/全仓 1 命中,是opportunity.object.ts:281的无关注释case-sla-monitor.flow.ts:84recipients: ['{currentCase.owner_id}'],节点标签Alert Ownersla_due_datecase.hook.ts:60if (priority === 'critical' && ...),其余优先级留空case_triage无检索工具case-triage.skill.ts:49tools: ['describe_object', 'get_record']email_drafting不取知识来源email-drafting.skill.ts:21-37五步 instructions 逐步复核,无一步取文章customer_360customer-360.skill.ts:48-52query_records查已发布crm_knowledge_article,按category/tags匹配;六个 skill 逐一复核一处补充测量(写进正文时据此收紧措辞):
sla_due_date(case.object.ts:197)不是 readonly,人可以手工填,service.seed.ts也为若干非 critical 种子工单显式写了值。所以正文写的是「没有任何自动化会给 High 打这个戳」,而不是「High 永远没有 SLA 截止日期」。二、行号重定位表
issue 正文的行号是 PR #885 合并前的;本 PR 基线在 #885 / #894 之后。
#886
90686a4f:16:16(未位移):16:57-60:57-60(未位移):57-64(该节由 4 行扩为 8 行):128:134(#885 使正文 +6 行):138#890
0d3f3216)90686a4f:156:156(未位移):156:48:48(未位移):48:105:105(未位移):109(受本 PR:57节 +4 行影响)三语行号在每一格均一致。
三、#886 逐行改文
A.
:57-60—— 不存在的 High + Customer 升级分支对着的源码(
src/flows/case-escalation.flow.ts:76-79):「High」「Customer」「潜在客户」「账户等级」四个词都点名保留并写明不存在,不静默删名;同时按 issue 要求把「High 拿不到
sla_due_date、兜底路径同样失效」一并写实,并给出可执行的替代(人工巡检 / Escalate Case 按钮)。未对 #595 预判——没有任何一句暗示 High 将来会自动升级或将来会有 SLA。B.
:16—— Critical 违约行的红色横幅 + 支持经理「红色横幅」与「支持经理」两个词同样点名保留 + 写明不存在,真实归属(
case-sla-monitor.flow.ts的 notify 节点 → 工单负责人)写进同一格。4 hours保留不动——case.hook.ts:61-63确实给 critical 打 4 小时。C.
:134→:138—— 管理员提示里的同一分支复述顺带把管理员真正需要知道的那件事写进去:条件写在两个 flow 里,只改一个会漏掉新建路径。链接目标逐字保留——en 页保留
#flows-multi-step锚点,zh-Hans / zh-Hant 页保留其原本没有锚点的/zh-Hans|zh-Hant/docs/administration/automation,不顺手补锚点(悬空/缺失锚点是 #866 / #867 的面)。紧邻的
:135→:139(#850 认领的「recipient lists ... configurable」那条)逐字未动,两单不踩线。四、#890 逐行改文
三处的共同事实:
case_triage只带['describe_object', 'get_record'](无检索工具),email_drafting五步 instructions 不取知识来源,真正读文章的是customer_360。按 #861 / #865 的既有口径整句重写——检索归 Customer 360°,起草回复归邮件撰写,并说明分流两件都不做。D.
cases:156E.
index:48F.
sla:105→:109该条所属清单的引子
:101([Service Copilot's Case Triage skill](/docs/ai-copilot/skills#case-triage),#866 的 emoji 锚点面)逐字未动;同清单的:103/:104两条不在切割内,也未动。链接标签处理:「Support Knowledge Base」是 #808 / #892 已清掉的虚构知识库名。三处链接保持指向
/docs/service/knowledge-base,标签改为该页真实标题——en 用knowledge articles(对应页面title: Knowledge Base与 #892 落地的「唯一读文章的技能是 Customer 360°」口径),zh-Hans 用「知识文章」、zh-Hant 用「知識文章」,与knowledge-base.zh-Hans.mdx:12、ai-copilot/service-copilot.zh-Hans.mdx:43的既有称谓一致。五、三语一致性与术语
zh 术语按语言包与页面既有称谓,未引入新词:
crm_casecase_triageskills.zh-Hans.mdx:90、cases.zh-Hans.mdx:155email_draftingservice-copilot.zh-Hans.mdx:45、knowledge-bases.zh-Hans.mdx:56customer_360service-copilot.zh-Hans.mdx:50(带度符,#865 落地写法)crm_knowledge_articleknowledge-base.zh-Hans.mdx:12、:41:68既有:16原词,写实时保留点名六、验证输出(
flock /tmp/os-heavy-verify.lock+NODE_OPTIONS=--max-old-space-size=4096)pnpm validatepnpm typecheckpnpm buildpnpm test -- --maxWorkers=2pnpm lintpnpm hygiene关键行:
test 输出里出现的
✗ source hygiene failed: .../✗ source hygiene: scanned director(y|ies) missing: content是test/source-hygiene-scan-surface.test.ts元测试故意制造的 stderr(它验证扫描面缺失时会不会报错),属预期,测试整体 66/66 通过。控制字节自扫(除 gate 之外,覆盖 gate 扫不到的
0x01-0x1f位):七、changeset
.changeset/service-behavior-residue.md,'hotcrm': patch,两单分节,站内路径全部反引号包裹(#797)。八、顺带发现(已按 Prime Directive #10 单独立单,未在本 PR 修)
两条都在本 PR 的切割之外,先对 #866 / #899 / #612 及全部 91 个 open issue 去重后新建,均未指派、未打标签,留给 PM 定级:
service/sla-and-escalation的 SLA 跟踪一节仍有四处行为性失实:只有 Critical 拿得到 sla_due_date、违约标记并非只读、"实时倒计时"零实现、High/Medium/Low 的"违约长什么样"描述的其实是优先级行色 #903 ——sla-and-escalation的 SLA 跟踪一节还剩四处::12「每个工单创建即获得 SLA 截止日期」(钩子只给 critical)、:32「违约标记对客服只读」(is_sla_violated明确不是 readonly,对象注释写明了原因)、:34-38「页眉实时 SLA 倒计时」(grep countdown\|remaining零命中)、:17-19三行的「违约长什么样」(case.view.ts:39-42唯一的颜色声明是 rowColor 且键在 priority 上,与违约无关,连颜色都对不上——High 是橙#f97316不是红)。:12与本 PR 存在同页张力:本 PR 按service/sla-and-escalation三语还剩两处行为性失实:升级触发条件多出一个不存在的 High+Customer 分支,Critical 违约行承诺「红色横幅 + 通知支持经理」 #886 裁定在:64写了「SLA 钩子只为critical填sla_due_date」,而 45 行之上的:12仍写着「每个工单创建即获得 SLA 截止日期」。:12不在service/sla-and-escalation三语还剩两处行为性失实:升级触发条件多出一个不存在的 High+Customer 分支,Critical 违约行承诺「红色横幅 + 通知支持经理」 #886 / service 三页仍写「建议一个解决方案」会检索知识库并起草回复 / Copilot 用知识库对相似历史工单做模式匹配——两个技能都做不到 #890 的任一切割内(service/sla-and-escalation三语还剩两处行为性失实:升级触发条件多出一个不存在的 High+Customer 分支,Critical 违约行承诺「红色横幅 + 通知支持经理」 #886 的表面只到:16),本 PR 按线级切割纪律未动它,改由service/sla-and-escalation的 SLA 跟踪一节仍有四处行为性失实:只有 Critical 拿得到 sla_due_date、违约标记并非只读、"实时倒计时"零实现、High/Medium/Low 的"违约长什么样"描述的其实是优先级行色 #903 与其余三处一次改齐——这也是service/sla-and-escalation的 SLA 跟踪一节仍有四处行为性失实:只有 Critical 拿得到 sla_due_date、违约标记并非只读、"实时倒计时"零实现、High/Medium/Low 的"违约长什么样"描述的其实是优先级行色 #903 立单的主要理由,建议优先派发。service/index的「工作流程 / 系统为你做了什么」两处清单是 #876/#885/#894 已清掉那批说法的未清扫副本:升级会重新分配给资深客服、High+Customer 分支、通知支持经理 / 升级团队、红色横幅 #904 ——service/index的:30、:36、:37、:38、:40(×3 语言 = 15 行)是content/docs/service/sla-and-escalation三语种把升级描述成「改派给经理 + 群发经理/support-team 邮件」,flow 既不改派也只发负责人一人 #876 / docs(service): 按 flow 与 hook 写实 SLA 页的升级说明(#876) #885(sla 页)与 「工作流规则」在 automation 之外还散布 8 个页族 ×3 语言共 33 处,其中 4 处把可配置项指向了不存在的配置面 #850 /service/cases三语的「工作流自动化」清单同样写着虚构的support_manager@example.com与「向升级团队发邮件」,实际收件人是工单负责人一人 #887 / docs: 清扫 automation 页之外的「工作流规则」并写实 cases 两条虚构通知 (#850, #887) #894(cases 页)已逐条写实过那批说法的未清扫副本:升级会「reassigns it to a senior agent」、「critical cases or high-priority customer cases」、通知「the support manager」/「the escalation team」(两个地址全仓零命中)、违约「with a red banner」。同段的:35/:39/:41经核对为真,已在单里写明不要顺手改。Generated by Claude Code