Repository navigation
docs(service): SLA 跟踪一节按实测行为改写(#903) - #918
Merged
Merged
Conversation
…903) 三语同步改写 `content/docs/service/sla-and-escalation{,.zh-Hans,.zh-Hant}.mdx` 的 SLA 计算/跟踪一节。四族里三族属实并已写实,第四族(只读)复核后证伪, 按实情保留原判断并补上真实机制,不改成新的失实说法。 A 只有 Critical 会自动拿到 sla_due_date:`case_sla_defaults` (src/objects/case.hook.ts:60-64) 仅为 critical 填 now+4h,其余三档留空。 原 :12 与 #886/#890 已写实的「钩子只为 critical 填戳」句相隔 45 行说反话, 本次连同 :8 导语一次改齐,#886/#890 的 :16/:57 族/:105/:134 原文不动。 D High/Medium/Low 的「违约长什么样」写的其实是优先级行底色: src/views/case.view.ts:39-42 的 rowColor 键在 priority 而非违约,恒常渲染, 且 High 是橙 #f97316 不是红、Medium 是黄 #eab308。三行目标值如实降格为 服务承诺,并点明列表里真正报告违约的是 is_sla_violated 这一列。 C 实时倒计时零实现:countdown/remaining 全仓无命中,page:header 只带 case_number/subject/crm_account,SLA 两个字段渲染在 record:highlights 「关键信息」栏。同族回声(给客服的提示「关注你的 SLA 倒计时」)一并改写。 B 前提证伪:字段确实不是 readonly(为了 case_sla_monitor 能写,#2948), 但服务专员权限档案 src/profiles/service-agent.profile.ts:52 把 crm_case.is_sla_violated 遮罩为 readable:true / editable:false —— 这道门 存在,只是实现在字段级安全而非字段属性上(本仓 content/docs/administration/profiles.mdx:82 已列此遮罩)。故保留「对客服只读」 的判断并补写真实机制。同段真正失实的是相邻的字段定义行:字段标签是 SLA Violated 而非「SLA Breached?」,且置真条件不是「解决时间超过目标」, 而是每小时扫描命中「仍打开 + 截止日期已过」——这条已改写。 #595 不预判:只写实当前行为,不判断 High/Medium/Low 应否有 SLA 时钟。 未动任何字段定义、流程或视图。 Refs #886 #890 #595 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. |
…x appears 详情页的分区标签是 Status & SLA(case_detail.page.ts:131-133),对象表单的 页签标签是 SLA(case.view.ts:186-199) —— 两处都写出来,避免读者按单一名字 去找那个改不动的勾选框。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VHrPAGEgFDoHjphqYG4BMa
yinlianghui
marked this pull request as ready for review
August 6, 2026 08:46
This was referenced Aug 6, 2026
Closed
Merged
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 #903
三语同步改写
content/docs/service/sla-and-escalation{,.zh-Hans,.zh-Hant}.mdx的 SLA 计算 / 跟踪一节。四族里三族属实并已写实,第四族(B,违约标记只读)复核后前提证伪 —— 按实情保留原判断并补上真实机制,而不是照单把它改成一句新的失实说法。未动任何字段定义、流程、视图或平台版本。逐条前提复核(基线
7df29789,平台 17.0.0-rc.3)行号为 issue 基线
90686a4f的原始值。PR #907(#886+#890)与 #906(#844)确实动过同页,但其增删都落在:57一节及其后,本单四族的四处行号在 fresh main 上未位移,逐一原址命中。A
:12「每个工单创建即获 SLA 截止日期」—— 成立 ✅src/objects/case.hook.ts:60-64只在priority === 'critical'且字段为空时填now + 4h,其余三档一律不写。改动::12改为「只有 Critical 工单会自动获得 SLA 截止日期」,点名case_sla_defaults钩子与文件路径。:8导语一次改齐(裁定 1)。导语原文「gives every case a deadline … surfaces breaches in real time」是 A 的同一句话换个位置,只改:12会把矛盾留在更显眼的地方;「in real time」同时是 C 的回声,一并按每小时扫描写实。:21「SLA 目标可按优先级配置」随之收窄为「Critical 的 4 小时是系统唯一会盯的目标,写在钩子里」—— 不与service/sla-and-escalation三语还剩两处行为性失实:升级触发条件多出一个不存在的 High+Customer 分支,Critical 违约行承诺「红色横幅 + 通知支持经理」 #886 已落地的:136冲突,只是把它的范围说准。service/sla-and-escalation三语还剩两处行为性失实:升级触发条件多出一个不存在的 High+Customer 分支,Critical 违约行承诺「红色横幅 + 通知支持经理」 #886 / service 三页仍写「建议一个解决方案」会检索知识库并起草回复 / Copilot 用知识库对相似历史工单做模式匹配——两个技能都做不到 #890 的:16/:57族 /:105/:134原文逐字未动,:16的 Critical 单元格只在第二列加了「会被写入sla_due_date」,判断部分照抄。D
:17-19High/Medium/Low 的「违约长什么样」—— 成立 ✅src/views/case.view.ts:39-42的rowColor键在priority而非违约,三重不符全部复现:行底色不是徽章、按优先级恒常渲染、High 是橙#f97316不是红 / Medium 是黄#eab308。三行现写明「什么都不会发生」并交代真实归属(case_sla_monitor只捞sla_due_date已过的工单,而它们没有截止日期),目标值如实降格为服务承诺(裁定 5);另加一句点明列表里真正报告违约的是is_sla_violated这一列(case.view.ts:28)。C
:34-38实时倒计时 —— 成立 ✅grep -rniE "countdown|remaining" src/仅两处无关注释(opportunity.dataset.ts:76、executive.dashboard.ts:149)。另有一处比 issue 更强的证据:src/pages/case_detail.page.ts:44-51的page:header只带{case_number} · {subject}与副标题{crm_account},页眉里根本没有 SLA 字段;两个 SLA 字段渲染在:56-73的record:highlights(labelKey Information)里。三条 emoji 阈值行替换为真实呈现,并补上两个确实能帮上忙的视图(sla_calendar/sla_at_risk),按各自的过滤条件如实描述 ——sla_at_risk筛的是priority in [high, critical],不是「离截止有多近」。同族回声
:124「关注你的 SLA 倒计时——当你看到琥珀色区域时」指的是同一个不存在的部件,一并改写;只改:34-38会让页面继续在提示区承诺倒计时。B
:32「违约标记对客服只读」—— 前提证伪 ❌Issue 的依据是
case.object.ts:205-210不是readonly,推论「那道门不存在」。字段确实不是 readonly(注释写明原因:case_sla_monitor要写它,16.x 会丢弃对 readonly 字段的写入,#2948)—— 但这道门存在,只是实现在另一层:fields是PermissionSetSchema的一等键(PERMISSION_SET_KEYS含fields,FieldPermissionSchema={ readable, editable },.strict()),不是会被静默丢弃的未识别键。本仓自己的文档也已列过这条遮罩:content/docs/administration/profiles.mdx:82—— 「crm_case.is_sla_violated/resolution_time_hours| Service agent | Nobody — they are computed」,sharing-and-security.mdx:194写明 FLS「enforced everywhere」。其余 profile 里sales_manager/sales_rep对crm_case本就allowEdit: false,marketing_user无授权,guest_portal只能 insert —— 也就是说页面说的「对客服只读」是对的。照 issue 原样改写会把一句正确的话改成失实。故:保留该判断,补写真实机制(字段级安全,不是字段属性),并链到 Profiles 的 FLS 表让读者能自己核。
B 这一族真正失实的是相邻的
:30—— 字段定义行。它写「SLA Breached? —truewhen the resolution time exceeds the target」,两处都不对:字段标签是 SLA Violated(case.object.ts:206/translations/en.ts:659),不存在叫 SLA Breached? 的字段;置真条件也不是「解决时间超过目标」,而是每小时扫描命中「status 不在 resolved/closed +sla_due_date已过」(case-sla-monitor.flow.ts:40-47)。由此两个后果值得写出来,且直接与 A 咬合:没有截止日期的工单永远不入选;在下一轮扫描前就被解决掉的超时工单也不会被标记。这条已改写。裁定 4(只改页面承诺,不动字段定义)全程遵守 ——
src/零改动。反向验证的方向
本单是纯文档改写,没有可以「删掉再看诊断变红」的代码分支,
pnpm test也不含针对该页散文的断言(docs-drift.test.ts的规则面是磁贴引用与对象覆盖,不是本页这几句)。按裁定如实报告:守卫盲区(散文列),predicted GREEN —— 各门在改前改后都应绿,绿本身不构成对文案正确性的证据。文案正确性的证据是上面每条的 file:line,而不是 CI。裁定对齐
service/sla-and-escalation三语还剩两处行为性失实:升级触发条件多出一个不存在的 High+Customer 分支,Critical 违约行承诺「红色横幅 + 通知支持经理」 #886 一次改齐、不回退):见 A 条。SLA Breached?/ 红色徽章 / 琥珀区 / 倒计时四个名字都保留在文中并说清「不存在 / 是别的东西」,没有一个是悄悄删掉的。/zh-Hans/docs/administration/profiles、/zh-Hant/docs/administration/profiles);英文页用#field-level-security,该锚点由sharing-and-security.mdx:193现存链接实证可达。验证
全部在
flock -w 7200 /tmp/os-heavy-verify.lock内串行执行,NODE_OPTIONS=--max-old-space-size=4096:pnpm validate✓ Validation passed (1297ms)pnpm typecheckpnpm lint13 warning(s), 14 suggestion(s)—— 全部为 main 既有(approval 审批人可能解析为空、campaign_member 字段组)pnpm hygiene✓ no raw control bytes in first-party filespnpm build✓ Build complete (1580ms),dist/objectstack.json (1921.4 KB)pnpm test -- --maxWorkers=2Test Files 66 passed (66)/Tests 1587 passed | 1 skipped (1588)push 前自扫控制字节:
grep -naP '[\x00-\x08\x0b\x0c\x0e-\x1f]'覆盖三个 mdx 与 changeset,退出码 1(无命中)。未起 dev server。附带
.changeset/sla-tracking-fidelity.md(patch),站内路径一律反引号包裹。service/sla-and-escalation剩余六处失实(#903 四族之外):营业时间可配置、SLA 表现报表的四个维度、Breached SLA 视图、Service Board 看板、My Open Cases 排序、Waiting on Customer 暂停 SLA 时钟 #917,未在本 PR 顺手改。Generated by Claude Code