Skip to content

service/sla-and-escalation 剩余六处失实(#903 四族之外):营业时间可配置、SLA 表现报表的四个维度、Breached SLA 视图、Service Board 看板、My Open Cases 排序、Waiting on Customer 暂停 SLA 时钟 #917

Description

@yinlianghui

发现自 #903 的实施过程(PR #916)。#903 的裁定面被定死在 A(:12)/ B(:32)/ C(:34-38)/ D(:17-19)四族,本条是同页另外一族——页面指向的视图 / 报表 / 配置项是否存在——不在那个切割里,故单独立单,未在该 PR 里顺手改。

基线 origin/main = 7df29789(含 PR #907 / #906 / #908 / #910,平台 17.0.0-rc.3)。行号为 #903 落地前的原始行号;PR #916 使 :12 一节增长 5 行、:29 一节增长 4 行,故其后的行号在该 PR 合并后会位移。三语同页同行号。

事实

1. :23 / :137 —— 营业时间可配置

:23 的引用块:

> Business hours — the system can be configured to count only business hours (e.g., 9-5 Mon-Fri) rather than calendar hours. See Administration › Setup.

:137 的管理员提示又说了一遍(「由你租户的营业时间设定控制」)。全仓 grep -rniE "business.?hour" src/ 只有三处命中,全是产品目录与报价行的描述文案(src/data/catalog.seed.ts:138、src/data/sales.seed.ts:585 / :629),没有任何营业时间配置、日历或计算逻辑。唯一会算 SLA 时间的地方是 src/objects/case.hook.ts:60-64 的 due.setHours(due.getHours() + 4) —— 纯日历小时,不区分工作日与夜间。

2. :47-51 —— SLA 表现报表的四个细分维度

> - Agent (who's hitting their SLA?)
> - Priority (which priority bucket is leaking?)
> - Account tier (are customers being treated worse than prospects?)
> - Month (is performance trending up or down?)

src/reports/case.report.ts:17-29 的 sla_performance 只按一个维度出行:

dataset: 'case_metrics', rows: ['priority'], values: ['case_count', 'avg_sla_violated', 'avg_resolution'],

四个里只有 Priority 是真的。更要紧的是另外三个在数据集层面就不可达:src/datasets/case.dataset.ts:15-21 的 case_metrics 只声明了 status / priority / origin / type / created_date 五个 dimension —— 没有 owner/agent 维度,也没有账户等级维度(crm_account.tier 存在于 src/objects/account.object.ts:344,但 case_metrics 不跨对象取它)。created_date 的 dateGranularity 是 day 而非 month,且该报表根本没把它放进 rows。所以读者按图去报表里找这三个下拉,一个都找不到。

3. :118 / :130 —— 「Breached SLA」列表视图

:118 的推荐节奏表让服务经理每天早上看 Breached SLA + Critical Cases,:130 的经理提示让他「每天早上运行 Breached SLA 列表视图」。src/views/case.view.ts 里 crm_case shipped 的全部 7 个视图是:all_cases(All Cases)、case_workflow(Service Workflow)、sla_calendar(SLA Calendar)、case_timeline(Case Timeline)、my_open_cases(My Open Cases)、escalated_cases(Escalated Cases)、sla_at_risk(⏰ SLA at Risk)。没有叫 Breached SLA 的视图,也没有任何视图以 is_sla_violated: true 为过滤条件 —— 唯一按违约过滤的地方是 src/dashboards/service.dashboard.ts:148 的一个仪表盘部件。同理没有叫 Critical Cases 的视图。

4. :131 —— 「Service Board」看板

> - ✅ Use the Service Board kanban for daily standups.

看板视图是 case_workflow,label: 'Service Workflow'(src/views/case.view.ts:73-75)。tabs 里它显示为 Workflow(:59)。Service Board 这个名字在全仓不存在。

5. :117 —— My Open Cases「按 SLA 截止日期排序」

src/views/case.view.ts:125-138 的 my_open_cases 主排序键是 priority_rank desc,sla_due_date asc 只是次级键:

sort: [
  { field: 'priority_rank', order: 'desc' },
  { field: 'sla_due_date', order: 'asc' },
],

而且在 #903 写实之后这条更要紧:非 critical 工单没有 sla_due_date,次级键对它们整体失效,客服看到的其实是一个纯优先级队列。

6. :125 —— Waiting on Customer 可以暂停 SLA 时钟

> - ✅ Use Waiting on Customer when you're genuinely blocked — depending on your config, this can pause the SLA clock.

没有任何东西会暂停它。全仓写 sla_due_date 的只有 src/objects/case.hook.ts:60-64 一处,只在首次满足 critical 且字段为空时写一次,之后任何状态流转都不会重算或顺延;case_sla_monitor 的过滤条件 status: { $nin: ['resolved', 'closed'] } 也不排除 waiting_customer —— 也就是说,一个挂在等客户回复上的 critical 工单,时钟照走,到点照样被标违约并升级。「depending on your config」指向的那个 config 不存在。

为什么要紧

3、4、5 是「按图找不到东西」的代价:经理照 :130 去找 Breached SLA 视图会扑空,客服照 :117 以为自己的队列按截止时间排。2 更贵一点 —— 服务总监会以为能按客服和账户等级看违约率分布,而这两个维度在语义层根本没有,要做得改 case_metrics。6 是会让人做错事的一条:客服相信切到 Waiting on Customer 能停表,于是不再盯这张单,而系统那边时钟照走。1 是纯粹的配置承诺落空。

边界

Refs #903 #886 #890 #595

Activity

  1. yinlianghui commented on Aug 6, 2026

    @yinlianghui
    CollaboratorAuthor

    更正:正文里两处「PR #916」应为 PR #918(#903 的实施 PR,立单时该 PR 号尚未分配)。行号位移的说明不变 —— #918 使 :12 一节增长 5 行、:29 一节增长 4 行,本单 :47 及其后的行号在 #918 合并后需按此重定位。


    Generated by Claude Code

  2. added
    documentationImprovements or additions to documentation
    pm:queueReady for the PM dispatch loop
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Aug 6, 2026
  3. self-assigned this
    on Aug 6, 2026
  4. yinlianghui commented on Aug 6, 2026

    @yinlianghui
    CollaboratorAuthor

    🔒 认领(/pm-dispatch R28)— session session_01VHrPAGEgFDoHjphqYG4BMa,分支 claude/issue-917-sla-views-reports。

    文件面:content/docs/service/sla-and-escalation{,.zh-Hans,.zh-Hant}.mdx,仅本单六处(营业时间 :23/:137、报表维度 :47-51、Breached SLA 视图 :118/:130、Service Board :131、排序键 :117、Waiting 暂停时钟 :125)——行号为立单基线值,PR #913/#918 刚动过同页,fresh main 上全部重定位。

    裁定:

    1. 基线 17.0.0-rc.3;逐条 stale-premise 复核(sla_performance rows、case_metrics 五 dimension、crm_case 七视图名、看板 label、My Open Cases 排序、$nin 清单)。
    2. docs(service): SLA 跟踪一节按实测行为改写(#903) #918 刚落地的 :12/:30/:32 族与 docs(service): 把升级触发条件、Critical 违约行与三处技能能力主语按源码写实 (#886, #890) #907 的 :16/:57 族改动不得回退;口径沿同页已立写法(点名说清不做什么 + 真实归属)。
    3. 报表维度条:写实「按优先级细分」即可,agent/账户等级/月份三个语义不可达的维度点名不存在,不预判平台侧应否支持(那是 #5xxx 级产品问题,如实写今天的形状)。
    4. SLA policy matrix: per-priority × tier clocks, first-response stamping, escalation that reassigns #595 继续不预判;src/ 零改动。

    Generated by Claude Code

  5. yinlianghui commented on Aug 6, 2026

    @yinlianghui
    CollaboratorAuthor

    ✅ 验收通过 —— PR #924 已转 ready 并挂 auto-merge(CI 8/8 全绿实核)。

    验收要点:

    1. 六条 premise 全部成立且证据升级:每条 file:line 到位(营业时间四关键词全仓零命中、sla_performance 只 rows:['priority']、七视图无 Breached SLA、Service Board 真名 case_workflow、排序 priority_rank desc 在先、$nin 不排除 waiting_customer);「Breached SLA/Critical Cases」的真实归属定位到 service.dashboard.ts 两块磁贴——比 issue 的「不存在」多给了读者一条去处。
    2. 行号重定位表完整(六族在 docs(service): SLA 跟踪一节按实测行为改写(#903) #918 落地后的新位置逐一列出),docs(service): SLA 跟踪一节按实测行为改写(#903) #918/docs(service): 把升级触发条件、Critical 违约行与三处技能能力主语按源码写实 (#886, #890) #907 已落地行未触碰。
    3. 口径沿同页已立写法;报表维度按裁定只写实不预判;顺带移除仅服务于虚构营业时间设置的两处 Setup 链接,合理。
    4. 守卫盲区如实报 predicted GREEN,并点明本改动真正会动的两道门(docs-drift 引用块平价 1/1/1、hygiene)均实测绿。

    越界发现处置(三单均已复核成立,标 pm:queue):

    R29 排期备注:cases 页现已积 #912(:80)/#920(:78)/#925(:59/:70/:71/:111)/#926(:114-121/:171-173)四单——必须并单或同 dev,不再分散;#927+#915 家族的 index 页已静,#927 可独立;#928 三页独立面。


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentationpm:dispatchedDispatched to a dev agent by /pm-dispatch

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions