Files
wecom_it_smart_desk/docs/01-产品设计/知识库迭代-未实现功能原型设计-20260711.md
T
Simon bea288e414 feat: 2026-07-11 全量更新 - 代办集成+会议室预定+知识迭代修复+UI统一+Bug修复
== 已部署上线 (9项) ==
- 代办事项真实数据源集成 (企微审批API 8bug修复链)
- H5/坐席端 Logo样式统一+绿色背景
- 视频引导页修复 (localStorage key v2)
- 坐席端 v9 Vue版本修复 (ElMessage._context)
- 截图按钮 v10 修复 (getDisplayMedia user gesture)
- 扫码样式恢复+H5扫码登录跳转修复
- H5截图快捷键提示

== 代码完成待部署 (3项) ==
- 知识迭代3Bug修复 (#8 POST端点/#7 MERGE幂等/#6 过期检查)
- 会议室预定-小鱼易联终端 (40文件, 40/40测试通过)
- IT资产升级审批推送 (asset_service.py)

== 需求文档 (2项) ==
- 坐席端AI辅助消息框-PRD (4项新功能确认)
- 坐席端布局优化建议 v2.0 (7天计划)

== 新增文档 ==
- 日报-2026-07-11.md
- 知识迭代Bug修复报告-20260711.md
- 会议室预定-部署指南.md
- CHANGELOG.md 更新

== 测试 ==
- test_todo_integration.py: 40/40
- test_meetingroom.py: 40/40
- test_bugfix_ki_suggestions.py: 21/21
2026-07-11 23:13:10 +08:00

1513 lines
102 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.
# 知识库迭代 — 未实现功能原型设计
> **版本**: v1.0
> **日期**: 2026-07-11
> **作者**: 产品经理
> **关联PRD**: `docs/02-产品需求/IT智能服务台-产品需求文档PRD-v2.md` §4 知识库迭代补充需求
> **关联原型**: `docs/04-原型设计/prototypes-原型图/knowledge-iteration-v1.html`
---
## 目录
1. [设计概述](#1-设计概述)
2. [分诊交互原型](#2-分诊交互原型)
3. [拓扑预览原型](#3-拓扑预览原型)
4. [代答排除原型](#4-代答排除原型)
5. [统一设计规范](#5-统一设计规范)
---
## 1. 设计概述
### 1.1 背景
IT智能服务台"知识库迭代与痛点缓解"功能集中,以下3个功能目前仅有原型HTML或前端组件,尚未完整实现后端逻辑与完整交互链路:
| 功能 | PRD编号 | 当前状态 | 本次设计范围 |
|------|---------|---------|-------------|
| 分诊交互 | P2-02 | 仅前端组件,未接入后端 | H5端分诊流程 + 坐席端分诊看板 |
| 拓扑预览 | P2-01子项 | 仅原型HTML中的SVG示意 | 管理后台完整拓扑预览页面 |
| 代答排除 | P2-03子项 | 仅原型HTML中的排除控件 | 管理后台代答排除配置页面 |
### 1.2 设计目标
| 目标 | 描述 |
|------|------|
| **G1 消除歧义** | 将模糊的功能描述转化为具体到按钮文字、字段名称、状态值的页面原型,供用户确认后进入开发 |
| **G2 风格统一** | 复用现有管理后台(Element Plus + 企微浅色风格)与H5端(Vant4移动适配)的UI规范 |
| **G3 覆盖完整** | 每个功能覆盖正常流程与异常流程,包含空状态、加载状态、错误状态 |
### 1.3 设计原则
| 原则 | 说明 |
|------|------|
| **P1 用户视角优先** | 原型从用户操作路径出发设计,而非从数据结构倒推 |
| **P2 最小认知负荷** | 每个页面聚焦一个核心任务,避免信息堆叠 |
| **P3 渐进式披露** | 复杂信息分层展示,默认折叠次要信息 |
| **P4 可审计** | 关键操作(路由决策、规则变更)留有操作日志 |
### 1.4 适用范围
| 端 | 技术栈 | 设计风格 |
|----|--------|---------|
| H5员工端 | Vue3 + Vant4 | 移动端适配,企微内嵌H5 |
| 坐席端 | Vue3 + Element Plus | 三栏工作台,蓝色系 |
| 管理后台 | Vue3 + Element Plus + Tailwind CSS | 企微浅色扁平风格,accent=#07C160 |
### 1.5 关联决策约束(来自PRD §4.3)
| 编号 | 决策 | 对原型的影响 |
|------|------|-------------|
| D1 | 知识迭代产出直接写 Neo4j 图 | 拓扑预览需展示 Neo4j 图谱数据结构 |
| D2 | 低于置信阈值转人工 | 分诊交互需包含置信度门控横幅 |
| D3 | 坐席可直接回答AI推荐的问题 | 代答排除需与坐席代答场景配合 |
| D5 | 知识建议需训练师审批 | 拓扑预览需显示节点审核状态 |
---
## 2. 分诊交互原型
### 2.1 功能概述
当员工发起IT请求时,系统进行智能分诊,根据问题类型、紧急程度、用户画像等将请求路由到合适的处理渠道:
| 路由渠道 | 触发条件 | 员工体验 |
|---------|---------|---------|
| AI自助 | 置信度 ≥ 70%,非排除类型 | AI直接回复,分诊卡片辅助确认 |
| 自动审批 | 意图识别为审批类(12种/18流程) | 推送审批卡片,点击直跳审批页 |
| 人工坐席 | 置信度 < 70%,或命中排除规则,或VIP用户 | 转接坐席,携带上下文快照 |
### 2.2 H5端分诊交互流程(员工视角)
#### 2.2.1 页面原型 — 分诊确认卡片(AI自助场景)
```html
<!-- H5端:聊天界面中的分诊确认卡片 -->
<!-- 场景:员工提问后,AI置信度≥70%,展示分诊卡片辅助确认 -->
<div style="max-width:375px;margin:0 auto;background:#f5f6fa;font-family:-apple-system,sans-serif">
<!-- 顶部导航栏 -->
<div style="background:#07C160;height:44px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px;font-weight:600">IT智能服务台</div>
<!-- 聊天区域 -->
<div style="padding:12px;min-height:500px">
<!-- 员工消息 -->
<div style="display:flex;justify-content:flex-end;margin-bottom:12px">
<div style="background:#07C160;color:#fff;padding:8px 14px;border-radius:12px 12px 4px 12px;max-width:75%;font-size:14px">Outlook登录一直失败,提示无法连接服务器</div>
</div>
<!-- AI回复 + 置信度标签 -->
<div style="display:flex;justify-content:flex-start;margin-bottom:8px">
<div style="background:#fff;border:1px solid #e5e7eb;padding:8px 14px;border-radius:12px 12px 12px 4px;max-width:75%;font-size:14px">
<div style="display:flex;align-items:center;gap:6px;margin-bottom:4px">
<span style="font-size:11px;color:#9ca3af">AI助手</span>
<span style="font-size:10px;background:#dcfce7;color:#16a34a;padding:1px 6px;border-radius:8px;font-weight:600">🟢 85%</span>
</div>
您好!关于Outlook登录失败的问题,我先帮您确认一下具体情况 👇
</div>
</div>
<!-- 分诊确认卡片(核心组件) -->
<div style="background:#fff;border:1.5px solid #07C160;border-radius:12px;padding:16px;margin:10px 0;box-shadow:0 2px 12px rgba(7,193,96,0.12);position:relative">
<div style="position:absolute;top:-10px;left:16px;background:#07C160;color:#fff;font-size:11px;padding:2px 10px;border-radius:10px;font-weight:600">🤖 AI分诊</div>
<div style="font-size:12px;color:#9ca3af;margin-bottom:8px;margin-top:4px">问题确认 · 第 1/3 步</div>
<div style="font-weight:600;font-size:15px;margin-bottom:12px;color:#1f2937">Outlook是否弹出了具体的错误提示?</div>
<!-- 分诊选项 -->
<div style="display:flex;flex-direction:column;gap:8px">
<div style="display:flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid #e5e7eb;border-radius:8px;cursor:pointer">
<div style="width:18px;height:18px;border-radius:50%;border:2px solid #d1d5db;flex-shrink:0"></div>
<span style="font-size:14px;flex:1">弹出了,提示"无法连接到服务器"</span>
<span style="font-size:12px;color:#07C160;font-weight:600">68%</span>
</div>
<div style="display:flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid #e5e7eb;border-radius:8px;cursor:pointer">
<div style="width:18px;height:18px;border-radius:50%;border:2px solid #d1d5db;flex-shrink:0"></div>
<span style="font-size:14px;flex:1">弹出了,提示"密码错误"</span>
<span style="font-size:12px;color:#07C160;font-weight:600">22%</span>
</div>
<div style="display:flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid #e5e7eb;border-radius:8px;cursor:pointer">
<div style="width:18px;height:18px;border-radius:50%;border:2px solid #d1d5db;flex-shrink:0"></div>
<span style="font-size:14px;flex:1">没有弹出任何提示,直接闪退</span>
<span style="font-size:12px;color:#f59e0b;font-weight:600">8%</span>
</div>
<div style="display:flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid #e5e7eb;border-radius:8px;cursor:pointer">
<div style="width:18px;height:18px;border-radius:50%;border:2px solid #d1d5db;flex-shrink:0"></div>
<span style="font-size:14px;flex:1">其他情况</span>
<span style="font-size:12px;color:#9ca3af;font-weight:600">2%</span>
</div>
</div>
<!-- 底部:专家模式开关 + 转人工 -->
<div style="display:flex;justify-content:space-between;align-items:center;margin-top:12px;padding-top:10px;border-top:1px solid #f3f4f6">
<span style="font-size:12px;color:#9ca3af">专家模式(一键多步)</span>
<div style="width:36px;height:20px;border-radius:10px;background:#07C160;position:relative">
<div style="width:16px;height:16px;border-radius:50%;background:#fff;position:absolute;top:2px;left:18px"></div>
</div>
</div>
</div>
<!-- 转人工入口 -->
<div style="text-align:center;margin-top:8px;font-size:12px;color:#9ca3af">
没有匹配的选项?<a style="color:#07C160;text-decoration:none;font-weight:500">🔔 转人工协助</a>
</div>
</div>
</div>
```
#### 2.2.2 页面原型 — 置信度门控横幅(低置信转人工场景)
```html
<!-- H5端:置信度低于70%时的门控横幅 -->
<div style="max-width:375px;margin:0 auto;background:#f5f6fa;font-family:-apple-system,sans-serif">
<div style="padding:12px;min-height:400px">
<!-- 员工消息 -->
<div style="display:flex;justify-content:flex-end;margin-bottom:12px">
<div style="background:#07C160;color:#fff;padding:8px 14px;border-radius:12px 12px 4px 12px;max-width:75%;font-size:14px">打印机突然不工作了,灯一直闪</div>
</div>
<!-- AI回复(低置信) -->
<div style="display:flex;justify-content:flex-start;margin-bottom:8px">
<div style="background:#fff;border:1px solid #e5e7eb;padding:8px 14px;border-radius:12px 12px 12px 4px;max-width:75%;font-size:14px">
<div style="display:flex;align-items:center;gap:6px;margin-bottom:4px">
<span style="font-size:11px;color:#9ca3af">AI助手</span>
<span style="font-size:10px;background:#fee2e2;color:#ef4444;padding:1px 6px;border-radius:8px;font-weight:600">🔴 48%</span>
</div>
关于您描述的打印机故障,可能涉及硬件层面,我已收集以下上下文供坐席参考...
</div>
</div>
<!-- 置信度门控横幅(核心组件) -->
<div style="background:#fffbeb;border:1px solid #f59e0b;border-radius:8px;padding:12px 14px;margin:10px 0">
<div style="display:flex;align-items:flex-start;gap:10px">
<span style="font-size:18px">⚠️</span>
<div style="flex:1">
<div style="font-size:13px;color:#1f2937;line-height:1.5">
<span style="background:#f59e0b;color:#fff;font-size:11px;padding:1px 8px;border-radius:8px;font-weight:600">置信度 48%</span>
低于安全阈值(70%),AI可能无法准确回答
</div>
<div style="background:#fafafa;border-radius:6px;padding:8px 10px;margin-top:6px;font-size:12px;color:#6b7280">
已收集上下文:打印机型号 HP M404dn · 错误灯闪烁 · 最近更换过墨盒 · 网络连接正常
</div>
</div>
</div>
<div style="text-align:right;margin-top:8px">
<span style="color:#07C160;font-size:13px;cursor:pointer;text-decoration:underline;font-weight:500">转人工 →</span>
</div>
</div>
<!-- 已转人工确认消息 -->
<div style="display:flex;justify-content:flex-start;margin-bottom:8px">
<div style="background:#e8f5e9;border:1px solid #07C160;padding:10px 14px;border-radius:12px 12px 12px 4px;max-width:75%;font-size:14px;text-align:center">
✅ 已为您转接人工坐席<br>
<span style="font-size:12px;color:#6b7280">预计等待 2 分钟,当前排队第 1 位</span>
</div>
</div>
</div>
</div>
```
#### 2.2.3 页面原型 — 审批卡片路由场景
```html
<!-- H5端:意图识别为审批类,推送审批卡片 -->
<div style="max-width:375px;margin:0 auto;background:#f5f6fa;font-family:-apple-system,sans-serif">
<div style="padding:12px;min-height:350px">
<!-- 员工消息 -->
<div style="display:flex;justify-content:flex-end;margin-bottom:12px">
<div style="background:#07C160;color:#fff;padding:8px 14px;border-radius:12px 12px 4px 12px;max-width:75%;font-size:14px">我需要申请一台笔记本电脑</div>
</div>
<!-- AI回复 -->
<div style="display:flex;justify-content:flex-start;margin-bottom:8px">
<div style="background:#fff;border:1px solid #e5e7eb;padding:8px 14px;border-radius:12px 12px 12px 4px;max-width:75%;font-size:14px">
<div style="display:flex;align-items:center;gap:6px;margin-bottom:4px">
<span style="font-size:11px;color:#9ca3af">AI助手</span>
<span style="font-size:10px;background:#dcfce7;color:#16a34a;padding:1px 6px;border-radius:8px;font-weight:600">🟢 95%</span>
<span style="font-size:10px;background:#dbeafe;color:#3b82f6;padding:1px 6px;border-radius:8px;font-weight:600">审批路由</span>
</div>
已识别为设备申请,请选择具体的审批类型 👇
</div>
</div>
<!-- 审批卡片(核心组件) -->
<div style="background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:14px;margin:10px 0">
<div style="display:flex;align-items:center;gap:8px;margin-bottom:10px">
<span style="font-size:11px;background:#e8f5e9;color:#07C160;padding:2px 8px;border-radius:8px;font-weight:600">📋 设备申请</span>
<span style="font-size:11px;color:#9ca3af;margin-left:auto">3个可选流程</span>
</div>
<div style="display:flex;flex-direction:column;gap:8px">
<div style="border:1px solid #e5e7eb;border-radius:8px;padding:10px 12px;cursor:pointer">
<div style="font-weight:600;font-size:14px;color:#1f2937">IT资产领用登记</div>
<div style="font-size:12px;color:#6b7280;margin-top:2px">企微审批 · 新领用设备</div>
<div style="text-align:right;margin-top:4px"><span style="font-size:12px;color:#07C160;font-weight:500">去申请 →</span></div>
</div>
<div style="border:1px solid #e5e7eb;border-radius:8px;padding:10px 12px;cursor:pointer">
<div style="font-weight:600;font-size:14px;color:#1f2937">IT资产借用申请</div>
<div style="font-size:12px;color:#6b7280;margin-top:2px">企微审批 · 临时借用设备</div>
<div style="text-align:right;margin-top:4px"><span style="font-size:12px;color:#07C160;font-weight:500">去申请 →</span></div>
</div>
<div style="border:1px solid #e5e7eb;border-radius:8px;padding:10px 12px;cursor:pointer">
<div style="font-weight:600;font-size:14px;color:#1f2937">IT设备升级与硬件维修</div>
<div style="font-size:12px;color:#6b7280;margin-top:2px">运维平台 · 设备升级/维修</div>
<div style="text-align:right;margin-top:4px"><span style="font-size:12px;color:#3b82f6;font-weight:500">去申请 →</span></div>
</div>
</div>
</div>
<div style="text-align:center;margin-top:8px;font-size:12px;color:#9ca3af">
不确定选哪个?<a style="color:#07C160;text-decoration:none;font-weight:500">🔔 转人工协助</a>
</div>
</div>
</div>
```
#### 2.2.4 页面原型 — 分诊中加载状态 & 超时状态
```html
<!-- H5端:AI正在分诊分析中的加载状态 -->
<div style="max-width:375px;margin:0 auto;background:#f5f6fa;font-family:-apple-system,sans-serif">
<div style="padding:12px;min-height:200px">
<div style="display:flex;justify-content:flex-end;margin-bottom:12px">
<div style="background:#07C160;color:#fff;padding:8px 14px;border-radius:12px 12px 4px 12px;max-width:75%;font-size:14px">VPN连不上,报错691</div>
</div>
<div style="display:flex;justify-content:flex-start;margin-bottom:8px">
<div style="background:#fff;border:1px solid #e5e7eb;padding:12px 14px;border-radius:12px 12px 12px 4px;max-width:75%">
<div style="display:flex;align-items:center;gap:8px">
<div style="display:flex;gap:3px">
<div style="width:6px;height:6px;border-radius:50%;background:#07C160"></div>
<div style="width:6px;height:6px;border-radius:50%;background:#07C160;opacity:0.6"></div>
<div style="width:6px;height:6px;border-radius:50%;background:#07C160;opacity:0.3"></div>
</div>
<span style="font-size:13px;color:#6b7280">AI正在分诊分析中...</span>
</div>
<div style="font-size:11px;color:#9ca3af;margin-top:6px">正在识别问题类型 · 匹配知识库 · 评估紧急程度</div>
</div>
</div>
</div>
</div>
```
```html
<!-- H5端:分诊超时或失败时的兜底状态 -->
<div style="max-width:375px;margin:0 auto;background:#f5f6fa;font-family:-apple-system,sans-serif">
<div style="padding:12px;min-height:200px">
<div style="display:flex;justify-content:flex-end;margin-bottom:12px">
<div style="background:#07C160;color:#fff;padding:8px 14px;border-radius:12px 12px 4px 12px;max-width:75%;font-size:14px">系统突然蓝屏了,代码0x0000007B</div>
</div>
<div style="display:flex;justify-content:flex-start;margin-bottom:8px">
<div style="background:#fff;border:1px solid #fecaca;padding:10px 14px;border-radius:12px 12px 12px 4px;max-width:75%">
<div style="display:flex;align-items:center;gap:6px;margin-bottom:6px">
<span style="font-size:16px">⚠️</span>
<span style="font-size:13px;color:#ef4444;font-weight:600">分诊超时</span>
</div>
<div style="font-size:13px;color:#6b7280;line-height:1.5">AI分诊服务暂时不可用,已自动为您转接人工坐席。</div>
</div>
</div>
<div style="display:flex;justify-content:flex-start;margin-bottom:8px">
<div style="background:#e8f5e9;border:1px solid #07C160;padding:10px 14px;border-radius:12px 12px 12px 4px;max-width:75%;font-size:14px;text-align:center">
✅ 已为您转接人工坐席<br>
<span style="font-size:12px;color:#6b7280">预计等待 3 分钟,当前排队第 2 位</span>
</div>
</div>
</div>
</div>
```
### 2.3 坐席端分诊看板原型(坐席视角)
#### 2.3.1 页面原型 — 分诊看板主页面
```html
<!-- 坐席端:分诊看板主页面 -->
<!-- 布局:左侧待分诊列表 + 右侧分诊详情与路由操作 -->
<div style="background:#f5f7fa;font-family:'PingFang SC',sans-serif;font-size:13px;padding:16px">
<!-- 页面标题栏 -->
<div style="display:flex;align-items:center;justify-content:space-between;margin-bottom:16px">
<div style="display:flex;align-items:center;gap:10px">
<h2 style="font-size:18px;font-weight:600;margin:0;color:#1e293b">🔀 智能分诊看板</h2>
<span style="background:#dbeafe;color:#3b82f6;font-size:11px;padding:2px 8px;border-radius:10px;font-weight:600">实时</span>
</div>
<div style="display:flex;gap:8px">
<button style="padding:6px 14px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;cursor:pointer;font-size:13px">📥 导出</button>
<button style="padding:6px 14px;border:none;border-radius:6px;background:#3b82f6;color:#fff;cursor:pointer;font-size:13px">⚙️ 分诊规则配置</button>
</div>
</div>
<!-- 统计概要栏 -->
<div style="display:flex;gap:12px;margin-bottom:16px">
<div style="flex:1;background:#fff;border-radius:8px;padding:12px;text-align:center;border-left:3px solid #f59e0b">
<div style="font-size:24px;font-weight:700;color:#f59e0b">8</div><div style="font-size:12px;color:#64748b">待分诊</div>
</div>
<div style="flex:1;background:#fff;border-radius:8px;padding:12px;text-align:center;border-left:3px solid #3b82f6">
<div style="font-size:24px;font-weight:700;color:#3b82f6">23</div><div style="font-size:12px;color:#64748b">今日已分诊</div>
</div>
<div style="flex:1;background:#fff;border-radius:8px;padding:12px;text-align:center;border-left:3px solid #22c55e">
<div style="font-size:24px;font-weight:700;color:#22c55e">15</div><div style="font-size:12px;color:#64748b">AI自助解决</div>
</div>
<div style="flex:1;background:#fff;border-radius:8px;padding:12px;text-align:center;border-left:3px solid #8b5cf6">
<div style="font-size:24px;font-weight:700;color:#8b5cf6">6</div><div style="font-size:12px;color:#64748b">转人工坐席</div>
</div>
<div style="flex:1;background:#fff;border-radius:8px;padding:12px;text-align:center;border-left:3px solid #07C160">
<div style="font-size:24px;font-weight:700;color:#07C160">2</div><div style="font-size:12px;color:#64748b">自动审批</div>
</div>
<div style="flex:1;background:#fff;border-radius:8px;padding:12px;text-align:center;border-left:3px solid #ef4444">
<div style="font-size:24px;font-weight:700;color:#ef4444">2.3min</div><div style="font-size:12px;color:#64748b">平均分诊耗时</div>
</div>
</div>
<!-- 主体区域:左列表 + 右详情 -->
<div style="display:flex;gap:12px;height:480px">
<!-- 左侧:待分诊列表 -->
<div style="width:380px;background:#fff;border-radius:8px;display:flex;flex-direction:column;overflow:hidden">
<div style="padding:10px 14px;border-bottom:1px solid #e2e8f0;display:flex;align-items:center;justify-content:space-between">
<span style="font-weight:600;font-size:14px;color:#1e293b">待分诊请求</span>
<div style="display:flex;gap:6px;align-items:center">
<select style="font-size:12px;padding:3px 8px;border:1px solid #e2e8f0;border-radius:4px;background:#fff">
<option>全部紧急度</option><option>🔴 紧急</option><option>🟡 一般</option><option>🟢 低</option>
</select>
<select style="font-size:12px;padding:3px 8px;border:1px solid #e2e8f0;border-radius:4px;background:#fff">
<option>全部类型</option><option>硬件</option><option>软件</option><option>网络</option><option>账号</option>
</select>
</div>
</div>
<div style="flex:1;overflow-y:auto">
<!-- 选中项 -->
<div style="padding:10px 14px;border-bottom:1px solid #f1f5f9;background:#eff6ff;border-left:3px solid #3b82f6;cursor:pointer">
<div style="display:flex;align-items:center;justify-content:space-between;margin-bottom:4px">
<span style="font-weight:600;font-size:13px;color:#1e293b">Outlook登录失败</span>
<span style="font-size:10px;background:#fee2e2;color:#ef4444;padding:1px 6px;border-radius:8px;font-weight:600">🔴 紧急</span>
</div>
<div style="font-size:12px;color:#64748b;margin-bottom:4px">张三 · 财务部 · VIP用户</div>
<div style="display:flex;gap:6px;align-items:center">
<span style="font-size:10px;background:#e8f5e9;color:#07C160;padding:1px 6px;border-radius:8px">软件</span>
<span style="font-size:10px;background:#fef3c7;color:#b45309;padding:1px 6px;border-radius:8px">置信 72%</span>
<span style="font-size:11px;color:#9ca3af;margin-left:auto">2分钟前</span>
</div>
</div>
<!-- 未选中项 -->
<div style="padding:10px 14px;border-bottom:1px solid #f1f5f9;cursor:pointer">
<div style="display:flex;align-items:center;justify-content:space-between;margin-bottom:4px">
<span style="font-weight:600;font-size:13px;color:#1e293b">打印机卡纸</span>
<span style="font-size:10px;background:#fef3c7;color:#b45309;padding:1px 6px;border-radius:8px;font-weight:600">🟡 一般</span>
</div>
<div style="font-size:12px;color:#64748b;margin-bottom:4px">李四 · 行政部</div>
<div style="display:flex;gap:6px;align-items:center">
<span style="font-size:10px;background:#e8f5e9;color:#07C160;padding:1px 6px;border-radius:8px">硬件</span>
<span style="font-size:10px;background:#fee2e2;color:#ef4444;padding:1px 6px;border-radius:8px">置信 48%</span>
<span style="font-size:11px;color:#9ca3af;margin-left:auto">5分钟前</span>
</div>
</div>
<div style="padding:10px 14px;border-bottom:1px solid #f1f5f9;cursor:pointer">
<div style="display:flex;align-items:center;justify-content:space-between;margin-bottom:4px">
<span style="font-weight:600;font-size:13px;color:#1e293b">VPN连接超时</span>
<span style="font-size:10px;background:#fef3c7;color:#b45309;padding:1px 6px;border-radius:8px;font-weight:600">🟡 一般</span>
</div>
<div style="font-size:12px;color:#64748b;margin-bottom:4px">王五 · 技术部</div>
<div style="display:flex;gap:6px;align-items:center">
<span style="font-size:10px;background:#dbeafe;color:#3b82f6;padding:1px 6px;border-radius:8px">网络</span>
<span style="font-size:10px;background:#fef3c7;color:#b45309;padding:1px 6px;border-radius:8px">置信 65%</span>
<span style="font-size:11px;color:#9ca3af;margin-left:auto">8分钟前</span>
</div>
</div>
<div style="padding:10px 14px;border-bottom:1px solid #f1f5f9;cursor:pointer">
<div style="display:flex;align-items:center;justify-content:space-between;margin-bottom:4px">
<span style="font-weight:600;font-size:13px;color:#1e293b">设备申请</span>
<span style="font-size:10px;background:#dcfce7;color:#16a34a;padding:1px 6px;border-radius:8px;font-weight:600">🟢 低</span>
</div>
<div style="font-size:12px;color:#64748b;margin-bottom:4px">赵六 · 市场部</div>
<div style="display:flex;gap:6px;align-items:center">
<span style="font-size:10px;background:#e8f5e9;color:#07C160;padding:1px 6px;border-radius:8px">审批</span>
<span style="font-size:10px;background:#dcfce7;color:#16a34a;padding:1px 6px;border-radius:8px">置信 95%</span>
<span style="font-size:11px;color:#9ca3af;margin-left:auto">12分钟前</span>
</div>
</div>
</div>
<div style="padding:8px 14px;border-top:1px solid #e2e8f0;display:flex;justify-content:space-between;align-items:center">
<span style="font-size:12px;color:#64748b">共 8 条待分诊</span>
<button style="font-size:12px;color:#3b82f6;background:none;border:none;cursor:pointer">查看全部 →</button>
</div>
</div>
<!-- 右侧:分诊详情与路由操作 -->
<div style="flex:1;background:#fff;border-radius:8px;display:flex;flex-direction:column;overflow:hidden">
<div style="padding:12px 16px;border-bottom:1px solid #e2e8f0">
<div style="display:flex;align-items:center;justify-content:space-between;margin-bottom:6px">
<span style="font-weight:600;font-size:15px;color:#1e293b">Outlook登录失败</span>
<div style="display:flex;gap:6px">
<span style="font-size:11px;background:#fee2e2;color:#ef4444;padding:2px 8px;border-radius:8px;font-weight:600">🔴 紧急</span>
<span style="font-size:11px;background:#fef3c7;color:#b45309;padding:2px 8px;border-radius:8px;font-weight:600">VIP用户</span>
</div>
</div>
<div style="font-size:12px;color:#64748b">请求ID: TRIAGE-20260711-001 · 提交时间: 2026-07-11 15:32 · 来源: 企微H5</div>
</div>
<div style="flex:1;overflow-y:auto;padding:16px">
<!-- 用户信息 -->
<div style="margin-bottom:16px">
<div style="font-size:12px;font-weight:600;color:#64748b;margin-bottom:8px">👤 用户画像</div>
<div style="display:flex;gap:16px;font-size:13px">
<div><span style="color:#9ca3af">姓名:</span> 张三</div>
<div><span style="color:#9ca3af">部门:</span> 财务部</div>
<div><span style="color:#9ca3af">职级:</span> P7</div>
<div><span style="color:#9ca3af">设备:</span> ThinkPad T14</div>
</div>
</div>
<!-- 问题描述 -->
<div style="margin-bottom:16px">
<div style="font-size:12px;font-weight:600;color:#64748b;margin-bottom:8px">📝 问题描述</div>
<div style="background:#f8fafc;border-radius:6px;padding:10px 12px;font-size:13px;color:#1e293b;line-height:1.5">Outlook登录一直失败,提示无法连接服务器</div>
</div>
<!-- AI分诊分析 -->
<div style="margin-bottom:16px">
<div style="font-size:12px;font-weight:600;color:#64748b;margin-bottom:8px">🤖 AI分诊分析</div>
<div style="background:#f8fafc;border-radius:6px;padding:12px">
<div style="display:flex;gap:16px;margin-bottom:8px">
<div><span style="font-size:12px;color:#9ca3af">问题类型:</span> <span style="font-size:13px;font-weight:500;color:#1e293b">软件 - Outlook</span></div>
<div><span style="font-size:12px;color:#9ca3af">置信度:</span> <span style="font-size:13px;font-weight:600;color:#f59e0b">72%</span></div>
<div><span style="font-size:12px;color:#9ca3af">紧急度:</span> <span style="font-size:13px;font-weight:500;color:#ef4444"></span></div>
</div>
<div style="font-size:12px;color:#64748b;margin-bottom:6px">建议路由: <span style="color:#3b82f6;font-weight:600">人工坐席</span>(置信度接近阈值+VIP用户优先)</div>
<div style="font-size:12px;color:#64748b">匹配知识: Outlook登录失败 → 密码过期检查(89%匹配)</div>
</div>
</div>
<!-- 已收集上下文 -->
<div style="margin-bottom:16px">
<div style="font-size:12px;font-weight:600;color:#64748b;margin-bottom:8px">📦 已收集上下文</div>
<div style="display:flex;flex-wrap:wrap;gap:6px">
<span style="font-size:12px;background:#f1f5f9;padding:3px 10px;border-radius:12px;color:#475569">Outlook 2019</span>
<span style="font-size:12px;background:#f1f5f9;padding:3px 10px;border-radius:12px;color:#475569">Windows 10</span>
<span style="font-size:12px;background:#f1f5f9;padding:3px 10px;border-radius:12px;color:#475569">AD域用户</span>
<span style="font-size:12px;background:#f1f5f9;padding:3px 10px;border-radius:12px;color:#475569">密码90天未修改</span>
<span style="font-size:12px;background:#f1f5f9;padding:3px 10px;border-radius:12px;color:#475569">网络正常</span>
</div>
</div>
</div>
<!-- 路由操作区(固定底部) -->
<div style="padding:12px 16px;border-top:1px solid #e2e8f0;background:#f8fafc">
<div style="font-size:12px;font-weight:600;color:#64748b;margin-bottom:8px">🔀 路由操作</div>
<div style="display:flex;gap:8px">
<button style="flex:1;padding:8px 16px;border:1px solid #22c55e;border-radius:6px;background:#fff;color:#22c55e;cursor:pointer;font-size:13px;font-weight:500">🤖 AI自助处理</button>
<button style="flex:1;padding:8px 16px;border:none;border-radius:6px;background:#3b82f6;color:#fff;cursor:pointer;font-size:13px;font-weight:500">👤 转人工坐席</button>
<button style="flex:1;padding:8px 16px;border:1px solid #07C160;border-radius:6px;background:#fff;color:#07C160;cursor:pointer;font-size:13px;font-weight:500">📋 自动审批</button>
<button style="padding:8px 16px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;color:#64748b;cursor:pointer;font-size:13px">⏭️ 跳过</button>
</div>
<div style="margin-top:8px">
<input type="text" placeholder="路由备注(可选)" style="width:100%;padding:6px 10px;border:1px solid #e2e8f0;border-radius:4px;font-size:13px;box-sizing:border-box">
</div>
</div>
</div>
</div>
</div>
```
#### 2.3.2 页面原型 — 分诊看板空状态
```html
<!-- 坐席端:无待分诊请求时的空状态 -->
<div style="background:#f5f7fa;font-family:'PingFang SC',sans-serif;font-size:13px;padding:16px">
<div style="display:flex;gap:12px;margin-bottom:16px">
<div style="flex:1;background:#fff;border-radius:8px;padding:12px;text-align:center;border-left:3px solid #f59e0b">
<div style="font-size:24px;font-weight:700;color:#f59e0b">0</div><div style="font-size:12px;color:#64748b">待分诊</div>
</div>
<div style="flex:1;background:#fff;border-radius:8px;padding:12px;text-align:center;border-left:3px solid #3b82f6">
<div style="font-size:24px;font-weight:700;color:#3b82f6">23</div><div style="font-size:12px;color:#64748b">今日已分诊</div>
</div>
<div style="flex:1;background:#fff;border-radius:8px;padding:12px;text-align:center;border-left:3px solid #22c55e">
<div style="font-size:24px;font-weight:700;color:#22c55e">15</div><div style="font-size:12px;color:#64748b">AI自助解决</div>
</div>
</div>
<div style="background:#fff;border-radius:8px;padding:60px 20px;text-align:center">
<div style="font-size:48px;margin-bottom:12px"></div>
<div style="font-size:16px;font-weight:600;color:#1e293b;margin-bottom:6px">暂无待分诊请求</div>
<div style="font-size:13px;color:#64748b;margin-bottom:16px">所有请求已处理完毕,新请求将实时推送至此</div>
<button style="padding:8px 20px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;color:#3b82f6;cursor:pointer;font-size:13px">🔄 手动刷新</button>
</div>
</div>
```
### 2.4 交互流程Mermaid图
#### 2.4.1 分诊主流程
```mermaid
flowchart TD
A[员工发起IT请求] --> B{AI分诊引擎}
B --> C[识别问题类型]
B --> D[评估置信度]
B --> E[判断紧急度]
B --> F[用户画像分析]
C & D & E & F --> G{路由决策}
G -->|置信度≥70% 且 非排除类型| H[AI自助渠道]
G -->|意图=审批类| I[自动审批渠道]
G -->|置信度<70%| J[人工坐席渠道]
G -->|命中排除规则| J
G -->|VIP用户 且 置信度<85%| J
G -->|分诊超时/失败| J
H --> H1[展示分诊确认卡片]
H1 --> H2{员工确认}
H2 -->|选项匹配| H3[AI回复解决方案]
H2 -->|无匹配选项| H4[转人工]
H3 --> H5{问题解决?}
H5 -->|是| H6[关闭会话 生成知识建议]
H5 -->|否| H4
I --> I1[展示审批卡片]
I1 --> I2[员工选择审批类型]
I2 --> I3[跳转审批页面]
I3 --> I4[会话关闭]
J --> J1[展示置信度门控横幅]
J1 --> J2[携带上下文转接坐席]
J2 --> J3[坐席端分诊看板接收]
J3 --> J4[坐席处理]
J4 --> J5{坐席路由操作}
J5 -->|AI自助| H3
J5 -->|转人工| J6[分配坐席开始服务]
J5 -->|自动审批| I1
J5 -->|跳过| J7[标记为已跳过]
H4 --> J2
H6 --> K[会话关闭]
I4 --> K
J6 --> K
J7 --> K
```
#### 2.4.2 坐席端分诊操作流程
```mermaid
flowchart LR
A[新请求进入待分诊列表] --> B[坐席选中请求]
B --> C[查看分诊详情]
C --> D{查看AI分析建议}
D --> E{坐席路由决策}
E -->|同意AI建议| F[点击建议路由按钮]
E -->|不同意AI建议| G[手动选择路由]
F --> H{路由类型}
G --> H
H -->|AI自助| I[确认AI自助处理]
H -->|转人工| J[选择目标坐席/队列]
H -->|自动审批| K[确认审批路由]
H -->|跳过| L[填写跳过原因]
I --> M[填写路由备注]
J --> N[填写转接说明]
K --> O[确认审批类型]
L --> P[标记已跳过]
M & N & O & P --> Q[记录操作日志]
Q --> R[请求离开待分诊列表]
R --> S[更新统计数据]
```
### 2.5 页面状态说明表
#### H5端页面状态
| 页面状态 | 触发条件 | UI表现 | 用户可操作 |
|---------|---------|--------|-----------|
| 分诊中 | 员工发送消息后,AI正在分析 | 加载动画 + "AI正在分诊分析中..." | 无(等待) |
| 分诊确认 | 置信度≥70%,AI自助场景 | 展示分诊卡片,含选项和概率 | 选择选项、切换专家模式、转人工 |
| 置信门控 | 置信度<70% | 展示黄色门控横幅 + 上下文快照 | 点击"转人工" |
| 审批路由 | 意图=审批类 | 展示审批卡片,列出可选审批流程 | 选择审批类型、跳转审批页、转人工 |
| 分诊超时 | 分诊服务超时(>5s)或异常 | 展示红色超时提示 + 自动转人工 | 等待转接 |
| AI回复中 | 分诊确认后AI生成回复 | 打字机效果加载 | 无(等待) |
| 转人工确认 | 路由到人工坐席 | 绿色确认消息 + 预计等待时间 | 无(等待坐席接入) |
#### 坐席端页面状态
| 页面状态 | 触发条件 | UI表现 | 坐席可操作 |
|---------|---------|--------|-----------|
| 待分诊列表加载 | 页面初始化/刷新 | 列表骨架屏 | 无(等待) |
| 有待分诊请求 | 列表数据加载完成 | 展示请求列表,按紧急度排序 | 选择请求、筛选、导出 |
| 无待分诊请求 | 列表为空 | 展示空状态 + 手动刷新按钮 | 手动刷新 |
| 请求选中 | 点击列表项 | 右侧展示详情,列表项高亮 | 查看详情、路由操作 |
| 路由操作中 | 点击路由按钮 | 按钮loading + 确认弹窗 | 确认/取消 |
| 路由完成 | 路由操作成功 | Toast提示成功 + 列表移除该项 | 继续处理下一条 |
| 路由失败 | 路由操作异常 | Toast提示错误 + 保留在列表 | 重试 |
### 2.6 字段定义表
#### H5端分诊卡片字段
| 字段名 | 类型 | 必填 | 说明 | 示例 |
|--------|------|------|------|------|
| triage_step | string | 是 | 当前分诊步骤 | "第 1/3 步" |
| triage_question | string | 是 | 分诊确认问题 | "Outlook是否弹出了具体的错误提示?" |
| triage_options | array | 是 | 分诊选项列表 | [{label:"弹出了", prob:0.68}] |
| triage_options[].label | string | 是 | 选项文字 | "弹出了,提示"无法连接到服务器"" |
| triage_options[].prob | float | 是 | 选项概率(0-1) | 0.68 |
| expert_mode | boolean | 否 | 专家模式开关 | true |
| confidence | float | 是 | AI置信度(0-1) | 0.85 |
| confidence_threshold | float | 是 | 置信度阈值(固定0.7) | 0.7 |
| context_snapshot | string | 否 | 上下文快照(低置信时展示) | "打印机型号 HP M404dn..." |
| transfer_wait_time | string | 否 | 预计等待时间 | "2分钟" |
| transfer_queue_position | int | 否 | 排队位置 | 1 |
#### 坐席端分诊看板字段
| 字段名 | 类型 | 必填 | 说明 | 示例 |
|--------|------|------|------|------|
| triage_id | string | 是 | 分诊请求唯一ID | "TRIAGE-20260711-001" |
| request_title | string | 是 | 请求标题 | "Outlook登录失败" |
| request_content | string | 是 | 请求原始内容 | "Outlook登录一直失败..." |
| submit_time | datetime | 是 | 提交时间 | "2026-07-11 15:32" |
| source | string | 是 | 来源渠道 | "企微H5" |
| user_name | string | 是 | 用户姓名 | "张三" |
| user_dept | string | 是 | 用户部门 | "财务部" |
| user_level | string | 否 | 用户职级 | "P7" |
| is_vip | boolean | 否 | 是否VIP用户 | true |
| device_info | string | 否 | 设备信息 | "ThinkPad T14" |
| problem_type | string | 是 | 问题类型 | "软件" |
| problem_category | string | 是 | 问题分类 | "Outlook" |
| confidence | float | 是 | AI置信度 | 0.72 |
| urgency | enum | 是 | 紧急度 | "high" / "medium" / "low" |
| suggested_route | string | 是 | AI建议路由 | "human" / "ai_self" / "auto_approval" |
| matched_knowledge | string | 否 | 匹配的知识条目 | "Outlook登录失败 → 密码过期检查" |
| match_score | float | 否 | 知识匹配度 | 0.89 |
| context_tags | array | 否 | 上下文标签 | ["Outlook 2019","Windows 10"] |
| route_action | enum | 是 | 坐席路由操作 | "ai_self" / "human" / "auto_approval" / "skip" |
| route_note | string | 否 | 路由备注 | "VIP用户优先处理" |
| operator_id | string | 是 | 操作坐席ID | "AGENT_001" |
| operated_at | datetime | 是 | 操作时间 | "2026-07-11 15:35" |
---
## 3. 拓扑预览原型
### 3.1 功能概述
在知识图谱管理界面提供拓扑关系预览功能,展示知识点(Neo4j图节点)之间的依赖关系、派生关系,支持节点展开/折叠、高亮路径、搜索定位。
### 3.2 管理后台拓扑预览页面原型
#### 3.2.1 页面原型 — 拓扑预览主页面
```html
<!-- 管理后台:知识图谱拓扑预览页面 -->
<div style="background:#f5f7fa;font-family:'PingFang SC',sans-serif;font-size:13px;padding:20px">
<!-- 页面标题栏 -->
<div style="display:flex;align-items:center;justify-content:space-between;margin-bottom:16px">
<div style="display:flex;align-items:center;gap:10px">
<h2 style="font-size:20px;font-weight:600;margin:0;color:#1e293b">🔮 知识图谱拓扑预览</h2>
<span style="background:#e8f5e9;color:#07C160;font-size:11px;padding:2px 8px;border-radius:10px;font-weight:600">Neo4j</span>
</div>
<div style="display:flex;gap:8px">
<button style="padding:8px 16px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;cursor:pointer;font-size:13px">📥 导出图谱</button>
<button style="padding:8px 16px;border:none;border-radius:6px;background:#07C160;color:#fff;cursor:pointer;font-size:13px">🔄 同步Neo4j</button>
</div>
</div>
<!-- 统计栏 -->
<div style="display:flex;gap:12px;margin-bottom:16px">
<div style="flex:1;background:#fff;border-radius:8px;padding:10px 16px;display:flex;align-items:center;gap:10px">
<div style="width:32px;height:32px;border-radius:8px;background:#dcfce7;display:flex;align-items:center;justify-content:center;font-size:16px">🔵</div>
<div><div style="font-size:20px;font-weight:700;color:#1e293b">156</div><div style="font-size:11px;color:#64748b">Issue节点</div></div>
</div>
<div style="flex:1;background:#fff;border-radius:8px;padding:10px 16px;display:flex;align-items:center;gap:10px">
<div style="width:32px;height:32px;border-radius:8px;background:#fef3c7;display:flex;align-items:center;justify-content:center;font-size:16px">🟡</div>
<div><div style="font-size:20px;font-weight:700;color:#1e293b">89</div><div style="font-size:11px;color:#64748b">Action节点</div></div>
</div>
<div style="flex:1;background:#fff;border-radius:8px;padding:10px 16px;display:flex;align-items:center;gap:10px">
<div style="width:32px;height:32px;border-radius:8px;background:#f1f5f9;display:flex;align-items:center;justify-content:center;font-size:16px"></div>
<div><div style="font-size:20px;font-weight:700;color:#1e293b">234</div><div style="font-size:11px;color:#64748b">Relation节点</div></div>
</div>
<div style="flex:1;background:#fff;border-radius:8px;padding:10px 16px;display:flex;align-items:center;gap:10px">
<div style="width:32px;height:32px;border-radius:8px;background:#ede9fe;display:flex;align-items:center;justify-content:center;font-size:16px">🔗</div>
<div><div style="font-size:20px;font-weight:700;color:#1e293b">412</div><div style="font-size:11px;color:#64748b">关系边</div></div>
</div>
<div style="flex:1;background:#fff;border-radius:8px;padding:10px 16px;display:flex;align-items:center;gap:10px">
<div style="width:32px;height:32px;border-radius:8px;background:#fee2e2;display:flex;align-items:center;justify-content:center;font-size:16px"></div>
<div><div style="font-size:20px;font-weight:700;color:#1e293b">12</div><div style="font-size:11px;color:#64748b">待审核节点</div></div>
</div>
</div>
<!-- 工具栏 -->
<div style="background:#fff;border-radius:8px;padding:10px 16px;margin-bottom:12px;display:flex;align-items:center;gap:12px;flex-wrap:wrap">
<div style="display:flex;align-items:center;gap:6px">
<input type="text" placeholder="搜索节点名称..." style="width:220px;padding:6px 12px;border:1px solid #e2e8f0;border-radius:6px;font-size:13px">
<button style="padding:6px 12px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;cursor:pointer;font-size:13px;color:#3b82f6">🔍 搜索</button>
</div>
<div style="display:flex;align-items:center;gap:6px">
<span style="font-size:12px;color:#64748b">类型:</span>
<label style="display:flex;align-items:center;gap:4px;font-size:12px;cursor:pointer"><input type="checkbox" checked> <span style="color:#07C160">● Issue</span></label>
<label style="display:flex;align-items:center;gap:4px;font-size:12px;cursor:pointer"><input type="checkbox" checked> <span style="color:#f59e0b">● Action</span></label>
<label style="display:flex;align-items:center;gap:4px;font-size:12px;cursor:pointer"><input type="checkbox" checked> <span style="color:#9ca3af">● Relation</span></label>
</div>
<div style="display:flex;align-items:center;gap:6px">
<span style="font-size:12px;color:#64748b">关系:</span>
<select style="padding:4px 10px;border:1px solid #e2e8f0;border-radius:4px;font-size:12px;background:#fff">
<option>全部关系</option><option>LEADS_TO</option><option>RELATES_TO</option><option>CAN_JUMP_TO</option><option>DERIVED_FROM</option>
</select>
</div>
<div style="display:flex;gap:0;margin-left:auto">
<button style="padding:5px 14px;border:1px solid #07C160;border-radius:6px 0 0 6px;background:#07C160;color:#fff;cursor:pointer;font-size:12px">🌐 力导向</button>
<button style="padding:5px 14px;border:1px solid #e2e8f0;border-left:none;border-radius:0 6px 6px 0;background:#fff;color:#64748b;cursor:pointer;font-size:12px">📋 层次树</button>
</div>
<div style="display:flex;gap:4px">
<button style="width:30px;height:30px;border:1px solid #e2e8f0;border-radius:4px;background:#fff;cursor:pointer;font-size:14px"></button>
<button style="width:30px;height:30px;border:1px solid #e2e8f0;border-radius:4px;background:#fff;cursor:pointer;font-size:14px"></button>
<button style="width:30px;height:30px;border:1px solid #e2e8f0;border-radius:4px;background:#fff;cursor:pointer;font-size:12px">1:1</button>
</div>
</div>
<!-- 主体区域:图谱画布 + 右侧节点详情 -->
<div style="display:flex;gap:12px;height:520px">
<!-- 图谱画布 -->
<div style="flex:1;background:#fff;border-radius:8px;border:1px solid #e2e8f0;position:relative;overflow:hidden">
<!-- 图例 -->
<div style="position:absolute;top:12px;left:12px;background:rgba(255,255,255,0.95);border:1px solid #e2e8f0;border-radius:6px;padding:8px 12px;z-index:10">
<div style="font-size:11px;font-weight:600;color:#64748b;margin-bottom:6px">图例</div>
<div style="display:flex;flex-direction:column;gap:4px">
<div style="display:flex;align-items:center;gap:6px;font-size:11px"><div style="width:12px;height:12px;border-radius:50%;background:#07C160"></div><span style="color:#1e293b">Issue(问题)</span></div>
<div style="display:flex;align-items:center;gap:6px;font-size:11px"><div style="width:12px;height:12px;border-radius:50%;background:#f59e0b"></div><span style="color:#1e293b">Action(处置)</span></div>
<div style="display:flex;align-items:center;gap:6px;font-size:11px"><div style="width:12px;height:12px;border-radius:50%;background:#9ca3af"></div><span style="color:#1e293b">Relation(关联)</span></div>
</div>
</div>
<!-- 拓扑图SVG示意 -->
<svg viewBox="0 0 600 500" style="width:100%;height:100%">
<!-- 关系连线 -->
<line x1="300" y1="60" x2="150" y2="180" stroke="#07C160" stroke-width="2" opacity="0.6"/>
<line x1="300" y1="60" x2="450" y2="180" stroke="#07C160" stroke-width="2" opacity="0.6"/>
<line x1="150" y1="180" x2="150" y2="320" stroke="#f59e0b" stroke-width="2" opacity="0.6"/>
<line x1="450" y1="180" x2="450" y2="320" stroke="#07C160" stroke-width="2" opacity="0.6"/>
<line x1="150" y1="320" x2="300" y2="420" stroke="#e2e8f0" stroke-width="1.5" stroke-dasharray="5"/>
<line x1="450" y1="320" x2="300" y2="420" stroke="#e2e8f0" stroke-width="1.5" stroke-dasharray="5"/>
<line x1="150" y1="180" x2="450" y2="180" stroke="#e2e8f0" stroke-width="1" stroke-dasharray="4"/>
<!-- 高亮路径(选中节点到根节点) -->
<line x1="300" y1="60" x2="150" y2="180" stroke="#3b82f6" stroke-width="3.5" opacity="0.8"/>
<line x1="150" y1="180" x2="150" y2="320" stroke="#3b82f6" stroke-width="3.5" opacity="0.8"/>
<!-- 关系标签 -->
<text x="225" y="120" text-anchor="middle" font-size="9" fill="#07C160" font-weight="600">LEADS_TO</text>
<text x="375" y="120" text-anchor="middle" font-size="9" fill="#07C160" font-weight="600">LEADS_TO</text>
<text x="180" y="250" text-anchor="middle" font-size="9" fill="#f59e0b" font-weight="600">LEADS_TO</text>
<text x="300" y="370" text-anchor="middle" font-size="9" fill="#9ca3af">RELATES_TO</text>
<!-- 根节点:邮箱客户端问题 -->
<circle cx="300" cy="60" r="24" fill="#07C160" opacity="0.15"/>
<circle cx="300" cy="60" r="24" fill="none" stroke="#07C160" stroke-width="2.5"/>
<text x="300" y="56" text-anchor="middle" font-size="9" fill="#64748b">问题</text>
<text x="300" y="68" text-anchor="middle" font-size="8" fill="#07C160" font-weight="600">邮箱客户端</text>
<!-- Issue节点:Outlook登录失败(选中状态-高亮) -->
<circle cx="150" cy="180" r="22" fill="#3b82f6" opacity="0.2"/>
<circle cx="150" cy="180" r="22" fill="none" stroke="#3b82f6" stroke-width="3"/>
<text x="150" y="176" text-anchor="middle" font-size="9" fill="#64748b">问题</text>
<text x="150" y="188" text-anchor="middle" font-size="8" fill="#3b82f6" font-weight="600">登录失败</text>
<!-- Issue节点:OWA访问 -->
<circle cx="450" cy="180" r="22" fill="#07C160" opacity="0.15"/>
<circle cx="450" cy="180" r="22" fill="none" stroke="#07C160" stroke-width="2"/>
<text x="450" y="176" text-anchor="middle" font-size="9" fill="#64748b">问题</text>
<text x="450" y="188" text-anchor="middle" font-size="8" fill="#07C160" font-weight="600">OWA访问</text>
<!-- Action节点:密码重置(选中路径中-高亮) -->
<circle cx="150" cy="320" r="20" fill="#f59e0b" opacity="0.2"/>
<circle cx="150" cy="320" r="20" fill="none" stroke="#f59e0b" stroke-width="2.5"/>
<text x="150" y="316" text-anchor="middle" font-size="9" fill="#64748b">处置</text>
<text x="150" y="328" text-anchor="middle" font-size="8" fill="#b45309" font-weight="600">密码重置</text>
<!-- Action节点:使用Web版 -->
<circle cx="450" cy="320" r="20" fill="#f59e0b" opacity="0.15"/>
<circle cx="450" cy="320" r="20" fill="none" stroke="#f59e0b" stroke-width="2"/>
<text x="450" y="316" text-anchor="middle" font-size="9" fill="#64748b">处置</text>
<text x="450" y="328" text-anchor="middle" font-size="8" fill="#b45309" font-weight="600">Web版</text>
<!-- Relation节点:AD域 -->
<circle cx="300" cy="420" r="16" fill="#e2e8f0"/>
<circle cx="300" cy="420" r="16" fill="none" stroke="#9ca3af" stroke-width="1.5"/>
<text x="300" y="424" text-anchor="middle" font-size="8" fill="#64748b">AD域</text>
</svg>
<div style="position:absolute;bottom:8px;left:50%;transform:translateX(-50%);font-size:11px;color:#9ca3af;background:rgba(255,255,255,0.8);padding:3px 10px;border-radius:4px">📌 拖拽可移动节点 · 滚轮缩放 · 点击节点查看详情 · 双击展开/折叠</div>
</div>
<!-- 右侧:节点详情面板 -->
<div style="width:280px;background:#fff;border-radius:8px;display:flex;flex-direction:column;overflow:hidden">
<div style="padding:12px 14px;border-bottom:1px solid #e2e8f0">
<div style="display:flex;align-items:center;gap:6px;margin-bottom:4px">
<div style="width:10px;height:10px;border-radius:50%;background:#3b82f6"></div>
<span style="font-weight:600;font-size:14px;color:#1e293b">Outlook登录失败</span>
</div>
<div style="font-size:11px;color:#9ca3af">节点ID: issue_outlook_login_fail</div>
</div>
<div style="flex:1;overflow-y:auto;padding:12px 14px">
<div style="margin-bottom:12px">
<div style="font-size:11px;font-weight:600;color:#64748b;margin-bottom:6px">节点属性</div>
<div style="display:flex;flex-direction:column;gap:4px">
<div style="display:flex;font-size:12px"><span style="color:#9ca3af;width:70px">类型</span><span style="color:#1e293b;font-weight:500">Issue(问题)</span></div>
<div style="display:flex;font-size:12px"><span style="color:#9ca3af;width:70px">标签</span><span style="color:#1e293b">outlook, login, password</span></div>
<div style="display:flex;font-size:12px"><span style="color:#9ca3af;width:70px">置信度</span><span style="color:#22c55e;font-weight:600">92%</span></div>
<div style="display:flex;font-size:12px"><span style="color:#9ca3af;width:70px">状态</span><span style="font-size:11px;background:#dcfce7;color:#16a34a;padding:1px 8px;border-radius:8px;font-weight:600">已审核</span></div>
<div style="display:flex;font-size:12px"><span style="color:#9ca3af;width:70px">采纳次数</span><span style="color:#1e293b">3次</span></div>
<div style="display:flex;font-size:12px"><span style="color:#9ca3af;width:70px">创建时间</span><span style="color:#1e293b">2026-07-08</span></div>
</div>
</div>
<div style="margin-bottom:12px">
<div style="font-size:11px;font-weight:600;color:#64748b;margin-bottom:6px">关联关系</div>
<div style="display:flex;flex-direction:column;gap:6px">
<div style="background:#f8fafc;border-radius:4px;padding:6px 8px;font-size:12px"><span style="color:#9ca3af">← LEADS_TO</span><div style="color:#07C160;font-weight:500;margin-top:2px">邮箱客户端问题(父节点)</div></div>
<div style="background:#f8fafc;border-radius:4px;padding:6px 8px;font-size:12px"><span style="color:#9ca3af">→ LEADS_TO</span><div style="color:#f59e0b;font-weight:500;margin-top:2px">密码重置(处置方案)</div></div>
<div style="background:#f8fafc;border-radius:4px;padding:6px 8px;font-size:12px"><span style="color:#9ca3af">⇄ RELATES_TO</span><div style="color:#9ca3af;font-weight:500;margin-top:2px">OWA访问(关联问题)</div></div>
</div>
</div>
<div style="margin-bottom:12px">
<div style="font-size:11px;font-weight:600;color:#64748b;margin-bottom:6px">当前高亮路径</div>
<div style="background:#eff6ff;border:1px solid #bfdbfe;border-radius:6px;padding:8px;font-size:12px;color:#3b82f6">邮箱客户端 → 登录失败 → 密码重置</div>
<div style="font-size:11px;color:#9ca3af;margin-top:4px">路径深度: 3 · 关系数: 2</div>
</div>
</div>
<div style="padding:10px 14px;border-top:1px solid #e2e8f0;display:flex;gap:6px">
<button style="flex:1;padding:6px 12px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;color:#3b82f6;cursor:pointer;font-size:12px">📝 编辑</button>
<button style="flex:1;padding:6px 12px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;color:#07C160;cursor:pointer;font-size:12px"> 添加子节点</button>
<button style="padding:6px 12px;border:1px solid #ef4444;border-radius:6px;background:#fff;color:#ef4444;cursor:pointer;font-size:12px">🗑️</button>
</div>
</div>
</div>
</div>
```
#### 3.2.2 页面原型 — 空状态 & 搜索定位
```html
<!-- 管理后台:知识图谱为空时的状态 -->
<div style="background:#fff;border-radius:8px;padding:80px 20px;text-align:center">
<div style="font-size:48px;margin-bottom:12px">📭</div>
<div style="font-size:16px;font-weight:600;color:#1e293b;margin-bottom:6px">知识图谱暂无数据</div>
<div style="font-size:13px;color:#64748b;margin-bottom:16px;max-width:400px;margin-left:auto;margin-right:auto">请先通过知识迭代管理审核知识建议,审核通过后自动写入Neo4j图</div>
<div style="display:flex;gap:8px;justify-content:center">
<button style="padding:8px 20px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;color:#3b82f6;cursor:pointer;font-size:13px">📚 前往知识迭代管理</button>
<button style="padding:8px 20px;border:none;border-radius:6px;background:#07C160;color:#fff;cursor:pointer;font-size:13px">🔄 从Neo4j同步</button>
</div>
</div>
```
```html
<!-- 管理后台:搜索节点后的高亮定位效果 -->
<div style="background:#fff;border-radius:8px;border:1px solid #e2e8f0;padding:16px;position:relative;height:400px">
<!-- 搜索结果浮层 -->
<div style="position:absolute;top:12px;right:12px;width:240px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,0.08);z-index:20">
<div style="padding:8px 12px;border-bottom:1px solid #f1f5f9;display:flex;align-items:center;justify-content:space-between">
<span style="font-size:12px;font-weight:600;color:#1e293b">搜索结果(3条)</span>
<span style="font-size:12px;color:#9ca3af;cursor:pointer"></span>
</div>
<div style="max-height:280px;overflow-y:auto">
<div style="padding:8px 12px;border-bottom:1px solid #f8fafc;cursor:pointer;background:#eff6ff">
<div style="display:flex;align-items:center;gap:6px"><div style="width:8px;height:8px;border-radius:50%;background:#3b82f6"></div><span style="font-size:13px;font-weight:500;color:#1e293b">Outlook登录失败</span></div>
<div style="font-size:11px;color:#9ca3af;margin-left:14px;margin-top:2px">Issue · 置信92% · 采纳3次</div>
</div>
<div style="padding:8px 12px;border-bottom:1px solid #f8fafc;cursor:pointer">
<div style="display:flex;align-items:center;gap:6px"><div style="width:8px;height:8px;border-radius:50%;background:#07C160"></div><span style="font-size:13px;font-weight:500;color:#1e293b">Outlook邮件发送失败</span></div>
<div style="font-size:11px;color:#9ca3af;margin-left:14px;margin-top:2px">Issue · 置信85% · 采纳1次</div>
</div>
<div style="padding:8px 12px;cursor:pointer">
<div style="display:flex;align-items:center;gap:6px"><div style="width:8px;height:8px;border-radius:50%;background:#f59e0b"></div><span style="font-size:13px;font-weight:500;color:#1e293b">Outlook配置重置</span></div>
<div style="font-size:11px;color:#9ca3af;margin-left:14px;margin-top:2px">Action · 置信78% · 采纳2次</div>
</div>
</div>
</div>
<!-- 图谱画布(搜索高亮:匹配节点脉冲,非匹配变暗) -->
<svg viewBox="0 0 500 350" style="width:100%;height:100%">
<line x1="250" y1="50" x2="120" y2="150" stroke="#e2e8f0" stroke-width="1"/>
<line x1="250" y1="50" x2="380" y2="150" stroke="#e2e8f0" stroke-width="1"/>
<line x1="120" y1="150" x2="120" y2="270" stroke="#e2e8f0" stroke-width="1"/>
<!-- 匹配节点高亮 + 周围脉冲圈 -->
<circle cx="120" cy="150" r="30" fill="none" stroke="#3b82f6" stroke-width="1" opacity="0.3"/>
<circle cx="120" cy="150" r="38" fill="none" stroke="#3b82f6" stroke-width="1" opacity="0.15"/>
<circle cx="120" cy="150" r="22" fill="#3b82f6" opacity="0.25"/>
<circle cx="120" cy="150" r="22" fill="none" stroke="#3b82f6" stroke-width="3"/>
<text x="120" y="146" text-anchor="middle" font-size="9" fill="#3b82f6" font-weight="600">Issue</text>
<text x="120" y="158" text-anchor="middle" font-size="8" fill="#3b82f6" font-weight="600">登录失败</text>
<!-- 非匹配节点变暗 -->
<circle cx="250" cy="50" r="20" fill="#07C160" opacity="0.08"/>
<circle cx="250" cy="50" r="20" fill="none" stroke="#07C160" stroke-width="1.5" opacity="0.3"/>
<text x="250" y="54" text-anchor="middle" font-size="8" fill="#9ca3af">邮箱客户端</text>
<circle cx="380" cy="150" r="18" fill="#07C160" opacity="0.08"/>
<circle cx="380" cy="150" r="18" fill="none" stroke="#07C160" stroke-width="1.5" opacity="0.3"/>
<text x="380" y="154" text-anchor="middle" font-size="8" fill="#9ca3af">OWA</text>
<circle cx="120" cy="270" r="16" fill="#f59e0b" opacity="0.1"/>
<circle cx="120" cy="270" r="16" fill="none" stroke="#f59e0b" stroke-width="1.5" opacity="0.3"/>
<text x="120" y="274" text-anchor="middle" font-size="7" fill="#9ca3af">密码重置</text>
</svg>
</div>
```
### 3.3 工具栏设计
| 工具 | 控件类型 | 功能说明 | 交互行为 |
|------|---------|---------|---------|
| 搜索框 | input + button | 按节点名称模糊搜索 | 回车/点击搜索,展示结果浮层,点击结果定位并高亮节点 |
| 节点类型筛选 | checkbox × 3 | 筛选Issue/Action/Relation节点 | 勾选/取消即时过滤画布节点 |
| 关系类型筛选 | select | 筛选LEADS_TO/RELATES_TO/CAN_JUMP_TO/DERIVED_FROM | 选择后即时过滤画布连线 |
| 布局切换 | button-group | 力导向布局 / 层次树布局 | 切换后重新渲染图谱 |
| 缩放控制 | button × 3 | 放大 / 缩小 / 重置1:1 | 点击调整画布缩放比例 |
| 导出 | button | 导出图谱为PNG/SVG | 点击弹出格式选择 |
| 同步Neo4j | button | 从Neo4j同步最新图数据 | 点击后loading,完成后刷新统计和图谱 |
### 3.4 节点交互说明
| 交互动作 | 触发方式 | 效果 | 说明 |
|---------|---------|------|------|
| 选中节点 | 单击节点 | 节点高亮(蓝色描边加粗)+ 右侧面板显示详情 + 高亮根节点到该节点的路径 | 同时仅一个节点可被选中 |
| 展开/折叠 | 双击节点 | 折叠时隐藏子节点及其连线,展开时恢复显示 | 折叠节点显示"+"标记 |
| 拖拽移动 | 鼠标按住拖拽 | 节点跟随鼠标移动,连线实时更新 | 力导向布局下其他节点自适应调整 |
| 画布平移 | 鼠标按住空白处拖拽 | 整个图谱平移 | |
| 缩放 | 滚轮 / 缩放按钮 | 以鼠标位置为中心缩放 | 缩放范围 0.3x ~ 3x |
| 搜索定位 | 搜索框输入+回车 | 匹配节点高亮脉冲+非匹配节点变暗+右侧浮层展示结果列表 | 点击结果项定位到对应节点 |
| 右键菜单 | 右键节点 | 弹出菜单:编辑、添加子节点、删除、查看关联会话 | 删除需二次确认 |
### 3.5 数据结构建议
```json
{
"nodes": [
{
"id": "issue_outlook_login_fail",
"name": "Outlook登录失败",
"type": "issue",
"properties": {
"category": "软件",
"tags": ["outlook", "login", "password"],
"confidence": 0.92,
"status": "approved",
"adopted_count": 3,
"created_at": "2026-07-08T10:30:00Z",
"source": "conversation_analysis"
},
"parent_id": "issue_email_client"
},
{
"id": "action_password_reset",
"name": "密码重置",
"type": "action",
"properties": {
"content": "引导用户通过CTRL+ALT+DEL更改AD域密码",
"confidence": 0.89,
"status": "approved",
"adopted_count": 5
}
},
{
"id": "relation_ad_domain",
"name": "AD域",
"type": "relation",
"properties": {
"description": "Active Directory域服务",
"tags": ["ad", "domain", "auth"]
}
}
],
"links": [
{
"source": "issue_email_client",
"target": "issue_outlook_login_fail",
"type": "LEADS_TO",
"weight": 0.9
},
{
"source": "issue_outlook_login_fail",
"target": "action_password_reset",
"type": "LEADS_TO",
"weight": 0.92
},
{
"source": "action_password_reset",
"target": "relation_ad_domain",
"type": "RELATES_TO",
"weight": 0.7
}
]
}
```
### 3.6 页面状态说明表
| 页面状态 | 触发条件 | UI表现 | 用户可操作 |
|---------|---------|--------|-----------|
| 加载中 | 页面初始化/同步Neo4j | 画布显示骨架屏 + loading动画 | 无(等待) |
| 图谱为空 | Neo4j无数据 | 展示空状态 + 引导按钮 | 前往知识迭代管理、从Neo4j同步 |
| 图谱加载完成 | 数据返回 | 展示拓扑图 + 统计数据 | 搜索、筛选、缩放、拖拽、选中节点 |
| 节点选中 | 单击节点 | 节点高亮 + 路径高亮 + 右侧详情面板 | 编辑、添加子节点、删除 |
| 搜索中 | 输入搜索词 | 画布非匹配节点变暗 + 右侧结果浮层 | 点击结果定位、关闭搜索 |
| 搜索无结果 | 无匹配节点 | 画布恢复 + 浮层显示"未找到匹配节点" | 修改搜索词 |
| 布局切换中 | 切换布局类型 | 画布loading + 重新渲染动画 | 无(等待渲染完成) |
| 同步中 | 点击同步Neo4j | 按钮loading + 统计数据刷新中 | 无(等待) |
| 同步失败 | Neo4j连接异常 | Toast错误提示 + 保留旧数据 | 重试同步 |
---
## 4. 代答排除原型
### 4.1 功能概述
在AI自动回复场景中,支持配置排除规则,避免AI代答特定类型的问题(如敏感问题、需人工判断的问题、合规要求等),被排除的问题转人工处理。
### 4.2 管理后台代答排除配置页面原型
#### 4.2.1 页面原型 — 规则列表主页面
```html
<!-- 管理后台:代答排除规则列表页面 -->
<div style="background:#f5f7fa;font-family:'PingFang SC',sans-serif;font-size:13px;padding:20px">
<!-- 页面标题栏 -->
<div style="display:flex;align-items:center;justify-content:space-between;margin-bottom:16px">
<div style="display:flex;align-items:center;gap:10px">
<h2 style="font-size:20px;font-weight:600;margin:0;color:#1e293b">✋ 代答排除配置</h2>
<span style="background:#fef3c7;color:#b45309;font-size:11px;padding:2px 8px;border-radius:10px;font-weight:600">合规</span>
</div>
<div style="display:flex;gap:8px">
<button style="padding:8px 16px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;cursor:pointer;font-size:13px">📥 导入规则</button>
<button style="padding:8px 16px;border:none;border-radius:6px;background:#07C160;color:#fff;cursor:pointer;font-size:13px"> 新建规则</button>
</div>
</div>
<!-- 说明横幅 -->
<div style="background:#fffbeb;border:1px solid #fcd34d;border-radius:8px;padding:10px 14px;margin-bottom:16px;display:flex;align-items:flex-start;gap:10px">
<span style="font-size:16px">💡</span>
<div style="flex:1;font-size:12px;color:#92400e;line-height:1.6">
<strong>代答排除规则</strong>用于阻止AI自动回复特定类型的问题。当用户提问命中排除规则时,AI不会自动回复,而是直接转人工坐席处理。<br>
适用场景:敏感问题(薪资/人事)、需人工判断的问题(投诉/纠纷)、合规要求(数据删除/权限变更)等。
</div>
</div>
<!-- 统计栏 -->
<div style="display:flex;gap:12px;margin-bottom:16px">
<div style="flex:1;background:#fff;border-radius:8px;padding:12px;text-align:center"><div style="font-size:24px;font-weight:700;color:#07C160">8</div><div style="font-size:12px;color:#64748b">启用规则</div></div>
<div style="flex:1;background:#fff;border-radius:8px;padding:12px;text-align:center"><div style="font-size:24px;font-weight:700;color:#9ca3af">3</div><div style="font-size:12px;color:#64748b">停用规则</div></div>
<div style="flex:1;background:#fff;border-radius:8px;padding:12px;text-align:center"><div style="font-size:24px;font-weight:700;color:#3b82f6">156</div><div style="font-size:12px;color:#64748b">本月命中次数</div></div>
<div style="flex:1;background:#fff;border-radius:8px;padding:12px;text-align:center"><div style="font-size:24px;font-weight:700;color:#8b5cf6">156</div><div style="font-size:12px;color:#64748b">本月转人工数</div></div>
</div>
<!-- 筛选栏 -->
<div style="background:#fff;border-radius:8px;padding:10px 16px;margin-bottom:12px;display:flex;align-items:center;gap:12px;flex-wrap:wrap">
<input type="text" placeholder="搜索规则名称..." style="width:200px;padding:6px 12px;border:1px solid #e2e8f0;border-radius:6px;font-size:13px">
<select style="padding:6px 10px;border:1px solid #e2e8f0;border-radius:6px;font-size:13px;background:#fff"><option>全部状态</option><option>启用</option><option>停用</option></select>
<select style="padding:6px 10px;border:1px solid #e2e8f0;border-radius:6px;font-size:13px;background:#fff"><option>全部匹配方式</option><option>关键词匹配</option><option>正则匹配</option><option>意图匹配</option><option>分类排除</option></select>
<select style="padding:6px 10px;border:1px solid #e2e8f0;border-radius:6px;font-size:13px;background:#fff"><option>全部优先级</option><option>P0-最高</option><option>P1-高</option><option>P2-中</option><option>P3-低</option></select>
<button style="padding:6px 14px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;cursor:pointer;font-size:13px;color:#3b82f6">🔍 查询</button>
<button style="padding:6px 14px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;cursor:pointer;font-size:13px;color:#64748b">重置</button>
</div>
<!-- 规则列表表格 -->
<div style="background:#fff;border-radius:8px;overflow:hidden">
<table style="width:100%;border-collapse:collapse;font-size:13px">
<thead>
<tr style="background:#f8fafc;border-bottom:2px solid #e2e8f0">
<th style="padding:10px 12px;text-align:left;font-weight:600;color:#64748b;width:40px"><input type="checkbox"></th>
<th style="padding:10px 12px;text-align:left;font-weight:600;color:#64748b;width:50px">优先级</th>
<th style="padding:10px 12px;text-align:left;font-weight:600;color:#64748b">规则名称</th>
<th style="padding:10px 12px;text-align:left;font-weight:600;color:#64748b;width:100px">匹配方式</th>
<th style="padding:10px 12px;text-align:left;font-weight:600;color:#64748b">匹配条件</th>
<th style="padding:10px 12px;text-align:center;font-weight:600;color:#64748b;width:80px">状态</th>
<th style="padding:10px 12px;text-align:center;font-weight:600;color:#64748b;width:90px">本月命中</th>
<th style="padding:10px 12px;text-align:left;font-weight:600;color:#64748b;width:140px">更新时间</th>
<th style="padding:10px 12px;text-align:center;font-weight:600;color:#64748b;width:140px">操作</th>
</tr>
</thead>
<tbody>
<!-- 规则行1P0 关键词 启用 -->
<tr style="border-bottom:1px solid #f1f5f9">
<td style="padding:10px 12px"><input type="checkbox"></td>
<td style="padding:10px 12px"><span style="font-size:11px;background:#fee2e2;color:#ef4444;padding:2px 6px;border-radius:4px;font-weight:600">P0</span></td>
<td style="padding:10px 12px"><div style="font-weight:500;color:#1e293b">薪资人事类问题排除</div><div style="font-size:11px;color:#9ca3af;margin-top:2px">防止AI回答薪资、人事变动等敏感问题</div></td>
<td style="padding:10px 12px"><span style="font-size:11px;background:#dbeafe;color:#3b82f6;padding:2px 8px;border-radius:4px">关键词</span></td>
<td style="padding:10px 12px;font-size:12px;color:#64748b">薪资, 工资, 调薪, 晋升, 辞退, 离职...</td>
<td style="padding:10px 12px;text-align:center"><div style="display:inline-block;width:32px;height:18px;border-radius:9px;background:#07C160;position:relative"><div style="width:14px;height:14px;border-radius:50%;background:#fff;position:absolute;top:2px;left:16px"></div></div></td>
<td style="padding:10px 12px;text-align:center"><span style="font-size:13px;font-weight:600;color:#1e293b">42</span></td>
<td style="padding:10px 12px;font-size:12px;color:#64748b">2026-07-09 14:30</td>
<td style="padding:10px 12px;text-align:center">
<button style="font-size:12px;color:#3b82f6;background:none;border:none;cursor:pointer;padding:2px 6px">编辑</button>
<button style="font-size:12px;color:#f59e0b;background:none;border:none;cursor:pointer;padding:2px 6px">停用</button>
<button style="font-size:12px;color:#ef4444;background:none;border:none;cursor:pointer;padding:2px 6px">删除</button>
</td>
</tr>
<!-- 规则行2P0 意图 启用 -->
<tr style="border-bottom:1px solid #f1f5f9">
<td style="padding:10px 12px"><input type="checkbox"></td>
<td style="padding:10px 12px"><span style="font-size:11px;background:#fee2e2;color:#ef4444;padding:2px 6px;border-radius:4px;font-weight:600">P0</span></td>
<td style="padding:10px 12px"><div style="font-weight:500;color:#1e293b">数据删除/修改操作排除</div><div style="font-size:11px;color:#9ca3af;margin-top:2px">涉及数据安全的操作需人工审核</div></td>
<td style="padding:10px 12px"><span style="font-size:11px;background:#ede9fe;color:#8b5cf6;padding:2px 8px;border-radius:4px">意图</span></td>
<td style="padding:10px 12px;font-size:12px;color:#64748b">意图: data_deletion, data_modification</td>
<td style="padding:10px 12px;text-align:center"><div style="display:inline-block;width:32px;height:18px;border-radius:9px;background:#07C160;position:relative"><div style="width:14px;height:14px;border-radius:50%;background:#fff;position:absolute;top:2px;left:16px"></div></div></td>
<td style="padding:10px 12px;text-align:center"><span style="font-size:13px;font-weight:600;color:#1e293b">18</span></td>
<td style="padding:10px 12px;font-size:12px;color:#64748b">2026-07-08 10:15</td>
<td style="padding:10px 12px;text-align:center">
<button style="font-size:12px;color:#3b82f6;background:none;border:none;cursor:pointer;padding:2px 6px">编辑</button>
<button style="font-size:12px;color:#f59e0b;background:none;border:none;cursor:pointer;padding:2px 6px">停用</button>
<button style="font-size:12px;color:#ef4444;background:none;border:none;cursor:pointer;padding:2px 6px">删除</button>
</td>
</tr>
<!-- 规则行3P1 正则 启用 -->
<tr style="border-bottom:1px solid #f1f5f9">
<td style="padding:10px 12px"><input type="checkbox"></td>
<td style="padding:10px 12px"><span style="font-size:11px;background:#fef3c7;color:#b45309;padding:2px 6px;border-radius:4px;font-weight:600">P1</span></td>
<td style="padding:10px 12px"><div style="font-weight:500;color:#1e293b">投诉纠纷类问题排除</div><div style="font-size:11px;color:#9ca3af;margin-top:2px">投诉类问题需人工安抚和处理</div></td>
<td style="padding:10px 12px"><span style="font-size:11px;background:#fce7f3;color:#ec4899;padding:2px 8px;border-radius:4px">正则</span></td>
<td style="padding:10px 12px;font-size:12px;color:#64748b">/(投诉|举报|纠纷|不公平|歧视).*/</td>
<td style="padding:10px 12px;text-align:center"><div style="display:inline-block;width:32px;height:18px;border-radius:9px;background:#07C160;position:relative"><div style="width:14px;height:14px;border-radius:50%;background:#fff;position:absolute;top:2px;left:16px"></div></div></td>
<td style="padding:10px 12px;text-align:center"><span style="font-size:13px;font-weight:600;color:#1e293b">35</span></td>
<td style="padding:10px 12px;font-size:12px;color:#64748b">2026-07-07 16:45</td>
<td style="padding:10px 12px;text-align:center">
<button style="font-size:12px;color:#3b82f6;background:none;border:none;cursor:pointer;padding:2px 6px">编辑</button>
<button style="font-size:12px;color:#f59e0b;background:none;border:none;cursor:pointer;padding:2px 6px">停用</button>
<button style="font-size:12px;color:#ef4444;background:none;border:none;cursor:pointer;padding:2px 6px">删除</button>
</td>
</tr>
<!-- 规则行4P1 分类 启用 -->
<tr style="border-bottom:1px solid #f1f5f9">
<td style="padding:10px 12px"><input type="checkbox"></td>
<td style="padding:10px 12px"><span style="font-size:11px;background:#fef3c7;color:#b45309;padding:2px 6px;border-radius:4px;font-weight:600">P1</span></td>
<td style="padding:10px 12px"><div style="font-weight:500;color:#1e293b">权限变更操作排除</div><div style="font-size:11px;color:#9ca3af;margin-top:2px">系统权限变更需人工审批</div></td>
<td style="padding:10px 12px"><span style="font-size:11px;background:#e8f5e9;color:#07C160;padding:2px 8px;border-radius:4px">分类</span></td>
<td style="padding:10px 12px;font-size:12px;color:#64748b">分类: 账号权限申请, 系统管理员权限</td>
<td style="padding:10px 12px;text-align:center"><div style="display:inline-block;width:32px;height:18px;border-radius:9px;background:#07C160;position:relative"><div style="width:14px;height:14px;border-radius:50%;background:#fff;position:absolute;top:2px;left:16px"></div></div></td>
<td style="padding:10px 12px;text-align:center"><span style="font-size:13px;font-weight:600;color:#1e293b">28</span></td>
<td style="padding:10px 12px;font-size:12px;color:#64748b">2026-07-06 09:20</td>
<td style="padding:10px 12px;text-align:center">
<button style="font-size:12px;color:#3b82f6;background:none;border:none;cursor:pointer;padding:2px 6px">编辑</button>
<button style="font-size:12px;color:#f59e0b;background:none;border:none;cursor:pointer;padding:2px 6px">停用</button>
<button style="font-size:12px;color:#ef4444;background:none;border:none;cursor:pointer;padding:2px 6px">删除</button>
</td>
</tr>
<!-- 规则行5P2 关键词 停用 -->
<tr style="border-bottom:1px solid #f1f5f9;opacity:0.6">
<td style="padding:10px 12px"><input type="checkbox"></td>
<td style="padding:10px 12px"><span style="font-size:11px;background:#f1f5f9;color:#64748b;padding:2px 6px;border-radius:4px;font-weight:600">P2</span></td>
<td style="padding:10px 12px"><div style="font-weight:500;color:#1e293b">外部网络访问排除</div><div style="font-size:11px;color:#9ca3af;margin-top:2px">已停用:误报率过高</div></td>
<td style="padding:10px 12px"><span style="font-size:11px;background:#dbeafe;color:#3b82f6;padding:2px 8px;border-radius:4px">关键词</span></td>
<td style="padding:10px 12px;font-size:12px;color:#64748b">VPN, 外网, 代理, 翻墙</td>
<td style="padding:10px 12px;text-align:center"><div style="display:inline-block;width:32px;height:18px;border-radius:9px;background:#e2e8f0;position:relative"><div style="width:14px;height:14px;border-radius:50%;background:#fff;position:absolute;top:2px;left:2px"></div></div></td>
<td style="padding:10px 12px;text-align:center"><span style="font-size:13px;font-weight:600;color:#9ca3af">0</span></td>
<td style="padding:10px 12px;font-size:12px;color:#64748b">2026-07-03 11:00</td>
<td style="padding:10px 12px;text-align:center">
<button style="font-size:12px;color:#3b82f6;background:none;border:none;cursor:pointer;padding:2px 6px">编辑</button>
<button style="font-size:12px;color:#22c55e;background:none;border:none;cursor:pointer;padding:2px 6px">启用</button>
<button style="font-size:12px;color:#ef4444;background:none;border:none;cursor:pointer;padding:2px 6px">删除</button>
</td>
</tr>
</tbody>
</table>
<!-- 分页 -->
<div style="padding:12px 16px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid #f1f5f9">
<span style="font-size:12px;color:#64748b">共 11 条规则,第 1/3 页</span>
<div style="display:flex;gap:4px">
<button style="padding:4px 10px;border:1px solid #e2e8f0;border-radius:4px;background:#fff;cursor:pointer;font-size:12px;color:#9ca3af" disabled>上一页</button>
<button style="padding:4px 10px;border:1px solid #07C160;border-radius:4px;background:#07C160;color:#fff;cursor:pointer;font-size:12px">1</button>
<button style="padding:4px 10px;border:1px solid #e2e8f0;border-radius:4px;background:#fff;cursor:pointer;font-size:12px">2</button>
<button style="padding:4px 10px;border:1px solid #e2e8f0;border-radius:4px;background:#fff;cursor:pointer;font-size:12px">3</button>
<button style="padding:4px 10px;border:1px solid #e2e8f0;border-radius:4px;background:#fff;cursor:pointer;font-size:12px">下一页</button>
</div>
</div>
</div>
<!-- 批量操作栏 -->
<div style="margin-top:12px;display:flex;gap:8px;align-items:center">
<span style="font-size:12px;color:#64748b">批量操作:</span>
<button style="padding:6px 14px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;cursor:pointer;font-size:12px;color:#22c55e">批量启用</button>
<button style="padding:6px 14px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;cursor:pointer;font-size:12px;color:#f59e0b">批量停用</button>
<button style="padding:6px 14px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;cursor:pointer;font-size:12px;color:#ef4444">批量删除</button>
<span style="font-size:12px;color:#9ca3af;margin-left:8px">已选择 0 条</span>
</div>
</div>
```
#### 4.2.2 页面原型 — 新建/编辑规则表单
```html
<!-- 管理后台:代答排除规则新建/编辑弹窗 -->
<div style="max-width:640px;margin:0 auto;background:#fff;border-radius:12px;box-shadow:0 8px 32px rgba(0,0,0,0.12);overflow:hidden;font-family:'PingFang SC',sans-serif;font-size:13px">
<!-- 弹窗标题 -->
<div style="padding:16px 20px;border-bottom:1px solid #e2e8f0;display:flex;align-items:center;justify-content:space-between">
<div style="display:flex;align-items:center;gap:8px"><span style="font-size:18px"></span><span style="font-size:16px;font-weight:600;color:#1e293b">新建代答排除规则</span></div>
<span style="font-size:18px;color:#9ca3af;cursor:pointer"></span>
</div>
<!-- 表单内容 -->
<div style="padding:20px;max-height:520px;overflow-y:auto">
<!-- 规则名称 -->
<div style="margin-bottom:16px">
<div style="margin-bottom:6px"><span style="font-size:13px;font-weight:500;color:#1e293b">规则名称</span><span style="color:#ef4444;font-size:13px"> *</span></div>
<input type="text" value="薪资人事类问题排除" style="width:100%;padding:8px 12px;border:1px solid #e2e8f0;border-radius:6px;font-size:13px;box-sizing:border-box">
<div style="font-size:11px;color:#9ca3af;margin-top:4px">规则名称需唯一,建议使用"排除类型+问题域"格式</div>
</div>
<!-- 规则描述 -->
<div style="margin-bottom:16px">
<div style="margin-bottom:6px"><span style="font-size:13px;font-weight:500;color:#1e293b">规则描述</span></div>
<textarea style="width:100%;padding:8px 12px;border:1px solid #e2e8f0;border-radius:6px;font-size:13px;box-sizing:border-box;resize:vertical;min-height:60px">防止AI回答薪资、人事变动等敏感问题,命中后直接转人工坐席处理</textarea>
</div>
<!-- 优先级 -->
<div style="margin-bottom:16px">
<div style="margin-bottom:6px"><span style="font-size:13px;font-weight:500;color:#1e293b">优先级</span><span style="color:#ef4444;font-size:13px"> *</span></div>
<div style="display:flex;gap:8px">
<label style="display:flex;align-items:center;gap:4px;cursor:pointer;padding:6px 14px;border:1px solid #ef4444;border-radius:6px;background:#fee2e2"><input type="radio" name="priority" checked> <span style="font-size:13px;color:#ef4444;font-weight:600">P0-最高</span></label>
<label style="display:flex;align-items:center;gap:4px;cursor:pointer;padding:6px 14px;border:1px solid #e2e8f0;border-radius:6px;background:#fff"><input type="radio" name="priority"> <span style="font-size:13px;color:#b45309">P1-高</span></label>
<label style="display:flex;align-items:center;gap:4px;cursor:pointer;padding:6px 14px;border:1px solid #e2e8f0;border-radius:6px;background:#fff"><input type="radio" name="priority"> <span style="font-size:13px;color:#64748b">P2-中</span></label>
<label style="display:flex;align-items:center;gap:4px;cursor:pointer;padding:6px 14px;border:1px solid #e2e8f0;border-radius:6px;background:#fff"><input type="radio" name="priority"> <span style="font-size:13px;color:#9ca3af">P3-低</span></label>
</div>
<div style="font-size:11px;color:#9ca3af;margin-top:4px">优先级越高越先匹配,同优先级按创建时间排序</div>
</div>
<!-- 匹配方式 -->
<div style="margin-bottom:16px">
<div style="margin-bottom:6px"><span style="font-size:13px;font-weight:500;color:#1e293b">匹配方式</span><span style="color:#ef4444;font-size:13px"> *</span></div>
<div style="display:flex;gap:8px">
<label style="display:flex;align-items:center;gap:4px;cursor:pointer;padding:8px 16px;border:1px solid #07C160;border-radius:6px;background:#e8f5e9;flex:1;justify-content:center"><input type="radio" name="matchType" checked><span style="font-size:13px;color:#07C160;font-weight:600">关键词匹配</span></label>
<label style="display:flex;align-items:center;gap:4px;cursor:pointer;padding:8px 16px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;flex:1;justify-content:center"><input type="radio" name="matchType"><span style="font-size:13px;color:#64748b">正则匹配</span></label>
<label style="display:flex;align-items:center;gap:4px;cursor:pointer;padding:8px 16px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;flex:1;justify-content:center"><input type="radio" name="matchType"><span style="font-size:13px;color:#64748b">意图匹配</span></label>
<label style="display:flex;align-items:center;gap:4px;cursor:pointer;padding:8px 16px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;flex:1;justify-content:center"><input type="radio" name="matchType"><span style="font-size:13px;color:#64748b">分类排除</span></label>
</div>
</div>
<!-- 匹配条件(关键词匹配模式) -->
<div style="margin-bottom:16px">
<div style="margin-bottom:6px"><span style="font-size:13px;font-weight:500;color:#1e293b">匹配关键词</span><span style="color:#ef4444;font-size:13px"> *</span></div>
<div style="border:1px solid #e2e8f0;border-radius:6px;padding:8px;min-height:80px">
<span style="display:inline-flex;align-items:center;gap:4px;background:#e8f5e9;color:#07C160;padding:3px 10px;border-radius:12px;font-size:12px;margin:2px">薪资 <span style="cursor:pointer"></span></span>
<span style="display:inline-flex;align-items:center;gap:4px;background:#e8f5e9;color:#07C160;padding:3px 10px;border-radius:12px;font-size:12px;margin:2px">工资 <span style="cursor:pointer"></span></span>
<span style="display:inline-flex;align-items:center;gap:4px;background:#e8f5e9;color:#07C160;padding:3px 10px;border-radius:12px;font-size:12px;margin:2px">调薪 <span style="cursor:pointer"></span></span>
<span style="display:inline-flex;align-items:center;gap:4px;background:#e8f5e9;color:#07C160;padding:3px 10px;border-radius:12px;font-size:12px;margin:2px">晋升 <span style="cursor:pointer"></span></span>
<span style="display:inline-flex;align-items:center;gap:4px;background:#e8f5e9;color:#07C160;padding:3px 10px;border-radius:12px;font-size:12px;margin:2px">辞退 <span style="cursor:pointer"></span></span>
<span style="display:inline-flex;align-items:center;gap:4px;background:#e8f5e9;color:#07C160;padding:3px 10px;border-radius:12px;font-size:12px;margin:2px">离职 <span style="cursor:pointer"></span></span>
<input type="text" placeholder="输入关键词后回车添加..." style="border:none;outline:none;font-size:13px;padding:4px;width:200px">
</div>
<div style="font-size:11px;color:#9ca3af;margin-top:4px">用户提问包含任一关键词即命中排除规则</div>
</div>
<!-- 匹配范围 -->
<div style="margin-bottom:16px">
<div style="margin-bottom:6px"><span style="font-size:13px;font-weight:500;color:#1e293b">匹配范围</span></div>
<div style="display:flex;gap:16px">
<label style="display:flex;align-items:center;gap:4px;cursor:pointer"><input type="checkbox" checked> <span style="font-size:13px;color:#1e293b">仅AI自动回复时</span></label>
<label style="display:flex;align-items:center;gap:4px;cursor:pointer"><input type="checkbox"> <span style="font-size:13px;color:#1e293b">AI分诊确认时</span></label>
<label style="display:flex;align-items:center;gap:4px;cursor:pointer"><input type="checkbox"> <span style="font-size:13px;color:#1e293b">坐席代答推荐时</span></label>
</div>
<div style="font-size:11px;color:#9ca3af;margin-top:4px">选择在哪些AI环节生效,默认仅在AI自动回复时排除</div>
</div>
<!-- 命中后动作 -->
<div style="margin-bottom:16px">
<div style="margin-bottom:6px"><span style="font-size:13px;font-weight:500;color:#1e293b">命中后动作</span><span style="color:#ef4444;font-size:13px"> *</span></div>
<select style="width:100%;padding:8px 12px;border:1px solid #e2e8f0;border-radius:6px;font-size:13px;background:#fff;box-sizing:border-box">
<option>转人工坐席(默认)</option><option>转人工坐席 + 携带上下文</option><option>仅提示用户转人工</option><option>静默转人工(不提示用户)</option>
</select>
</div>
<!-- 转接提示语 -->
<div style="margin-bottom:16px">
<div style="margin-bottom:6px"><span style="font-size:13px;font-weight:500;color:#1e293b">转接提示语</span></div>
<textarea style="width:100%;padding:8px 12px;border:1px solid #e2e8f0;border-radius:6px;font-size:13px;box-sizing:border-box;resize:vertical;min-height:50px">该问题涉及敏感信息,已为您转接人工坐席处理,请稍候。</textarea>
<div style="font-size:11px;color:#9ca3af;margin-top:4px">命中规则后展示给员工的消息,留空则使用系统默认提示</div>
</div>
<!-- 启用状态 -->
<div style="margin-bottom:16px">
<div style="margin-bottom:6px"><span style="font-size:13px;font-weight:500;color:#1e293b">启用状态</span></div>
<div style="display:flex;align-items:center;gap:8px">
<div style="width:40px;height:22px;border-radius:11px;background:#07C160;position:relative;cursor:pointer"><div style="width:18px;height:18px;border-radius:50%;background:#fff;position:absolute;top:2px;left:20px"></div></div>
<span style="font-size:13px;color:#07C160;font-weight:500">已启用</span>
</div>
</div>
</div>
<!-- 弹窗底部操作 -->
<div style="padding:12px 20px;border-top:1px solid #e2e8f0;display:flex;justify-content:space-between;align-items:center;background:#f8fafc">
<button style="padding:8px 16px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;color:#64748b;cursor:pointer;font-size:13px">🔍 测试匹配</button>
<div style="display:flex;gap:8px">
<button style="padding:8px 20px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;color:#64748b;cursor:pointer;font-size:13px">取消</button>
<button style="padding:8px 20px;border:none;border-radius:6px;background:#07C160;color:#fff;cursor:pointer;font-size:13px;font-weight:500">保存规则</button>
</div>
</div>
</div>
```
#### 4.2.3 页面原型 — 空状态 & 测试匹配弹窗
```html
<!-- 管理后台:无排除规则时的空状态 -->
<div style="background:#fff;border-radius:8px;padding:80px 20px;text-align:center">
<div style="font-size:48px;margin-bottom:12px">📋</div>
<div style="font-size:16px;font-weight:600;color:#1e293b;margin-bottom:6px">暂无代答排除规则</div>
<div style="font-size:13px;color:#64748b;margin-bottom:16px;max-width:400px;margin-left:auto;margin-right:auto">当前未配置任何代答排除规则,AI将对所有问题尝试自动回复。<br>建议为敏感问题、合规要求等场景配置排除规则。</div>
<button style="padding:10px 24px;border:none;border-radius:6px;background:#07C160;color:#fff;cursor:pointer;font-size:14px;font-weight:500"> 新建第一条规则</button>
</div>
```
```html
<!-- 管理后台:规则匹配测试弹窗 -->
<div style="max-width:500px;margin:0 auto;background:#fff;border-radius:12px;box-shadow:0 8px 32px rgba(0,0,0,0.12);overflow:hidden;font-family:'PingFang SC',sans-serif;font-size:13px">
<div style="padding:16px 20px;border-bottom:1px solid #e2e8f0;display:flex;align-items:center;justify-content:space-between">
<div style="display:flex;align-items:center;gap:8px"><span style="font-size:18px">🔍</span><span style="font-size:16px;font-weight:600;color:#1e293b">测试规则匹配</span></div>
<span style="font-size:18px;color:#9ca3af;cursor:pointer"></span>
</div>
<div style="padding:20px">
<div style="margin-bottom:12px"><span style="font-size:13px;font-weight:500;color:#1e293b">输入测试文本</span></div>
<textarea style="width:100%;padding:10px 12px;border:1px solid #e2e8f0;border-radius:6px;font-size:13px;box-sizing:border-box;resize:vertical;min-height:70px">我想了解一下最近有没有调薪计划</textarea>
<div style="text-align:right;margin-top:8px"><button style="padding:6px 16px;border:none;border-radius:6px;background:#3b82f6;color:#fff;cursor:pointer;font-size:13px">▶ 执行测试</button></div>
<!-- 测试结果 -->
<div style="margin-top:16px;border:1px solid #e2e8f0;border-radius:8px;padding:14px">
<div style="margin-bottom:10px"><span style="font-size:12px;font-weight:600;color:#64748b">测试结果</span></div>
<div style="display:flex;align-items:flex-start;gap:10px;padding:10px;background:#fef2f2;border-radius:6px">
<span style="font-size:20px">🚫</span>
<div style="flex:1">
<div style="font-weight:600;font-size:14px;color:#ef4444">命中排除规则</div>
<div style="font-size:12px;color:#64748b;margin-top:4px">命中规则: <strong>薪资人事类问题排除</strong>P0</div>
<div style="font-size:12px;color:#64748b;margin-top:2px">命中关键词: <span style="background:#fee2e2;color:#ef4444;padding:1px 6px;border-radius:4px;font-weight:600">调薪</span></div>
<div style="font-size:12px;color:#64748b;margin-top:2px">执行动作: 转人工坐席 + 携带上下文</div>
</div>
</div>
<div style="margin-top:10px;font-size:12px;color:#64748b">
<div style="margin-bottom:4px"><strong>匹配详情:</strong></div>
<div style="background:#f8fafc;border-radius:4px;padding:8px;font-family:monospace;font-size:11px;color:#1e293b">
输入文本: "我想了解一下最近有没有<span style="background:#fee2e2;color:#ef4444">调薪</span>计划"<br>
匹配模式: 关键词包含<br>
匹配位置: 第15-17字符<br>
匹配耗时: 2ms
</div>
</div>
</div>
</div>
<div style="padding:12px 20px;border-top:1px solid #e2e8f0;display:flex;justify-content:flex-end;gap:8px;background:#f8fafc">
<button style="padding:8px 20px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;color:#64748b;cursor:pointer;font-size:13px">关闭</button>
<button style="padding:8px 20px;border:none;border-radius:6px;background:#3b82f6;color:#fff;cursor:pointer;font-size:13px">再次测试</button>
</div>
</div>
```
### 4.3 规则匹配流程Mermaid图
```mermaid
flowchart TD
A[员工发送消息] --> B[AI意图识别]
B --> C{代答排除检查}
C -->|无启用规则| D[正常AI自动回复流程]
C -->|有启用规则| E[按优先级排序规则列表]
E --> F[取最高优先级规则]
F --> G{匹配方式判断}
G -->|关键词匹配| H[检查用户消息是否包含关键词]
G -->|正则匹配| I[正则表达式匹配用户消息]
G -->|意图匹配| J[检查AI识别的意图是否在排除列表中]
G -->|分类排除| K[检查问题分类是否在排除分类中]
H --> L{是否命中}
I --> L
J --> L
K --> L
L -->|命中| M[执行命中后动作]
L -->|未命中| N{还有下一优先级规则?}
N -->|是| O[取下一优先级规则]
O --> G
N -->|否| D
M --> P{命中后动作类型}
P -->|转人工坐席| Q[携带上下文转接坐席]
P -->|转人工+上下文| Q
P -->|仅提示转人工| R[展示提示语 等待用户确认]
P -->|静默转人工| S[静默转接 不提示用户]
Q --> T[记录命中日志]
R --> T
S --> T
T --> U[更新规则命中统计]
U --> V[流程结束]
D --> V
```
### 4.4 字段定义表
#### 规则列表字段
| 字段名 | 类型 | 必填 | 说明 | 示例 |
|--------|------|------|------|------|
| rule_id | string | 是 | 规则唯一ID(自动生成) | "RULE_001" |
| rule_name | string | 是 | 规则名称(唯一) | "薪资人事类问题排除" |
| rule_description | string | 否 | 规则描述 | "防止AI回答薪资、人事变动等敏感问题" |
| priority | enum | 是 | 优先级 | "P0" / "P1" / "P2" / "P3" |
| match_type | enum | 是 | 匹配方式 | "keyword" / "regex" / "intent" / "category" |
| match_condition | string | 是 | 匹配条件 | "薪资,工资,调薪,晋升,辞退,离职" |
| match_scope | array | 是 | 匹配范围 | ["ai_auto_reply"] |
| action_type | enum | 是 | 命中后动作 | "transfer_human" / "transfer_human_with_context" / "prompt_transfer" / "silent_transfer" |
| transfer_message | string | 否 | 转接提示语 | "该问题涉及敏感信息,已为您转接人工坐席处理" |
| status | enum | 是 | 启用状态 | "enabled" / "disabled" |
| hit_count | int | 是 | 命中次数(本月) | 42 |
| created_by | string | 是 | 创建人 | "admin" |
| created_at | datetime | 是 | 创建时间 | "2026-07-09 14:30:00" |
| updated_at | datetime | 是 | 更新时间 | "2026-07-09 14:30:00" |
#### 匹配方式说明
| 匹配方式 | 标识色 | 匹配条件格式 | 匹配逻辑 | 适用场景 |
|---------|--------|-------------|---------|---------|
| 关键词匹配 | 蓝色 | 逗号分隔的关键词列表 | 用户消息包含任一关键词即命中 | 敏感词、特定术语 |
| 正则匹配 | 粉色 | 正则表达式 | 用户消息匹配正则即命中 | 复杂模式匹配(投诉句式) |
| 意图匹配 | 紫色 | 逗号分隔的意图ID列表 | AI识别的意图在列表中即命中 | 需AI意图识别配合的场景 |
| 分类排除 | 绿色 | 逗号分隔的分类名称列表 | 问题分类在列表中即命中 | 按问题大类整体排除 |
#### 命中后动作说明
| 动作类型 | 说明 | 员工体验 | 坐席体验 |
|---------|------|---------|---------|
| 转人工坐席 | 直接转接坐席队列 | 看到"已转接人工"提示 | 收到转接会话,含基本信息 |
| 转人工+上下文 | 转接时携带AI已收集的上下文 | 看到"已转接人工"提示 | 收到转接会话,含上下文快照 |
| 仅提示转人工 | 提示用户后等待确认 | 看到提示语,可选择确认转人工 | 用户确认后才收到转接 |
| 静默转人工 | 不提示用户直接转接 | 无感知,直接进入人工队列 | 收到转接会话 |
---
## 5. 统一设计规范
### 5.1 颜色规范
| 用途 | 变量名 | 色值 | 使用场景 |
|------|--------|------|---------|
| 主色(企微绿) | --accent | #07C160 | 管理后台主按钮、H5端主色调、AI自助标识 |
| 主色浅 | --accent-light | #e8f5e9 | 主色背景、标签背景 |
| 辅助色(蓝) | --info | #3B82F6 | 坐席端主色调、链接、信息提示 |
| 辅助色浅 | --info-light | #dbeafe | 蓝色标签背景 |
| 警告色(橙) | --warning | #F59E0B | 置信度中等、待处理状态、P1优先级 |
| 警告色浅 | --warning-light | #fef3c7 | 警告标签背景 |
| 危险色(红) | --danger | #EF4444 | 置信度低、紧急、删除操作、P0优先级 |
| 危险色浅 | --danger-light | #fee2e2 | 危险标签背景 |
| 成功色(绿) | --success | #22C55E | 成功状态、启用状态、高置信度 |
| 成功色浅 | --success-light | #dcfce7 | 成功标签背景 |
| 紫色 | --purple | #8B5CF6 | 意图匹配标识、转人工统计 |
| 紫色浅 | --purple-light | #ede9fe | 紫色标签背景 |
| 背景色 | --bg-primary | #f5f7fa | 页面背景 |
| 卡片背景 | --bg-secondary | #ffffff | 卡片、表格背景 |
| 边框色 | --border | #e2e8f0 | 分割线、卡片边框 |
| 主文字 | --text-primary | #1e293b / #1f2937 | 标题、正文 |
| 次文字 | --text-secondary | #64748b / #6b7280 | 描述、标签 |
| 辅助文字 | --text-muted | #9ca3af | 时间、辅助说明 |
### 5.2 字体规范
| 层级 | 管理后台/坐席端 | H5端 |
|------|----------------|------|
| 页面标题 | 20px / 600 | 16px / 600 |
| 区块标题 | 16px / 600 | 15px / 600 |
| 卡片标题 | 14px / 600 | 14px / 500 |
| 正文 | 13px / 400 | 14px / 400 |
| 辅助文字 | 12px / 400 | 12px / 400 |
| 标签文字 | 11px / 600 | 10-11px / 600 |
| 字体族 | 'PingFang SC', 'Microsoft YaHei', sans-serif | -apple-system, BlinkMacSystemFont, sans-serif |
### 5.3 间距规范
| 用途 | 管理后台/坐席端 | H5端 |
|------|----------------|------|
| 页面内边距 | 20px | 12px |
| 卡片内边距 | 14-16px | 12-14px |
| 元素间距 | 12-16px | 8-12px |
| 紧凑间距 | 8px | 6px |
| 圆角 | 6-8px(卡片)/ 4px(输入框) | 12px(气泡)/ 8px(卡片) |
### 5.4 组件复用说明
#### 跨页面复用组件
| 组件名 | 使用页面 | 说明 |
|--------|---------|------|
| 统计概要栏 | 分诊看板、拓扑预览、代答排除 | flex布局,每项含数值+标签,左侧色条标识 |
| 筛选工具栏 | 分诊看板、拓扑预览、代答排除 | input+select组合,右侧操作按钮 |
| 空状态 | 分诊看板、拓扑预览、代答排除 | 居中图标+标题+描述+操作按钮 |
| 状态开关 | 代答排除规则列表 | 32×18px胶囊开关,绿色=启用/灰色=停用 |
| 优先级标签 | 代答排除规则列表 | P0红/P1橙/P2灰/P3浅灰 |
| 匹配方式标签 | 代答排除规则列表 | 蓝(关键词)/粉(正则)/紫(意图)/绿(分类) |
| 置信度标签 | H5分诊卡片、坐席分诊看板 | 绿(≥70%)/橙(50-70%)/红(<50%) |
| 紧急度标签 | 坐席分诊看板 | 红(紧急)/橙(一般)/绿(低) |
#### 图标使用规范
| 图标 | 含义 | 使用场景 |
|------|------|---------|
| 🤖 | AI/机器人 | AI分诊标识、AI自助路由 |
| 👤 | 人工/人员 | 转人工路由、用户信息 |
| 📋 | 列表/审批 | 审批路由、列表视图 |
| 🔀 | 分诊/路由 | 分诊看板标题 |
| 🔮 | 图谱/预览 | 拓扑预览标题 |
| ✋ | 排除/阻止 | 代答排除标题 |
| ⚠️ | 警告 | 置信门控、超时提示 |
| ✅ | 成功/完成 | 转接成功、审核通过 |
| 🔍 | 搜索 | 搜索按钮、测试匹配 |
| 📊 | 统计 | 统计概要栏 |
### 5.5 响应式适配说明
| 端 | 断点 | 布局变化 |
|----|------|---------|
| H5端 | <500px | 单栏布局,分诊卡片全宽 |
| H5端 | ≥500px | 双栏布局(对话+面板),分诊卡片75%宽 |
| 坐席端 | ≥1280px | 三栏工作台(会话列表+对话+AI面板) |
| 管理后台 | ≥1024px | 完整工具栏+表格+侧边面板 |
| 管理后台 | <1024px | 工具栏折叠为图标,侧边面板变为弹窗 |
---
## 附录:文档变更记录
| 版本 | 日期 | 变更内容 | 作者 |
|------|------|---------|------|
| v1.0 | 2026-07-11 | 初始版本,包含分诊交互、拓扑预览、代答排除3个功能的原型设计 | 产品经理 |
---
> **文档结束** | IT智能服务台 · 知识库迭代 · 未实现功能原型设计 v1.0