Files
wecom_it_smart_desk/docs/01-产品文档/04-坐席工作台/PRD-REQ-坐席-007-分诊排查系统-v1.0.md
T
Simon facc04aa65 chore: docs 结构整改 + compose 双目录对齐(合并重建提交)
本提交为 .git 对象库损坏后的重建提交,内容等价于原先三个本地提交
(5e2fd4c2 / 57a53c98 / 5d7e1873)的累积结果,未做任何额外改动。

一、docs 结构整改(整改 #14)
根因:重构时新结构为 untracked 文件,执行 git stash(未带 -u)未纳入,
随后 git reset 拉回 HEAD 旧 tracked 树,导致旧树复活、新旧两棵目录
树并存于 docs/,共 791 文件、双分类体系冲突。

修复动作:
- b2 同名异主题文件改名迁移保全 9 个
- C 类 39 个孤立文件按主题正确归类
- A/B1 类 222 个重复文件删除(新结构已有内容副本)
- 9 个旧独有空目录删除
- 270 处内部引用按 verified 映射改写
- 整改记录 #14 登记于 04-运维文档/部署运维

结果:docs 791 → 569 文件,顶层仅规范 8 类 + 治理文件,单树恢复。
残留:约 20 处指向从未存在文件的陈旧死链,归入独立文档卫生任务。

二、compose 双目录对齐(消除踩坑 A)
- docker-compose.yml:nginx 前端挂载全部由根目录 frontend-*/dist
  改为 src/frontend-*/dist(h5 / agent / admin / terminal)
- docker-compose.dev.yml:dev 服务 build context 与卷同步改 src/
- 效果:本地 docker compose up 不再把根目录 stale dist 挂回,
  与线上一致,分叉隐患消除(已 docker compose config 校验通过)

防复发铁律:
- 重构须提交;仓库修复须 git stash -u 或先 commit
- 新结构须 git add 并提交,避免再次 untracked 复活
- H5 改动只动 src/frontend-h5/,禁改根目录遗留 frontend-*/
2026-08-07 22:31:32 +08:00

424 lines
28 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PRD - 分诊排查系统(排查流程图管理)
> **REQ编号**: REQ-坐席-007
> **版本**: v1.3(存量文件名暂保留 v1.0,避免破坏既有引用)
> **日期**: 2026-07-28
> **状态**: [待评审]
> **作者**: 宋献
> **优先级**: P0
> **需求类型**: 存量功能补充与生产化改造
> **关联文档**:
> - 原型: `原型-REQ-坐席-007-分诊排查系统-v1.0.html`
> - 技术方案: `../../../02-技术文档/技术架构/技术方案-REQ-坐席-007-分诊排查系统-v1.0.md`
> - 功能测试: `../../../03-测试文档/03-功能测试用例/TC-坐席-007-分诊排查系统.md`(v1.0,54 条用例,评审通过后补齐)
---
## 一、需求背景
### 1.1 业务问题
常见 IT 故障依赖坐席个人经验排查,容易出现步骤遗漏、处理口径不一致、新坐席上手慢,以及员工转人工后重复描述和重复排查等问题。当前仓库已经存在“排查流程图管理”页面、坐席排查步骤组件和员工 H5 自助排查页面,但数据契约、持久化、发布机制和跨端执行闭环尚未完成。
### 1.2 产品定位
“排查流程图管理”是**分诊排查系统的管理入口**,负责将高频故障的标准排查方法沉淀为可发布、可执行、可追踪的模板。产品统一名称建议为“分诊排查管理”,流程图是模板内容的一种表达方式,不是独立绘图工具。
完整链路:
`管理员编制模板 → 校验与发布 → 坐席/员工选择或被推荐模板 → 按节点执行 → 记录路径与结果 → 未解决时携带上下文转人工 → 运营数据回流优化模板`
### 1.3 目标用户
| 角色 | 主要诉求 |
|---|---|
| IT 支持组长/管理员 | 统一维护排查标准,控制版本和发布范围,查看使用效果 |
| 呼叫坐席 | 快速选择模板、按步骤推进,避免遗漏,完整记录排查过程 |
| 员工 | 对常见问题进行低门槛自助排查,未解决时无损转人工 |
| 运营/质量管理员 | 分析模板采用率、解决率、断点和过期内容 |
---
## 二、目标与成功标准
### 2.1 用户目标
1. 管理员能在一个入口完成模板创建、校验、预览、发布、停用和版本回滚。
2. 坐席能在会话中 10 秒内定位并启动合适模板,执行状态与会话绑定。
3. 员工能按清晰步骤自助排查,转人工时自动携带已完成路径。
4. 管理者可追踪模板是否有效,而不是只统计“建了多少模板”。
### 2.2 业务目标
| 指标 | 口径 | 上线后 30 天成功阈值 | 远期目标 |
|---|---|---:|---:|
| 模板采用率 | 启动模板的适用会话数 / 适用会话总数 | ≥40% | ≥65% |
| 模板完成率 | 到达结束节点的执行实例 / 启动实例 | ≥70% | ≥85% |
| 模板辅助解决率 | 标记“已解决”的完成实例 / 完成实例 | ≥45% | ≥60% |
| 员工自助解决率 | 无需转人工的自助实例 / 自助启动实例 | ≥20% | ≥35% |
| 重复排查率 | 转人工后重复执行已完成节点的实例 / 转人工实例 | ≤10% | ≤5% |
| 模板执行异常率 | 死路、无后继、同步失败实例 / 启动实例 | ≤2% | ≤1% |
> 当前无可信基线,目标值为首版假设;上线前需通过埋点获取 2 周基线并评审调整。
---
## 三、范围
### 3.1 P0:生产可用最小闭环
1. **模板列表**:按名称、分类、状态搜索;显示版本、节点数、预估时间、最后发布人和更新时间。
2. **模板编辑**:维护基本信息和节点树;支持步骤节点、判断节点、结束节点及是/否分支。
3. **结构校验**:保存前检查根节点、节点 ID 唯一性、分支完整性、不可达节点、循环和结束节点。
4. **草稿与发布**:编辑只产生草稿;发布后生成不可变版本;已发布版本供执行端使用。
5. **版本管理**:查看历史版本、版本差异、回滚为新草稿;禁止直接覆盖历史版本。
6. **启用与停用**:停用后不可新启动,但已有执行实例可继续完成。
7. **权限与审计**:管理员可维护;坐席和员工只读已发布模板;记录创建、修改、发布、停用、回滚和删除操作。
8. **坐席执行**:模板启动、节点推进、分支选择、暂停/恢复、结束;执行状态绑定会话并持久化。
9. **员工自助**:查看可用模板、按节点执行、反馈是否解决;转人工时传递模板版本、已完成节点、选择路径和备注。
10. **导入导出**:使用统一 JSON Schema;单条导入、单条导出、全部导出;导入先校验再进入草稿。
11. **问诊模板**:通过 `purpose` 字段统一管理,单实例(`code=triage_intake`),由路由层兜底自动启动;实例来源 `triage_fallback`,不计入模板完成率和模板辅助解决率;问诊结束自动回到标准模板选择界面(路由 + 手动双轨),详见 §5.4.4 和 §5.4.8。
12. **purpose 字段管理**:所有模板主记录新增 `purpose` 字段,值域 `troubleshooting` / `triage`,新建时强制选择且事后不允许切换;编辑器、列表、API 全部按 `purpose` 区分校验规则集、列表 Tab 和筛选条件,详见 §5.4.8。
### 3.2 P1:体验与运营增强
- AI 根据会话意图推荐模板,默认模板直接启动,详见 §5.4。
- 节点绑定知识库文章、下载文件、检测接口或审批入口。
- 模板灰度发布、适用部门/角色范围和定时生效。
- 使用漏斗、节点退出率、版本效果对比和过期提醒。
- 可视化拖拽编辑器;首版仍可保留 JSON 高级编辑能力。
### 3.3 P2:远期能力
- 节点触发自动化修复动作并支持回滚。
- 基于历史成功路径自动推荐模板优化方案。
- 模板跨租户/跨组织共享与模板市场。
### 3.4 非目标(Non-goals
1. **不建设通用 BPM 工作流引擎**:首版只服务 IT 故障排查,不承载审批和复杂业务编排。
2. **不直接自动执行高风险命令**:涉及终端变更、账号权限和安全策略的动作另行走自动化审批与审计。
3. **不替代知识库**:模板负责顺序和决策,详细知识内容通过引用关联。
4. **不让 AI 自动发布模板**:AI 可建议,发布责任仍由具备权限的管理员承担。
5. **不追求自由画布制图**:首版优先保证结构化、可校验、可执行,而不是视觉排版自由度。
---
## 四、用户故事
### 4.1 管理员
- 作为 IT 支持组长,我希望把 VPN、邮箱、账号等故障沉淀为标准模板,以便不同坐席按同一口径处理。
- 作为模板管理员,我希望发布前获得结构校验结果,以便避免断路、死循环和缺失分支进入生产。
- 作为模板管理员,我希望修改已发布模板时产生新版本,以便进行追溯、回滚和效果比较。
- 作为质量管理员,我希望查看模板采用率、完成率和节点退出率,以便持续优化无效步骤。
### 4.2 呼叫坐席
- 作为呼叫坐席,我希望根据员工问题快速搜索并启动模板,以便减少判断成本。
- 作为呼叫坐席,我希望看到当前步骤、已完成步骤和后续分支,以便清楚掌握排查进度。
- 作为呼叫坐席,我希望暂停后恢复同一执行实例,以便处理长耗时或跨班次问题。
### 4.3 员工
- 作为员工,我希望按照易懂的步骤完成自助排查,以便常见问题无需等待坐席。
- 作为员工,我希望在未解决时一键转人工,并自动携带已做过的操作,以便不重复描述和排查。
- 作为员工,我希望明确知道某一步是否会修改设备或账号,以便在执行前作出知情选择。
---
## 五、核心业务流程
### 5.1 模板生命周期
1. 管理员新建或导入模板,系统创建草稿。
2. 编辑基本信息、节点、分支、说明和风险提示。
3. 系统执行语法校验和结构校验;失败时禁止发布。
4. 管理员预览坐席端和员工端呈现效果。
5. 管理员填写版本说明并发布,生成版本快照。
6. 执行端只读取已发布且启用的版本。
7. 后续修改从已发布版本复制为新草稿;重新发布产生新版本。
8. 停用模板后禁止新启动;历史实例仍关联原版本快照。
### 5.2 坐席协同执行
模板选择采用 **“统一路由推荐 + 坐席手动覆盖”** 的双轨策略,详细策略见 §5.4。
1. 路由层根据员工描述、会话上下文、历史成功率推荐默认模板和候选模板。
2. 路由推荐结果**直接启动**默认模板的执行实例;坐席无需点击二次确认弹窗,会话区立即出现排查步骤栏。
3. 启动实例同时记录 `conversation_id``employee_id``agent_id``template_version_id``source``ai_recommend` / `agent`)和起始时间。
4. 坐席可以随时通过排查栏顶部的 “换其他模板” 入口手动覆盖;手动切换会触发确认提示,详见 §5.4。
5. 坐席完成步骤或选择判断分支,后端计算下一个合法节点并实时同步给会话双方。
6. 任一方断线重连时,从服务端恢复执行状态。
7. 结束时记录“已解决/未解决/转其他流程”、耗时、备注和终止原因。
### 5.3 员工自助转人工
1. 员工从 H5 选择已发布模板并开始自助排查。
2. 系统逐步展示节点,不暴露不相关分支和内部运维信息。
3. 员工选择“未解决/需要人工”时,创建或关联会话。
4. 坐席接入后可查看执行摘要,并从当前节点继续或重新选择模板。
---
### 5.4 模板选择策略 · 路由推荐与手动覆盖
#### 5.4.1 策略总览
坐席端采用 **“统一路由推荐 + 手动覆盖”** 的双轨结构:
- 路由层负责默认选择,坐席负责最终决定。
- 路由层不直接修改会话状态,只产生推荐结果;模板启动命令由坐席端发起或由路由层在坐席无操作时自动触发。
- 手动覆盖始终是合法路径,不被路由层阻断。
- **问诊模板结束时自动回到标准模板选择界面(路由 + 手动双轨)**,由服务端在执行 `triage_fallback` 实例的结束命令时复位路由状态,确保问诊不会把会话卡在兜底分支。
#### 5.4.2 路由层职责
| 输入 | 输出 |
|---|---|
| 员工首句描述、会话上下文、历史类似会话、AI 意图识别结果 | 默认模板 + 2~3 个候选模板 + 每个候选的推荐理由与置信度 |
| 员工补充信息或会话状态变化 | 重新计算候选并刷新推荐 |
| 路由无任何匹配 | 触发兜底 B:自动推荐“问诊对话模板” |
#### 5.4.3 启动方式:直接启动
1. 路由层给出推荐后,**默认模板直接启动**,不弹出“是否确认启动”的二次确认弹窗。
2. 排查栏立即出现,展示模板名称、版本、当前节点和“换其他模板”入口。
3. 若坐席在 3 秒内点击 “换其他模板”,系统视为“立即覆盖”,仍视为手动选择。
4. 自动启动的实例来源记为 `ai_recommend`,用于统计路由采纳率。
#### 5.4.4 路由失败的兜底 B:问诊对话模板
1. 当路由无匹配时,由后端创建一个特殊模板 `code=triage_intake`,版本独立维护。
2. 模板内容是一组短问题与是/否分支,例如:“故障现象是什么 / 是否仅发生在公司网络 / 是否影响其他同事 / 是否重启过终端 / 是否变更过密码”,目的不是排查根因,而是帮助坐席快速收敛问题方向。
3. 问诊对话模板走与正式模板一致的会话级实例、版本快照、同步和结束流程,不在 UI 上做特殊样式,仅在排查栏顶部显示 “问诊中” 标识。
4. 问诊模板结束或任一节点触发跳转时,自动回到标准模板选择界面(路由推荐 + 手动覆盖双轨)。
5. 问诊模板本身不计入“模板完成率”和“模板辅助解决率”,仅作为路由层的服务能力。
6. 问诊模板在数据库层面通过 `purpose=triage` 标识,与排查共享同一套 Schema、版本、执行实例、状态机和权限机制;不允许独立建表或独立 API。
7. 同一会话中 `source=triage_fallback` 的活跃实例与普通实例遵循同样的“同会话单活跃实例”约束,问诊实例被取消后下一次路由仍可能再次触发问诊,直到员工描述落入某个排查的覆盖范围。
#### 5.4.5 手动切换模板:必须提示并结束当前实例
1. 坐席点击 “换其他模板” 时,前端必须弹出确认提示:“切换模板将结束当前排查实例并开始新的实例,是否继续?”。
2. 确认后:
- 当前实例状态置为 `cancelled`,写入 `reason="agent_switched_template"`
- 新模板创建新执行实例;旧实例的路径摘要保留在会话归档中,但不计入当前活跃会话的执行进度。
3. 取消则保留当前实例继续推进。
4. **同一会话同一时刻只允许一个活跃实例**,避免多实例污染指标;该约束由后端在创建实例时校验,同一会话存在 `running` 实例时拒绝新的 `ai_recommend` 自动启动和 `agent` 手动启动。
#### 5.4.6 关键交互规则
| 场景 | 行为 |
|---|---|
| 路由高置信度推荐 | 直接启动默认模板 |
| 路由低置信度推荐 | 直接启动默认模板 + 在排查栏顶部显示“推荐置信度低,是否换其他模板?”提示 |
| 路由无匹配 | 自动启动问诊对话模板 |
| 坐席无操作 | 保持自动启动的实例继续推进 |
| 坐席主动换模板 | 弹出确认 → 旧实例 cancelled → 启动新实例 |
| 跨模板跳转(如 VPN → 网络) | 仅由坐席主动发起,不允许路由自动跨模板跳转 |
#### 5.4.7 与现有文档的差异说明
- 原 §3.2 P1 中描述 “AI 根据会话意图推荐模板,坐席确认后启动” 的措辞在本版被替换为 **“直接启动 + 手动覆盖”**;产品决策点已与本节对齐。
- 原 §5.2 第 1 步 “坐席在会话中搜索模板或接受 AI 推荐” 调整为 “路由直接启动 + 手动覆盖”,更准确反映实际操作。
- 原 §3.1 P0 #8 “坐席执行” 仍保留作为后端能力,但 UI 入口与交互由本节定义。
---
#### 5.4.8 与排查流程图的一体两面关系
排查流程(`purpose=troubleshooting`)和问诊对话(`purpose=triage`)**不是两个独立系统**,而是同一个模板体系的两个面向:
| 维度 | 排查流程 | 问诊对话 |
|---|---|---|
| 主导角色 | 坐席 | 员工 |
| 目标 | 标准化排查根因 | 收敛故障方向为下一轮排查铺路 |
| 节点粒度 | 中长流程,可能含终端检测、权限变更 | 短问题与是/否分支,≤10 节点 |
| 实例来源 | `ai_recommend` / `agent` | `triage_fallback` |
| 指标归属 | 计入完成率、辅助解决率 | 仅计转化率 |
| 结束行为 | 已解决/未解决/转其他流程 | 自动回到标准模板选择(路由 + 手动双轨) |
**统一规则**
1. 数据模型同一份:模板主表、`nodes[]`、版本、执行实例、状态机、WebSocket 同步、权限矩阵全部复用。
2. 唯一区分字段是 `purpose`,值域 `troubleshooting`(默认)/ `triage`
3. 新建模板时强制选择 `purpose`;模板创建后 `purpose` 字段不可修改,只能通过“基于此模板复制为另一种用途”的方式新建。
4. **UI 必须分而不拆**:管理后台列表按 `purpose` 分 TabTroubleshooting / Triage),编辑器顶部加“模板用途”选项,详见 §7.1。
5. **校验规则必须按 purpose 区分**:结构校验入口加载对应 `purpose` 的规则集,`triage` 模板限制节点数 ≤10、深度 ≤4、强制包含结束节点且 `result=redirect`、标签必须包含 `triage``intake`,详见 §6.1 FR-04。
6. **指标必须显式隔离**:指标服务层硬编码 `source=triage_fallback` 的实例不计入 `troubleshooting_*` 指标,仅计入 `troubleshooting_template_start_total{source=triage_conversion}` 转化率指标,详见 §11。
7. **权限必须显式隔离**`triage` 模板对员工**始终可见**,对坐席**始终只读**,不参与排查的部门/角色过滤矩阵,详见 §8.2。
8. **禁止新增独立页面或独立 API**`triage` 模板的入口、编辑、列表、导入导出全部复用现有分诊排查管理页面,不引入“问诊模板管理”新页面。
**一体两面的承诺**:用户在任一端(员工或坐席)看到的模板都来自同一份后端真相,只是 `purpose` 不同;运营和开发只需要维护一套系统。
---
## 六、功能需求与验收标准
### 6.1 模板管理
| 编号 | 需求 | 优先级 | 验收标准摘要 |
|---|---|---|---|
| FR-01 | 列表搜索、分类和状态过滤 | P0 | 组合筛选结果准确,空状态有引导 |
| FR-02 | 新建、复制、编辑、预览、归档 | P0 | 操作有权限校验和审计记录 |
| FR-03 | 节点树编辑和 JSON 高级编辑 | P0 | 两种模式使用同一 Schema,切换不丢数据 |
| FR-04 | 结构校验 | P0 | 无根、重复 ID、缺失分支、循环、无结束节点禁止发布;按 `purpose` 加载校验规则集:`troubleshooting` 节点数 ≤100、深度 ≤20`triage` 节点数 ≤10、深度 ≤4、必须包含结束节点且 `result=redirect`、标签必须含 `triage``intake` |
| FR-05 | 草稿、发布、停用、回滚 | P0 | 历史版本不可变,回滚产生新草稿 |
| FR-06 | 导入导出 | P0 | 导入错误定位到字段/节点;不得静默丢字段;导入时若未声明 `purpose` 默认 `troubleshooting` |
| FR-07 | 操作审计 | P0 | 可按模板、操作者、动作和日期查询;`purpose` 变更(仅允许在复制新建场景发生)需写入审计 |
| FR-13 | purpose 字段 | P0 | 模板主记录必含 `purpose` 字段;新建强制选择,事后不可修改;列表筛选和列表 Tab 按 `purpose` 区分 |
| FR-14 | 问诊模板统一管理 | P0 | 问诊模板与排查共用同一管理入口、编辑器、版本、审计和 API;不在前端新增独立页面,在后端不新增独立表 |
### 6.2 执行端
| 编号 | 需求 | 优先级 | 验收标准摘要 |
|---|---|---|---|
| FR-08 | 创建会话级执行实例 | P0 | 同一会话可暂停恢复;状态持久化 |
| FR-09 | 服务端推进节点 | P0 | 客户端不能跳至非法节点;分支结果可追溯 |
| FR-10 | 坐席/员工实时同步 | P0 | 正常网络下状态同步 P95 ≤2 秒;重连后恢复一致 |
| FR-11 | 自助转人工上下文 | P0 | 坐席能看到模板版本、路径、已完成步骤和员工备注 |
| FR-12 | 结束结果采集 | P0 | 必填解决结果;异常退出可标记原因 |
### 6.3 Given / When / Then
1. **发布校验**
Given 草稿存在缺失的“否”分支,When 管理员点击发布,Then 系统拒绝发布并定位问题节点。
2. **版本隔离**
Given 会话正在执行 v1.0When 管理员发布 v1.1Then该会话继续执行 v1.0,新会话使用 v1.1。
3. **停用行为**
Given 模板已停用,When 新用户搜索模板,Then 不返回该模板;已有执行实例仍可完成。
4. **跨端同步**
Given 坐席和员工处于同一执行实例,When 坐席完成节点,Then员工端在 2 秒内显示相同进度。
5. **断线恢复**
Given 客户端在第 4 个节点断线,When 重新连接,Then从服务端恢复至第 4 个节点且历史路径完整。
6. **转人工**
Given 员工已完成 3 个节点仍未解决,When 点击转人工,Then坐席收到执行摘要且不要求员工重复已完成步骤。
7. **越权保护**
Given 普通坐席登录,When 调用创建或发布接口,Then返回 403 并写入安全日志。
8. **并发保护**
Given 两名管理员同时编辑同一草稿,When后保存者提交旧版本号,Then返回 409 并提示刷新或比较差异。
9. **purpose 不可修改**
Given 已存在模板 `purpose=troubleshooting`When 尝试修改 `purpose` 字段为 `triage`,Then 返回 400 并提示“请基于此模板复制为另一种用途”。
10. **问诊模板独立指标**
Given 路由层无匹配自动启动 `triage_intake` 实例,When 实例结束,Then 该实例不计入 `troubleshooting_template_complete_total``troubleshooting_template_resolved_total`,仅计入 `troubleshooting_template_start_total{source=triage_conversion}`
11. **问诊结束回到标准模板选择**
Given 问诊实例正常结束,When 坐席回到会话区,Then 排查栏消失并恢复路由 + 手动双轨状态,可由路由层再次推荐新模板。
12. **Triage 模板可见性**
Given 员工登录 H5When 查询可用模板列表,Then `purpose=triage` 的模板始终可见,不受部门或角色可见范围限制。
---
## 七、信息架构与页面
### 7.1 管理后台
- 导航:运营配置 / 分诊排查管理
- 页面:模板列表(**按 `purpose` 分 TabTroubleshooting / Triage**)、模板编辑/预览、版本历史、发布确认、操作审计、使用分析(P1)
- 模板编辑区顶部增加 **“模板用途” 选项**,新建时强制选择 `purpose`,事后不可修改
- 模板编辑区:基本信息(含 `purpose`)、结构化节点树、JSON 高级模式、实时校验(按 `purpose` 加载校验规则集)、双端预览
- 排查 Tab 的表头显示当前选中模板的 `purpose` 标识,避免运营误编辑问诊模板为排查
### 7.2 坐席工作台
- 会话区底部“排查步骤”栏
- 模板选择器、最优路径、完整决策树、当前节点操作、暂停/结束
- 展示与会话关联的执行摘要
- **当执行实例 `source=triage_fallback` 时,排查栏顶部显示 “问诊中” 标识**
- 问诊实例结束时排查栏收起并恢复路由 + 手动双轨状态
### 7.3 员工 H5
- 自助排查入口、分类/搜索、模板详情、逐步执行页、解决结果页、转人工确认页
- 内部敏感说明不向员工显示
- **员工看到的 Triage 模板永远在分类首位(不参与部门/角色可见范围过滤),且作为路由无匹配时的兜底入口**
---
## 八、数据、权限与合规要求
### 8.1 关键数据
- 模板主记录、不可变版本快照、节点定义、执行实例、节点执行日志、发布审计日志。
- 执行日志仅保存排查必要信息,不在模板节点中采集账号密码、验证码、密钥等敏感数据。
- 会话归档时应保留模板版本号和路径摘要,避免模板更新后历史记录失真。
### 8.2 权限矩阵
| 能力 | 管理员/组长 | 呼叫坐席 | 员工 | 审计员 |
|---|:---:|:---:|:---:|:---:|
| 查看已发布排查 | ✓ | ✓ | ✓(员工可见范围) | ✓ |
| 查看已发布问诊模板(`purpose=triage`) | ✓ | ✓(只读) | ✓(**始终可见,不受部门/角色过滤**) | ✓ |
| 创建/编辑草稿 | ✓ | - | - | - |
| 发布/停用/回滚 | ✓ | - | - | - |
| 修改 `purpose` 字段 | -(创建后不可修改) | - | - | - |
| 启动与执行 | 可测试 | ✓ | ✓(triage 永远允许) | - |
| 查看执行明细 | ✓ | 当前会话 | 本人实例 | ✓ |
| 查看审计日志 | ✓ | - | - | ✓ |
### 8.3 合规
- 操作日志和执行日志按照最小必要原则采集,并遵循《个人信息保护法》相关要求。
- 节点若涉及终端检测、截屏、日志采集或权限变更,必须明确告知用途并按既有授权流程执行。
- 导出的模板文件不得包含员工个人数据、真实凭据和生产密钥。
- `purpose=triage` 的模板对员工始终可见,**不得在该模板的可见范围字段中写入敏感过滤条件**(如部门、角色、外部标签),避免出现“兜底模板被过滤掉”的场景。
---
## 九、依赖与约束
1. 依赖管理后台 RBAC、会话服务、WebSocket 单进程消息管理、员工 H5 认证和数据库迁移能力。
2. 当前实现中后端 CRUD 使用进程内 Mock 数据,正式开发必须切换到数据库。
3. 当前管理端列表期望数组,而后端返回 `{items,total}`,需统一接口契约。
4. 当前存在 `flowchart``root_node``path_steps` 多套结构,必须建立唯一 Schema 和迁移规则。
5. 当前 H5 自助页面未正式注册路由,坐席与员工执行状态未形成后端闭环。
---
## 十、风险与对策
| 风险 | 影响 | 对策 |
|---|---|---|
| 模板内容过时 | 引导错误,扩大故障 | 设置负责人、复审周期、过期提醒和一键停用 |
| 流程结构复杂 | 管理成本和执行放弃率上升 | 限制深度,提供结构校验和双端预览 |
| 发布修改影响执行中会话 | 历史路径失真 | 执行实例固定绑定版本快照 |
| 双端状态不一致 | 重复或跳步 | 服务端作为唯一状态源,事件幂等和重连恢复 |
| 模板包含敏感信息 | 合规与安全风险 | 字段审查、导出脱敏、发布权限和审计 |
| 指标驱动坐席机械执行 | 忽略个案 | 允许合规跳出并记录原因,不以完成率单一考核 |
| 路由推荐结果不可信时坐席仍机械跟随 | 排查方向偏差 | 路由低置信度时显示提示;问诊模板兜底;手动覆盖始终开放 |
| 同一会话存在多个并发实例 | 指标污染、转人工摘要混乱 | 服务端约束“同一会话同一时刻仅一个活跃实例”;手动切换前必须确认 |
---
## 十一、开放问题
| 问题 | 责任方 | 是否阻塞 |
|---|---|:---:|
| 模板发布权限是否仅限管理员,还是组长也可发布? | 产品/安全 | 是 |
| 员工可见模板是否按部门、设备或角色过滤? | 产品/运营 | 是 |
| 已发布模板删除采用归档还是硬删除?建议仅归档 | 产品/技术 | 是 |
| 模板节点最大深度和节点数量限制 | 产品/技术 | 否 |
| 执行日志保留期限及会话归档策略 | 安全/合规 | 是 |
| 首批生产模板的负责人和复审周期 | 运营 | 否 |
---
## 十二、上线阶段建议
1. **阶段 A:管理闭环**——数据库持久化、统一 Schema、草稿/发布/版本、RBAC、审计。
2. **阶段 B:坐席闭环**——会话级实例、步骤推进、暂停恢复、结果采集。
3. **阶段 C:员工自助**——H5 路由、双端同步、转人工上下文。
4. **阶段 D:智能与运营**——AI 推荐、效果看板、灰度和内容治理。
上线闸门:P0 验收通过、独立测试用例完备、端到端验证通过、部署与回滚方案齐备后,方可标记为生产可用。
---
## 十三、变更记录
| 日期 | 版本 | 变更内容 | 变更人 | 变更原因 |
|---|---|---|---|---|
| 2026-06-06 | v1.0 | 创建简版 PRD,定义排查步骤栏、数据模型和基础 API | 宋献 | 初始需求 |
| 2026-07-28 | v1.1 | 补充产品定位、角色与场景、完整范围、非目标、指标、权限、验收标准、风险和生产化路线 | Duckula | 文档规范化补充,解决存量文档不完整问题 |
| 2026-07-28 | v1.2 | 新增 §5.4 模板选择策略:明确“统一路由推荐 + 手动覆盖”双轨;路由推荐默认模板直接启动;路由无匹配时兜底使用问诊对话模板;手动切换模板必须确认并结束当前实例;同会话单实例约束由后端校验 | 宋献 + Duckula | 完成坐席端选择策略的产品决策 |
| 2026-07-28 | v1.3 | 升级到“一体两面”模型:所有模板通过 `purpose` 字段(`troubleshooting`/`triage`)统一管理;§3.1 P0 新增 #11 问诊模板与 #12 purpose 字段;新增 §5.4.8 “与排查流程图的一体两面关系”;§6.1 新增 FR-13/FR-14;§6.3 新增验收用例 #9~#12;§7 页面分 Tab + 模板用途选项 + 问诊中标识;§8.2 权限矩阵拆分排查/问诊;§11 指标增加 `triage_conversion`;§13 变更记录追加 | 宋献 + Duckula | 落实用户决策:排查流程与问诊对话是同一系统的两个面向,通过 `purpose` 区分而非分系统 |