# 企微智能IT支持服务台 — 产品需求文档 (PRD) > **文档版本**: v1.8 > **创建日期**: 2025-07-11 > **最近更新**: 2026-07-05 > **产品经理**: 许清楚 (Xu) · 宋献 > **状态**: 阶段一开发完成,待端到端验证 > **说明**: 本文档已合并原 `PRD-v53-incremental.md` 内容(v5.3 坐席工作台增量需求)。v1.0 更新:新增管理后台远景规划(§17)、系统生态与集成规划(§18)、阶段细化与并行推进策略(§19);明确管理后台为第三端产品;确立 AI 混合策略(流程图+AI+标注+迭代);将阶段一细化为 1A/1B/1C 子阶段;新增零基础人员原则。v1.1 更新:新增邀请功能设计(§20),将邀请功能纳入M1 MVP(1A子阶段),新增P0-09~P0-11和P1-14~P1-16需求。v1.2 更新:整合 `PRD-增量-人工按钮与术语统一.md` 内容为新章节§10 术语与图标规范。v1.3 更新:新增 §4.7 指标体系详细设计;修复 §16 v5.3 内部章节编号;将 v5.3 项目信息移至 §1.1。v1.4 更新(2026-07-04):**产品经理视角重构**——新增 §1 产品愿景与目标、§1.5 用户画像、§1.6 非目标章节;补充竞品分析至产品定义章节。v1.8 更新(2026-07-06):新增P1功能需求(满意度评价P1-24、知识库基础P1-25);新增P2功能需求(自动摘要P2-11、数据看板P2-12);创建「功能详细规格说明书-P1P2功能.md」作为专项文档;完成技术可行性研究。 > **章节编号说明**: 主文档章节编号为 1-21,附录使用独立编号体系(附录A、附录B、附录C)。后续新增章节应按顺序递增。 > **文档合并记录 (2026-07-05)**: > - ✅ 归档 `PRD-admin.md` → 内容已整合至 §17 管理后台远景规划 > - ✅ 归档 `重构方案-增量PRD.md` → 内容已由重构方案文档覆盖 > - ✅ 归档 `PRD-增量-GoFly与知识图谱重构.md` → 内容已移至archive > - ✅ 整合 `PRD-增量-人工按钮与术语统一.md` → 内容已整合至 §10 术语与图标规范 > - ✅ 整合 `03-需求-应急降级页发布预演.md` → 内容已整合至 §21 应急降级页设计 --- ## 目录 1. [产品愿景与目标](#1-产品愿景与目标) - 1.1 产品愿景 - 1.2 产品定位 - 1.3 产品目标 - 1.5 用户画像 - 1.6 非目标 2. [项目背景](#2-项目背景) 3. [方案可行性判断](#3-方案可行性判断) 4. [产品定义](#4-产品定义) - 4.1 产品目标 - 4.1.5 非目标 - 4.2 用户故事 - 4.3 竞品分析 5. [五阶段演进路径](#5-五阶段演进路径) 6. [需求池](#6-需求池) 7. [并行协作模式](#7-并行协作模式) 8. [界面设计](#8-界面设计) 9. [摇人功能设计](#9-摇人功能设计) 10. [术语与图标规范](#10-术语与图标规范) 11. [技术约束](#11-技术约束(原§10)) 12. [数据模型核心设计](#12-数据模型核心设计) 13. [待确认问题](#13-待确认问题) 14. [里程碑与交付物](#14-里程碑与交付物) 15. [AI Wingman — 坐席智能辅助设计](#15-ai-wingman--坐席智能辅助设计) 16. [v5.3 坐席工作台增量需求](#16-v53-坐席工作台增量需求) 17. [管理后台远景规划](#17-管理后台远景规划) 18. [系统生态与集成规划](#18-系统生态与集成规划) 19. [阶段细化与并行推进策略](#19-阶段细化与并行推进策略) 20. [邀请功能设计 — 多人会话协作](#20-邀请功能设计--多人会话协作) 21. [应急降级页设计 — BC/DR 业务连续性保障](#21-应急降级页设计--bcdr-业务连续性保障) 22. [阶段5 自动化闭环需求](#22-阶段5-自动化闭环需求) --- 附录 A: [术语表](#附录-a-术语表) 附录 B: [企微API关键接口](#附录-b-企微api关键接口) 附录 C: [TeliChat 技术分析](#附录-c-telichat-技术分析) | 字段 | 值 | |------|------| | 项目名称 | `wecom_it_smart_desk` | | 编程语言 | 后端: FastAPI + Redis + PostgreSQL / 前端: Vue3 + ElementPlus | | 部署环境 | Linux 服务器 (4核8GB+), Docker | | 文档语言 | 中文 | | 原始需求 | 基于企微自建应用消息API,自研IT服务坐席系统,替代企微"员工服务"模块,解决员工体验(绕过AI/另开窗口/无法跨主体)和管理人效(质量不稳定/成长慢/经验流失/缺乏数据)七项痛点 | --- ## 1. 产品愿景与目标 > **新增日期**: 2026-07-04 | **状态**: 核心章节 ### 1.1 产品愿景 **一句话描述**:打造基于企业微信生态的**免费开源企业级IT服务台**,让IT支持像发微信一样简单。 **核心价值主张**: - **员工视角**:IT问题"像发微信一样简单"——AI先答、人工无缝衔接、不用切换窗口 - **IT管理者视角**:低成本、高效率、可量化——坐席减负70%、AI解决80%、数据驱动决策 - **CTO/IT负责人视角**:自主可控、安全合规——私有化部署、国产大模型集成、终端安全一体化 ### 1.2 产品定位 | 维度 | 定位 | |------|------| | **产品类型** | 企业级ITSM(IT服务管理) | | **目标客户** | 3000-10000人中型企业,使用企业微信 | | **核心差异** | 企微原生集成 + 终端安全(火绒+联软)+ AI混合策略 | | **商业模式** | 社区版免费,专业版定制收费 | ### 1.3 产品目标 1. **效率目标**:AI首答解决率≥80%,人工坐席响应时间≤60秒 2. **体验目标**:员工满意度≥4.5星,问题解决率≥90% 3. **运营目标**:坐席人均日处理≤30会话,自助服务率≥40% --- ## 1.4 用户画像 > **新增日期**: 2026-07-04 | **状态**: 核心章节 ### 1.4.1 核心用户角色 | 角色 | 用户故事 | 痛点 | 期望 | |------|---------|------|------| | **普通员工** | "我的电脑突然上不了网了" | 不知道找谁、描述不清、等待时间长 | 快速响应、一次解决 | | **VIP员工**(总监及以上) | "我的VPN怎么连不上" | 不想排队等待、要求优先处理 | 优先响应、专属通道 | | **IT坐席** | "每天处理50个重复问题" | 重复回答、手工录入、低效沟通 | 智能辅助、快捷回复 | | **IT主管** | "如何提升团队效率" | 缺乏数据、难以量化、经验流失 | 数据看板、绩效分析 | | **系统管理员** | "配置新功能上线" | 操作复杂、风险难控、权限混乱 | 简单配置、权限明晰 | ### 1.4.2 典型用户场景 | 场景 | 角色 | 行为 | 期望结果 | |------|------|------|---------| | 电脑故障咨询 | 普通员工 | 企微发消息→AI回复→未解决→转人工 | 10分钟内解决问题 | | 紧急IT故障 | VIP员工 | 直接@IT负责人 | 5分钟内响应,30分钟内解决 | | 批量软件安装 | IT坐席 | 使用快速回复模板 | 单会话30秒内完成 | | 周报汇总 | IT主管 | 查看数据看板 | 一键生成周报 | --- ## 1.5 非目标(Out of Scope) 以下内容**不在本产品范围内**: | # | 非目标 | 原因 | 后续规划 | |---|--------|------|---------| | N1 | 移动端独立App | 企微H5已满足移动办公需求 | 暂不考虑 | | N2 | 微信生态(仅企微) | 公司统一使用企微 | 暂不支持 | | N3 | 跨企业共享(母子公司) | 阶段三目标,当前不实现 | 阶段三 | | N4 | 完整ITSM工单系统 | 聚焦咨询场景,工单用现有系统 | 与现有工单系统集成 | | N5 | 企微设备管理API | 付费功能,公司未购买 | 待采购后 | | N6 | 视频客服能力 | 当前无此需求 | 未来可选 | --- ## 2. 项目背景 公司是一家约6000人的上市公司,全国主要城市设有分子机构,使用企业微信作为内部即时通讯系统。 ### 2.1 现有生产环境现状 公司已通过企微AI机器人API接口与本地化千问模型、RAGFlow、Dify实现智能IT助手回答内部员工IT咨询。转人工环节使用关键字命中后返回企微员工服务功能跳转链接。 **现有系统架构**: ``` ┌────────────────────────────────────────────────────────────────┐ │ 现有生产环境架构 │ │ │ │ 员工 ←─1对1消息─→ 企微AI机器人应用 │ │ │ │ │ ├─ AI回复 → RAGFlow + Dify + 千问 │ │ │ (知识库语义检索 + 大模型生成) │ │ │ │ │ ├─ 关键字触发 → 推送"员工服务"入口链接 │ │ │ (如输入"转人工"/"人工"等关键字) │ │ │ │ │ └─ 员工点击链接 → 跳转企微-员工服务-桌面IT支持 │ │ (新窗口,人工坐席处理) │ │ │ │ 企微-员工服务-桌面IT支持: │ │ · 企微内置客服模块,员工服务号接入 │ │ · 排队分配 → 人工坐席1对1对话 │ │ · 无AI辅助、无知识管理、无数据统计 │ └────────────────────────────────────────────────────────────────┘ ``` **现有系统组成**: | 组件 | 说明 | 状态 | |------|------|------| | 企微AI机器人 | 企微自建应用,1对1消息交互 | 已上线运行 | | RAGFlow | 检索增强生成引擎,知识库语义检索 | 已上线运行 | | Dify | AI应用开发平台,编排千问模型 | 已上线运行 | | 千问(通义) | 阿里云大模型,AI回复生成 | 已上线运行 | | 企微-员工服务 | 企微内置客服模块,人工坐席服务 | 已上线运行 | | 关键字触发转人工 | 输入指定关键字后推送员工服务链接 | 已上线运行 | **现有系统核心问题**: | # | 问题 | 现状描述 | |---|------|---------| | 1 | AI→人工跳转割裂 | 关键字触发后仅推送链接,员工需手动点击跳转到"员工服务"新窗口 | | 2 | 无法强制AI前置 | 员工可直接进入"员工服务"入口绕过AI,AI筛选比例低 | | 3 | 坐席无AI辅助 | 人工坐席在"员工服务"模块中纯手动回复,无智能推荐、无快速回复 | | 4 | 知识无法积累 | 坐席个人经验无法沉淀,AI知识库与坐席实际工作脱节 | | 5 | 无数据闭环 | 缺乏坐席绩效、AI回答质量、员工满意度的量化数据 | | 6 | 跨主体不可达 | "员工服务"模块不支持互联企业,跨企业员工无法使用 | ### 2.2 痛点分析 > **痛点归纳说明**:将原7条痛点归纳为4条核心痛点,每条对应明确的解决阶段,便于追溯开发升级功能的针对性。 | # | 核心痛点 | 具体表现(归纳自原痛点) | 影响 | 解决阶段 | |---|---------|----------------------|------|---------| | 1 | **员工入口体验差** | ①员工可绕过AI直达人工,AI筛选比例极低;②转人工需另开新窗口,体验割裂;③AI机器人和员工服务无法跨主体共享,跨企业服务不可达 | AI使用率低,员工困惑,服务覆盖范围受限 | **阶段二** | | 2 | **坐席能力不稳定** | ①坐席回复质量依赖个人能力和经验,受情绪/状态影响;②实习生成长慢,辅导老师投入大但产出低,知识传承断档 | 服务质量参差不齐,人才培养投入产出比低 | **阶段三** | | 3 | **知识无法积累传承** | 坐席个人经验和成果无法有效积累、传承、迭代更新,人员离职即经验流失 | 团队整体能力无法持续提升,重复踩坑 | **阶段四** | | 4 | **管理缺乏数据支撑** | 坐席能力和绩效、IT支持员工满意度缺乏有效数据支撑,管理决策凭感觉 | 无法量化评估和持续优化,管理盲区大 | **阶段四** | > **核心约束**: 所有对象都是企业内员工,必须避免使用企微微信客服能力。 > **痛点与阶段映射**: 痛点1(员工体验层)→ 阶段二解决;痛点2(坐席能力层)→ 阶段三解决;痛点3~4(管理迭代层)→ 阶段四解决。阶段五(自动/辅助审核开单结单)进一步解决多系统切换效率问题,提升整体人效。 --- ## 3. 方案可行性判断 ### 3.1 方案对比 > **对比基准**:新增"现有生产环境"行(企微AI机器人 + RAGFlow + Dify + 千问 + 员工服务),作为各方案的改进参照。 | 方案 | 痛点1
入口体验差 | 痛点2
能力不稳定 | 痛点3
知识不传承 | 痛点4
缺数据 | 推荐度 | |------|:-:|:-:|:-:|:-:|--------| | **现有:AI机器人+员工服务** | ❌ | ❌ | ❌ | ❌ | ⬅️ 对比基准 | | 方式一:企微自建应用API + 员工服务转接 | ❌ | ❌ | ❌ | ❌ | ❌ 不推荐 | | 方式二:企微自建应用消息 + 自研坐席后台 | ✅ | ✅ | ✅ | ✅ | ✅ 推荐 | | 方式三:企微WebView嵌入 + 开源客服 | ⚠️ | ⚠️ | ❌ | ⚠️ | 有条件推荐 | | **方式四:混合分阶段演进路径(H5优先)** | **✅** | **✅** | **✅** | **✅** | **✅ 当前推进方案** | | 方式五:企微原生1对1 + 外援群聊 | ⚠️ | ✅ | ✅ | ✅ | 应急备选 | > **说明**: 痛点1为体验层(方案对比核心维度),痛点2为坐席能力层,痛点3-4为管理与人效层(依赖自研坐席后台能力,方式一/三不具备)。 > > **现有系统 vs 各方案的关键差异**:现有系统的"员工入口体验差"(可绕过AI、需另开窗口、无法跨主体)是最大体验短板。方式四通过H5 WebView在同一页面内完成AI→人工无缝切换,彻底解决此问题。 ### 3.2 各方案原理与优劣 #### 方式一:企微自建应用API + 员工服务转接 **原理**:自建应用接收员工消息,通过企微"员工服务"模块的API将对话转接到人工坐席。员工在自建应用中与AI对话,转人工时跳转到企微"员工服务"窗口。 | 优点 | 缺点 | |------|------| | 开发量最小,复用企微现有员工服务能力 | 仍需另开窗口(员工服务与自建应用是两个独立窗口) | | 员工服务模块有基础的排队、分配功能 | 无法强制AI前置筛选,员工可直接进入员工服务 | | | 无法跨主体共享(员工服务模块不支持互联企业) | | | 无自研坐席后台,痛点2-4无法解决 | **结论**:❌ 不推荐 — 本质上只是给现有流程加了一层AI入口,核心痛点(员工入口体验差、坐席能力不稳定、无人效管理)均未解决。 #### 方式二:企微自建应用消息 + 自研坐席后台 **原理**:完全基于企微自建应用消息API,员工在自建应用中发消息,后端接收回调后路由至AI或坐席。坐席使用自研工作台处理会话,回复通过 `/message/send` 推送回员工端。 | 优点 | 缺点 | |------|------| | 消息路由完全可控,可强制AI前置筛选 | 员工端体验受限于企微应用消息格式 | | 自研坐席后台,全面解决痛点2-4 | 开发量较大(坐席工作台 + 员工端 + 后端) | | 支持跨主体(互联企业应用共享) | | | 消息全量经后端,天然存档 | | **结论**:✅ 推荐 — 技术路线正确,是方式四/五的架构基础。 #### 方式三:企微WebView嵌入 + 开源客服 **原理**:在自建应用中嵌入WebView加载开源客服系统(如 Chatwoot),员工在H5页面内完成AI+人工全流程对话。 | 优点 | 缺点 | |------|------| | 开源客服系统提供现成UI和管理后台 | 无法强制AI前置筛选(员工可直接联系人工) | | 跨主体可通过H5嵌入其他平台实现 | 开源客服难以深度定制坐席智能辅助功能 | | | 开源客服的知识管理和数据能力有限,痛点3-4覆盖不足 | | | 员工端依赖WebView,体验不如原生 | **结论**:有条件推荐 — 适合快速验证MVP,但长期来看坐席侧能力受限于开源客服的上限。 #### 方式四:混合分阶段演进路径(H5优先)⭐ 当前推进方案 **原理**:基于方式二的架构,员工端采用 H5 WebView(Vue3 + Vant4)嵌入企微自建应用,坐席端采用自研工作台(Vue3 + Element Plus)。消息流全量经后端路由,支持AI前置筛选、AI-人工无缝切换、跨主体扩展。 ``` ┌─────────────────────────────────────────────────────────────────┐ │ 员工端(H5 WebView) │ │ │ │ 员工 ──消息──→ 企微自建应用 H5 页面 │ │ │ │ │ ├─ AI回复 → H5 内气泡显示(同一对话流) │ │ ├─ 转人工 → H5 内无缝切换(同一对话流) │ │ ├─ 摇人按钮 → 一键呼叫坐席 │ │ └─ 满意度评分 → H5 内评分组件 │ │ │ └─────────────────────────────────────────────────────────────────┘ ↕ WebSocket + REST API ┌─────────────────────────────────────────────────────────────────┐ │ 坐席端(自研工作台) │ │ │ │ 坐席 ←── 会话列表(按紧急度排序) │ │ ├── 聊天区(AI建议内联 + 快速回复 + 排查步骤) │ │ ├── 用户信息栏(IT等级徽标 + VIP标记) │ │ └── 待办面板(工单/审批/设备任务) │ │ │ └─────────────────────────────────────────────────────────────────┘ ↕ ┌─────────────────────────────────────────────────────────────────┐ │ 后端服务 │ │ │ │ 消息路由层(强制AI前置)→ Dify/RAGFlow → 评分 → 分配坐席 │ │ 快速回复知识库(180条模板)→ 排查步骤模板 → 摇人调度 │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` **核心交互路径**: | 阶段 | 交互路径 | 员工端体验 | |------|---------|-----------| | AI 自助 | 员工发消息 → 后端路由 → Dify/RAGFlow → H5 内气泡 | AI回复在**同一对话流**中显示 | | 转人工触发 | AI回复N轮后触发 / 员工点击"摇人"按钮 / 关键词匹配 | **同一对话流**内无缝切换,无跳转 | | 坐席介入 | 坐席工作台接收会话 → AI推荐回复 → 快速回复 | 员工端仍在**同一对话流**中收到人工回复 | | 满意度评分 | 会话结束 → H5 内评分组件弹窗 | 原地评分,无需跳转 | **五阶段演进路径**(详见 §5): | 阶段 | 目标 | 员工端 | 坐席端 | AI能力 | |------|------|--------|--------|--------| | 阶段一 | 转人工改H5+坐席工作台MVP | H5 登录+身份识别 + 转人工链接改H5 | 自研工作台MVP(会话列表+聊天+快速回复) | 不变(复用现有) | | 阶段二 | 智能咨询集成 | H5 全流程 + 敲桌子 + 评分 | 三栏工作台MVP + AI建议 + 快速回复 | AI前置筛选 + 双通道推送 | | 阶段三 | 坐席辅助回复/判断 | H5 体验优化 | AI Wingman(草稿+摘要+知识+排查步骤) | 千问深度集成 | | 阶段四 | 日志标准+知识库迭代 | H5 跨平台扩展 | 绩效看板 + AI知识库自动迭代 | AI知识库自学习闭环 | | 阶段五 | 自动/辅助审核开单结单 | H5 一站式 | 待办面板 + AI填单 + AI审核 + AI结单 | AI流程自动化 | | 优点 | 缺点 | |------|------| | H5 员工端可做丰富的交互UI(评分/摇人/AI标识) | 员工需进入H5页面,非原生聊天体验 | | 消息路由完全可控,可强制AI前置筛选 | 依赖WebView加载,有网络延迟 | | 自研坐席后台,全面解决痛点4-7 | H5 需OAuth2鉴权(多一步跳转) | | 支持跨主体(H5可嵌入其他企微主体/平台) | 开发量最大(员工端+坐席端+后端) | | 一次开发,可扩展到钉钉/飞书/浏览器 | 通知依赖H5页面是否打开(不如原生必达) | | AI/人工身份清晰区分(UI可做丰富标识) | | **H5 端实时消息推送方案**: 方式四的 H5 员工端存在一个关键体验问题——坐席回复消息后,H5 页面需要实时刷新才能显示新消息。当前已实现的消息到达机制如下: | 机制 | 实现状态 | 体验 | |------|---------|------| | 企微应用消息推送(`/message/send`) | ✅ 已实现 | 坐席发消息 → 企微系统级通知弹窗/红点 → 员工**点击通知**回到 H5 → 页面拉取新消息 | | H5 轮询(`/h5/conversations/current/messages/poll`) | ✅ 已实现 | 前端每 3-5 秒请求一次新消息,延迟明显 | | H5 WebSocket 实时推送 | 🔲 待开发 | 坐席发消息 → 后端推送 → H5 聊天区**秒级自动刷新**,体验最佳 | **双通道通知策略**(推荐上线方案): ``` 坐席发送消息 ├── 通道1: 企微 /message/send → 系统级通知(保证必达) │ → 员工未在 H5 页面时,收到企微通知弹窗 │ → 员工已关闭 H5 时,仍可通过通知回到对话 │ └── 通道2: WebSocket 推送 → H5 页面内实时更新(保证即时) → 员工在 H5 页面时,聊天区秒级刷新 → 页面未打开时,WebSocket 断连,自动降级为通道1 ``` **WebSocket 推送技术方案**: | 项目 | 说明 | |------|------| | 后端 | 扩展现有 `ws_manager.py`(已管理坐席 WS 连接),新增 `employee` 类型连接注册 | | WS 端点 | `GET /api/h5/ws?token={bearer_token}` — H5 前端通过 Bearer Token 鉴权连接 | | 消息格式 | `{"type": "new_message", "data": {"id": "...", "content": "...", "sender_type": "agent"}}` | | 断连降级 | WebSocket 断连时,前端自动切换为轮询(现有 `/messages/poll` 兜底) | | 重连策略 | 指数退避重连(1s → 2s → 4s → 8s → 最大 30s),断连期间消息由通道1保证 | | 前端 | `frontend-h5/` 新增 `composables/useWebSocket.ts`,监听推送事件自动追加消息 | **与现有系统对比**: | 维度 | 现有生产环境 | 方式四(H5 + 双通道推送) | |------|------------|------------------------| | AI→人工切换 | 关键字触发 → 推送链接 → 跳转新窗口 | H5 内同一对话流无缝切换 | | 人工回复通知 | 企微员工服务自带通知(原生窗口) | 企微系统通知 + H5 WebSocket 双通道 | | 回复即时性 | 原生1对1窗口,即时 | WebSocket 秒级推送(H5 页面内)/ 企微通知(H5 未打开时) | | 消息存档 | 企微员工服务存档(需开通会话存档权限) | 全量经后端,天然存档,无额外权限 | **关键企微 API**: | API | 路径 | 用途 | 关键限制 | |-----|------|------|---------| | 发送应用消息 | `/cgi-bin/message/send` | 通知/提醒推送到企微 | ≤账号上限×200人次/天 | | 接收消息回调 | 自建应用回调URL | 接收员工发给应用的消息 | 需公网HTTPS回调URL | | 构造网页授权链接 | `/cgi-bin/oauth2/authorize` | H5页面识别员工身份 | 需配置可信域名 | | 互联企业应用共享 | 企微管理后台 | 跨主体员工使用同一应用 | 需双方管理员审批 | **结论**:✅ 当前推进方案 — 全面解决7项痛点,生态扩展性最强,分阶段演进风险可控。 #### 方式五:企微原生1对1 + 外援群聊(应急备选方案) > **定位**:非主推方案。当方式四的AI服务(Dify/RAGFlow)出现故障不可用时,作为**应急预案**切换至方式五,利用企微原生1对1消息维持基本服务。若方式四整体故障(坐席工作台也不可用),则退回"企微-员工服务-桌面IT支持"仅有人工坐席最简方式。 **原理**:员工直接在企微原生聊天窗口与自建应用1对1对话,AI和坐席回复均通过 `/message/send` 推送到同一窗口。外援场景通过 `/appchat/create` 创建群聊。 ``` ┌──────────────────────────────────────────────────────────────┐ │ 员工端(企微原生聊天窗口) │ │ │ │ 员工 ←─1对1消息─→ 自建应用(IT智能助手) │ │ │ │ │ ├─ AI回复 → /message/send → 同一窗口 │ │ ├─ 坐席回复 → /message/send → 同一窗口 │ │ │ (员工无感知AI/人工切换) │ │ │ │ │ └─ 外援场景 → /appchat/create → 新群聊窗口 │ │ │ └──────────────────────────────────────────────────────────────┘ ``` | 优点 | 缺点 | |------|------| | **应急价值高**:AI故障时可快速切换,员工仍可通过原生窗口获得人工服务 | 无法跨主体(仅同一企微主体内) | | 员工端零开发量(原生聊天窗口) | AI/人工身份需消息前缀区分(如"[人工-张三]") | | 体验最优(与日常聊天无差异,通知必达) | 员工可直接1对1联系应用,绕过AI前置筛选 | | 消息全量经后端API,天然存档 | 绑定企微生态,无法扩展到其他平台 | | 外援走原生群聊,低频且轻量 | 满意度评分只能用模板卡片(体验不如H5评分组件) | **关键企微 API**: | API | 路径 | 用途 | 关键限制 | |-----|------|------|---------| | 发送应用消息 | `/cgi-bin/message/send` | AI/坐席向员工推送消息(主流程) | ≤账号上限×200人次/天,同一人≤30次/分 | | 接收消息回调 | 自建应用回调URL | 接收员工发给应用的消息 | 需公网HTTPS回调URL | | 创建群聊 | `/cgi-bin/appchat/create` | 外援场景:创建多方协作群 | ≤1000群/天,≤2000人/群 | | 修改群聊 | `/cgi-bin/appchat/update` | 外援群管理(加人/改名) | ≤1000次/小时 | | 获取群聊 | `/cgi-bin/appchat/get` | 查询群聊信息 | 仅本应用创建的群 | | 推送群消息 | `/cgi-bin/appchat/send` | 群内推送消息(9种类型) | ≤2万人次/分 | **方式四 vs 方式五详细对比**: | 维度 | 方式四:H5 WebView(当前方案) | 方式五:原生1对1 + 外援群聊(应急备选) | |------|-------------------------------|---------------------------------------| | **员工入口** | 点击应用 → 进入 H5 页面 | 直接在企微与应用1对1聊天 | | **对话体验** | H5 内部输入框,需切换上下文 | **原生聊天窗口,与日常聊天无差异** | | **通知必达** | 依赖 H5 是否打开 | **企微原生推送,必达** | | **富媒体支持** | H5 自定义 UI(需开发) | **原生支持6种输入+10种输出** | | **前端开发量** | 大(Vue3+Vant4 H5 客户端) | **零(员工端无前端)** | | **OAuth2 鉴权** | 必须(H5 需识别用户身份) | **不需要(回调自带 UserID)** | | **跨平台移植** | **✅ H5 可挂载钉钉/飞书/浏览器等** | ❌ 绑定企微 | | **跨主体企微支持** | **✅ 可,非静默登录时提供其他认证** | ❌ 仅同一企微主体内 | | **AI/人工区分** | **✅ H5 可做丰富身份标识** | ⚠️ 需消息内容前缀区分(如"[人工-张三]") | | **转人工触发** | H5 内按钮(`ai_substantive_reply_count >= 3`) | 关键词"转人工" / 交互卡片按钮 | | **满意度评分** | H5 内评分组件 | 模板卡片消息(按钮交互型) | | **消息存档** | 全量经后端,天然存档 | **全量经后端(AI+坐席都走API),无需会话存档权限** | | **外援/摇人** | 需额外设计 | **原生群聊(appchat),新窗口** | | **坐席工作台** | 保留 | 保留 | **结论**:方式五体验最优但受限于企微主体内,定位为**应急备选方案**。当方式四的AI服务故障时切换使用,维持基本服务能力。 ### 3.3 降级应急预案 当方式四(主方案)出现不同级别的故障时,按以下降级链路逐步回退: ``` 方式四(正常)→ 方式五(AI故障,保留坐席工作台+原生1对1)→ 企微员工服务(仅人工坐席最简方式) ``` | 降级级别 | 触发条件 | 员工端变化 | 坐席端变化 | 恢复条件 | |----------|---------|-----------|-----------|---------| | **L0 正常** | 全部服务可用 | H5 完整体验 | 自研工作台全功能 | — | | **L1 AI降级** | Dify/RAGFlow 不可用 | H5 内自动跳过AI,直接进入人工排队 | 工作台AI推荐/快速回复不可用,手动回复 | AI服务恢复 | | **L2 方式五切换** | H5服务整体故障 | 切换至企微原生1对1消息(方式五) | 工作台仍可用,回复通过API推送到员工原生窗口 | H5服务恢复 | | **L3 完全回退** | 坐席工作台也不可用 | 退回"企微-员工服务-桌面IT支持" | 使用企微员工服务后台手动处理 | 全部服务恢复 | > **核心架构决策**: 彻底放弃企微"员工服务"模块,用自建应用消息API + 自研坐席服务台替代整个链路 > **消息路由**: 自建应用消息回调到自己服务器,所有消息先到路由层,可强制新会话默认进AI模式 > **跨企业**: 通过企微"互联企业"应用共享实现(方式四),或H5嵌入其他平台实现 --- ## 4. 产品定义 ### 4.1 产品目标 1. **提高AI首答率**: 通过消息路由层强制新会话先走AI,将AI筛选比例从当前低位提升至80%以上,降低人工坐席负载 2. **统一对话体验**: 员工从AI对话到人工服务在同一窗口无缝流转,消除跳转割裂感 3. **构建AI-人工协作闭环**: 建立坐席标注→知识库迭代的正向循环,持续提升AI解答质量 ### 4.2 用户故事 | # | 角色 | 故事 | 验收标准 | |---|------|------|---------| | US-1 | 普通员工 | 我希望在企微应用中直接咨询IT问题,AI先回答,需要人工时无需切换窗口即可转接 | AI回复和人工回复在同一对话流中连续显示 | | US-2 | 普通员工 | 我希望通过"摇人"一键呼叫IT坐席,不需要记住关键词 | 摇人按钮在输入框左侧,点击即触发转人工流程 | | US-3 | IT坐席 | 我希望看到一个按紧急度排序的会话列表,优先处理最紧急的问题 | 会话列表按紧急→举手→需介入→活跃→AI处理中→已结单排序 | | US-4 | IT坐席 | 我希望AI能在旁边给我建议回复和操作步骤,我可以采纳或修改 | AI建议条显示在对话区,支持采纳/编辑后采纳/忽略 | | US-5 | IT主管 | 我希望坐席在日常工作中标注AI回复的准确性,系统能自动分析知识库缺陷 | 标注嵌入坐席工作流,千问自动分析生成优化建议 | | US-6 | VIP员工 | 我希望我的问题能被优先处理 | VIP标记自动匹配,会话紧急度加成,列表优先展示 | | US-7 | 跨企业员工 | 我希望在母公司的企微应用中也能使用IT服务 | 通过企微互联企业应用共享,跨主体员工可使用同一服务 | --- ### 4.4 竞品分析与差异化定位 > **新增日期**: 2026-06-14 #### 4.3.1 四大竞品对标 | 竞品 | 类型 | 核心能力 | 我们的差异化优势 | |------|------|----------|------------------| | **钉钉·智能客服** | 平台内置 | AI问答、工单、会话分析 | **私有化部署 + 企微深度集成** + 坐席工作台自定义 | | **美团·IT服务台** | 自研 | 报修工单、资产盘点、BI看板 | **终端安全集成**(火绒+联软)+ 免费开源 | | **飞书·IT运维** | 插件生态 | 审批流、资产、知识库 | **企业微信原生** + AI混合策略 | | **Jira Service Management** | 商业SaaS | ITSM、资产管理、SLA | **本土化免费** + 国有大模型集成 | #### 4.3.2 市场定位 > **一句话定位**: 融合服务台+资产+终端安全的**企业级ITSM**,基于企微生态的免费开源解决方案。 | 维度 | 定位说明 | |------|----------| | **目标客户** | 6000人左右的中大型企业,使用企微作为办公通讯 | | **核心价值** | 免费开源 + 私有化部署 + 终端安全一体化 | | **差异化标签** | AI驱动 · 多系统对接 · 一站式处理 | | **定价策略** | 社区版免费,专业版定制收费 | #### 4.3.3 竞争优势 | 优势 | 说明 | |------|------| | **企微深度集成** | 原生OAuth2、企业API、消息推送、通讯录同步 | | **终端安全联动** | 火绒+联软API直连,威胁自动响应 | | **免费开源** | MIT协议,社区支持,降低采购阻力 | | **AI混合策略** | 流程图+AI生成+坐席标注+自动迭代 | #### 4.3.4 风险与挑战 | 风险 | 等级 | 应对策略 | |------|------|----------| | 企微API限制 | 中 | 保持降级通道(企微员工服务) | | 集成复杂度 | 高 | 分阶段交付,MVP先行 | | 社区活跃度 | 低 | 先在内部打磨,文档完善后开源 | --- ### 4.5 身份认证与统一入口 > **更新日期**: 2026-07-06 | **核心变更**: 修正为各端独立入口,删除理想化统一入口设计 #### 4.5.1 设计原则 | 原则 | 说明 | |------|------| | **角色分离** | 用户/坐席/管理员三种角色,按角色分配访问权限 | | **安全可控** | 坐席和管理员通过双因素认证(OTP)确保安全 | | **入口独立** | 各端独立入口,互不依赖,避免单点故障 | | **企微内嵌** | 用户端(H5)强制企微内嵌,保证安全性和用户体验 | #### 4.5.2 实际实现架构 > **重要说明**: 初始设计期望使用 `/itportal/` 统一入口,但基于实际运营中的问题,已调整为**各端独立入口**方案。 **未采用统一入口的原因**: 1. **坐席必须在企微中登录** — 绑定企微自动登录后,坐席端强制依赖企微客户端 2. **企微登录验证故障频繁** — OAuth 回调不稳定,影响开发和运维效率 **当前实现**:各端独立入口,独立认证流程: ```mermaid flowchart TB subgraph 用户端 A1[企微工作台] --> A2[应用内嵌打开 /itdesk/] A2 --> A3[OAuth2 静默授权] A3 --> A4[进入工作台] end subgraph 坐席端 B1[浏览器直接打开 /itagent/] --> B2[智能检测企微登录状态] B2 --> B3{企微已登录?} B3 -->|是| B4[三种登录方式] B3 -->|否| B5[默认登录页] B4 --> B6[验证成功] B5 --> B6 B6 --> B7[进入工作台] end subgraph 管理后台 C1[浏览器直接打开 /itadmin/] --> C2[智能检测企微登录状态] C2 --> C3{企微已登录且有管理员角色?} C3 -->|是| C4[免密直接进入] C3 -->|否| C5[账号密码+OTP验证] C4 --> C6[进入管理后台] C5 --> C6 end subgraph 统一入口 D1[已配置 /itportal/] -.-> D2[未实际使用
保留接口] end ``` > **说明**:三个端独立运作,互不依赖。即使企微OAuth出现故障,坐席和管理员仍可通过账号密码+OTP方式正常登录。 #### 4.5.3 角色体系 | 角色 | 标识 | 说明 | 访问路径 | 登录方式 | |------|------|------|----------|----------| | 普通员工 | `user` | 提交IT问题、查看进度、评价满意度 | `/itdesk/` | OAuth2 静默授权(企微内嵌) | | IT坐席 | `agent` | 处理会话、AI辅助、快速回复 | `/itagent/` | 智能检测 + 三种登录方式 | | 管理员 | `admin` | 系统配置、坐席管理、数据看板 | `/itadmin/` | 智能检测 + 三种登录方式(与坐席相同) | #### 4.5.4 坐席/管理员登录流程 > **更新日期**: 2026-07-06 | **核心变更**: 区分企微免密登录与传统登录,OTP验证时机调整 ```mermaid flowchart TD Start([访问 /itagent/]) --> Detect[检测企微客户端登录状态] Detect --> HasWecom{检测到企微登录账号?} HasWecom -->|是| CheckRole{该账号具有坐席或管理员角色?} CheckRole -->|是| Direct[免密直接进入工作台] CheckRole -->|否| ShowOptions[显示登录选项] HasWecom -->|否| ShowOptions ShowOptions --> Options{选择登录方式} Options -->|企微扫码| QRAuth[企微扫码授权] QRAuth --> QROk{授权成功且有坐席或管理员角色?} QROk -->|是| Direct QROk -->|否| ShowOptions Options -->|账号密码| PwdInput[输入账号密码] PwdInput --> PwdVerify{账号密码验证} PwdVerify -->|通过| OTPInput[弹出OTP填写框] PwdVerify -->|失败| ShowOptions OTPInput --> OTPVerify{OTP验证} OTPVerify -->|通过| Direct OTPVerify -->|失败| ShowOptions Direct --> Token[发放Token] Token --> Workbench([进入坐席工作台]) ``` **流程说明**: | 场景 | 条件 | 登录方式 | OTP验证 | |------|------|----------|---------| | **场景一** | 检测到企微登录账号 + 具有坐席或管理员角色 | 免密直接进入 | 无需OTP | | **场景二** | 未检测到企微登录 **或** 企微账号无坐席角色 | 扫码/账号密码 | 账号密码后需OTP | | **场景三** | 选择企微扫码登录 | 扫码授权 | 授权成功且有坐席或管理员角色则免OTP | | **场景四** | 选择账号密码登录 | 账号+密码+OTP | 必须OTP验证通过 | #### 4.5.5 登录方式详细说明 | 登录方式 | 适用场景 | 技术实现 | OTP验证 | |----------|---------|---------|---------| | **企微免密登录** | 检测到企微登录账号且具有坐席或管理员角色 | JS-SDK `wx.agentConfig` → 后端校验角色 | 无需(已验证企微身份) | | **企微扫码登录** | 企微客户端未登录但有企微App | 显示企微OAuth二维码 → 用户扫码授权 | 授权成功后需OTP验证 | | **账号密码+OTP** | 无企微环境或二维码失效 | 传统表单 + TOTP验证码 | 账号密码验证通过后,需填写OTP | #### 4.5.6 企微客户端检测 | 检测方式 | 代码 | 说明 | |----------|------|------| | **企微内嵌检测** | `navigator.userAgent.includes('wxwork')` | 检测UA是否包含wxwork | | **企微 JS-SDK** | `wx.agentConfig()` | 获取当前企微用户身份(需企业微信JS-SDK引入) | | **企微协议跳转** | `wecom://` | 唤起企微客户端打开指定页面 | > **注意**: > - 用户端(`/itdesk/`)强制企微内嵌,非企微环境访问跳转拦截页 > - 坐席端智能检测为增强体验,检测失败时回退到默认登录页 #### 4.5.7 技术实现 | 组件 | 说明 | |------|------| | **H5 前端** | Vue3 + Vant4,路径 `/itdesk/` | | **坐席前端** | Vue3 + Element Plus,路径 `/itagent/` | | **管理后台** | Vue3 + Element Plus + Tailwind,路径 `/itadmin/` | | **Portal 前端** | Vue3 + Element Plus(已配置但未使用),路径 `/itportal/` | | **Portal API** | FastAPI `/api/portal/*`,角色查询、Token 发放(保留接口) | | **数据库表** | `roles`(角色定义)、`user_roles`(用户角色关联) | | **Token 机制** | Bearer Token,通过 URL 参数 `?token=xxx` 传递 | | **OTP 绑定** | 首次登录引导绑定,支持 TOTP(Google Authenticator/微信扫码) | | **OTP API** | `/api/mfa/*` 系列接口 | #### 4.5.8 测试账号 | 角色 | 用户名 | 初始密码 | OTP | 说明 | |------|--------|----------|-----|------| | 坐席 | `sxn` | `admin123` | 需绑定 | IT 支持组组长 | | 管理 | `sxn` | `admin123` | 需绑定 | 同上,具有 admin 权限 | > **注意**:生产环境需修改默认密码;坐席/管理员需先绑定OTP才能登录(首次登录引导) #### 4.5.9 管理后台登录页面设计 ``` +------------------------------------------+ | IT智能服务台 | | 管理后台登录 | +------------------------------------------+ | | | [企微免密登录] [企微扫码登录] [账号密码登录] | | | | +------------------------------------+ | | | 用户名: [____________] | | | +------------------------------------+ | | | 密码: [____________] | | | +------------------------------------+ | | | OTP: [______] [发送验证码] | | | +------------------------------------+ | | | [ 登录 ] | | | +------------------------------------+ | | | | 首次登录自动绑定OTP和企业微信 | +------------------------------------------+ ``` **说明**: - 智能检测企微登录状态,根据检测结果动态显示登录入口 - 企微已登录且有管理员角色:显示"企微免密登录"入口 - 未检测到企微登录:默认显示"企微扫码登录"和"账号密码登录" #### 4.5.10 技术实现要点 > **更新日期**: 2026-07-06 | **整合自管理后台登录方式扩展PRD** **数据库扩展**: ```sql -- 坐席/管理员表新增字段 ALTER TABLE agents ADD COLUMN password_hash VARCHAR(255); ALTER TABLE agents ADD COLUMN mfa_enabled BOOLEAN DEFAULT FALSE; ALTER TABLE agents ADD COLUMN mfa_secret VARCHAR(32); ALTER TABLE agents ADD COLUMN mfa_bound_at TIMESTAMP; ``` **API 端点**: | 方法 | 路径 | 描述 | |------|------|------| | POST | `/api/auth_wecom/jsdk-login` | 企微免密登录 | | POST | `/api/auth_qrcode/create` | 企微扫码登录 | | POST | `/api/agents/login` | 账号密码+OTP登录 | | POST | `/api/mfa/bind/start` | MFA绑定 | | POST | `/api/mfa/verify` | OTP验证 | **技术约束**: - 密码存储:bcrypt 哈希 - Session/Token:复用现有 Redis Token 机制 - 企微免密登录:企微JS-SDK获取userid → 验证角色 → 返回Token --- ### 4.6 功能优先级 (MoSCoW) > **新增日期**: 2026-06-14 #### Must have (P0 - MVP必须) | 功能 | 说明 | 阶段 | |------|------|------| | AI对话 | 员工在H5中咨询IT问题,AI回答 | 阶段1 | | 转人工 | AI无法解决时一键转人工坐席 | 阶段1 | | 坐席工作台 | 会话列表+聊天+快速回复 | 阶段1 | | 消息推送 | 企微消息实时到达 | 阶段1 | | 身份识别 | OAuth2企微登录 | 阶段1 | #### Should have (P1 - 第一版应该有) | 功能 | 说明 | 阶段 | |------|------|------| | 摇人按钮 | 输入框左侧一键呼叫坐席 | 阶段2 | | 满意度评价 | 会话结束后评价 | 阶段2 | | 排队系统 | 多会话时排队等待 | 阶段2 | | 快速回复 | 坐席常用语管理 | 阶段2 | | 知识库(基础) | FAQ手动维护 | 阶段2 | #### Could have (P2 - 最好有) | 功能 | 说明 | 阶段 | |------|------|------| | AI Wingman | AI建议回复 | 阶段3 | | 会话标注 | 坐席标注AI回复准确性 | 阶段3 | | 自动摘要 | 会话结束后AI摘要 | 阶段3 | | 数据看板 | 基础统计 | 阶段4 | | 知识库自动迭代 | AI分析+知识库更新 | 阶段4 | #### Won't have (暂缓) | 功能 | 说明 | 阶段 | |------|------|------| | 工单系统 | 开单/审批/结单 | 阶段5 | | 资产联动 | 联软资产集成 | 阶段5 | | 终端安全 | 火绒终端集成 | 阶段5 | | 跨企业共享 | 企微互联 | 未来 | --- ### 4.9 推广计划 > **新增日期**: 2026-06-14 #### 5阶段推广节奏 | 阶段 | 时间 | 目标 | 策略 | |------|------|------|------| | **封闭内测** | 第1-2周 | 30人IT部门 | 邀请制,收集反馈,优化体验 | | **全员试用** | 第3-4周 | 200人种子用户 | 企微群推广,管理员推动 | | **正式上线** | 第5-6周 | 1000人 | 培训+推广材料 | | **功能扩展** | 第7-12周 | 3000人 | 阶段2功能,推广摇人+评价 | | **生态构建** | 第3-6月 | 6000人 | 阶段3-4,数据驱动优化 | #### 推广关键指标 (KPI) | 指标 | 目标值 | 说明 | |------|--------|------| | AI首答率 | ≥80% | AI直接解决的比例 | | 人工平均响应 | ≤60s | 从提交到坐席响应的平均时间 | | 会话满意度 | ≥4.5★ | 5分制评价 | | 问题解决率 | ≥90% | AI+人工最终解决的比例 | | 坐席人均处理 | ≤30/天 | 坐席日均处理会话数 | > **指标体系补充说明 (2026-07-04)**: 完整的指标体系设计见下节「§4.7 指标体系详细设计」,包含北极星指标、驱动指标、健康指标的完整定义和测量方法。 #### 推广资源需求 | 资源 | 说明 | |------|------| | IT支持组 | 3人坐席值班 | | 培训材料 | 5分钟入门视频+图文手册 | | 推广文案 | 企微公告+海报 | | 激励机制 | 满意度前10%奖励 | --- ### 4.7 指标体系详细设计 > **新增日期**: 2026-07-04 | **状态**: 方案设计阶段,待开发实施 #### 4.7.1 指标框架概览 | 指标类型 | 定义 | 测量方法 | 展示位置 | |----------|------|---------|---------| | **北极星指标** | 最终业务目标 | 会话结单时用户评价「问题已解决」的比例 | 管理后台首页 | | **驱动指标** | 过程指标,直接影响北极星 | 各类过程数据埋点统计 | 数据看板 | | **健康指标** | 系统健康状态 | 系统可用性、错误率监控 | 运维监控页 | #### 4.7.2 北极星指标 (North Star) | 指标 | 定义 | 目标值 | 测量方法 | |------|------|--------|---------| | **员工问题解决满意度** | 员工评价「问题已解决」的比例 | ≥90% | 满意度评价中选择「已解决」的会话数 / 总会话数 | #### 4.7.3 驱动指标 (Driver Metrics) | 指标 | 定义 | 目标值 | 测量方法 | 数据来源 | |------|------|--------|---------|---------| | **AI首答解决率** | AI直接回答并被评价为「已解决」的比例 | ≥60% | AI回复且结单评价「已解决」的会话 / AI回复总会话数 | conversations + feedback | | **人工首次响应时间** | 从会话创建到坐席首次回复的平均时间 | ≤60s | AVG(first_response_time - conversation_created_at) | conversations | | **会话解决率** | 最终被评价为「已解决」的会话比例 | ≥90% | 结单评价「已解决」的会话数 / 总会话数 | feedback | | **自助服务率** | 员工不需人工介入解决问题的比例 | ≥40% | AI解决会话数 / 总会话数 | conversations | #### 4.7.4 健康指标 (Health Metrics) | 指标 | 定义 | 目标值 | 测量方法 | |------|------|--------|---------| | **坐席响应超时率** | 超过设定阈值的响应超时比例 | <5% | 超时会话数 / 总会话数 | | **重复会话率** | 同一用户短期内重复发起会话的比例 | <10% | 重复会话数 / 总会话数 | | **负面评价率** | 评价为1-2星的比例 | <3% | 1-2星评价数 / 总会话数 | | **系统可用性** | 系统正常可用时间比例 | ≥99.9% | (总时间 - 故障时间) / 总时间 | #### 4.7.5 行业基准对比 | 指标 | 行业基准 (ITSM) | 本产品目标 | 差距分析 | |------|-----------------|-----------|---------| | FRT (首次响应时间) | < 15分钟 | ≤60s | ✅ 目标更激进 | | 自助服务率 | 40-60% | ≥40% | ✅ 目标对齐 | | CSAT (满意度) | > 4.2/5 | ≥4.5★ | ✅ 目标合理 | | 问题解决率 | > 85% | ≥90% | ✅ 目标合理 | | SLA 达成率 | > 95% | 待定义 | 需补充 | #### 4.7.6 数据采集设计 | 事件 | 采集时机 | 字段 | |------|---------|------| | 会话创建 | 用户发起新会话 | session_id, user_id, source, timestamp | | AI回复 | AI返回回答 | session_id, ai_response_time, resolved | | 坐席首次响应 | 坐席首次回复 | session_id, agent_id, first_response_time | | 会话结单 | 坐席点击结单 | session_id, resolution_time, resolution_type | | 满意度评价 | 用户提交评价 | session_id, rating (1-5), resolved (bool) | #### 4.7.7 仪表盘设计 管理后台「数据看板」应展示: 1. **首页核心指标卡片**: 北极星指标 + 4个驱动指标 + 4个健康指标 2. **趋势折线图**: 按日/周/月展示指标变化趋势 3. **排行榜**: 坐席绩效排名、热点问题排行 4. **告警列表**: 指标低于阈值时的告警记录 --- ## 5. 五阶段演进路径 > **演进原则**:每个阶段都基于现有生产环境(企微AI机器人 + RAGFlow + Dify + 千问)进行增量升级,不做大爆炸式替换。现有AI机器人持续运行直到新系统对应阶段稳定上线。 ### 5.1 阶段总览 | 阶段 | 目标 | 核心变更 | 解决痛点 | 现有系统影响 | |------|------|---------|---------|------------| | **阶段一** | 转人工改H5+坐席工作台MVP | AI机器人转人工链接从"员工服务"改为H5自建应用,员工端解决登录和身份识别,坐席端交付自研工作台MVP(会话列表+聊天+快速回复),AI能力不变 | 痛点1(部分)、坐席摆脱员工服务限制 | AI转人工链接从员工服务改为H5,原有1对1窗口保留为降级通道 | | **阶段二** | 迁移和集成面向员工的智能咨询功能 | H5员工端完整体验(AI对话+转人工+摇人+评分),双通道消息推送 | **痛点1** | 员工服务入口逐步迁移至H5 | | **阶段三** | 面向坐席的辅助回复和辅助判断 | 坐席工作台 AI Wingman(草稿回复+自动摘要+知识推荐+排查步骤) | **痛点2** | 坐席从员工服务后台切换至自研工作台 | | **阶段四** | 日志标准和AI知识库迭代 | 会话标注体系 + AI知识库自动迭代闭环 + 数据统计看板 | **痛点3~4** | AI知识库从人工维护升级为自动迭代 | | **阶段五** | 自动/辅助审核、开单、结单 | 工单/审批/设备异常一站式处理 + AI辅助填单+自动结单 | 多系统切换效率问题 | 替代多系统切换,统一工作台闭环 | ### 5.2 各阶段详细规划 #### 阶段一:转人工改H5 + 坐席工作台MVP > **本阶段解决痛点**:坐席摆脱企微员工服务限制(为阶段二解决痛点1打基础)。 > > **关键前提**:企微AI机器人 + Dify + RAGFlow + 千问**已在生产环境运行**,本阶段不做任何AI引擎改动,仅改变转人工环节的链接指向和坐席端工具。 **目标**:现有AI机器人继续运行(不动),仅将转人工的链接从"企微员工服务"改为H5自建应用;员工端解决OAuth2登录和身份识别;坐席端交付自研工作台MVP(会话+快速回复),摆脱企微内置员工服务的限制。坐席端AI能力**暂不接入**。 **现状 → 目标对比**: | 维度 | 现有生产环境 | 阶段一目标 | |------|------------|----------| | AI机器人 | 企微1对1对话,RAGFlow+Dify+千问(**不变**) | 企微1对1对话,RAGFlow+Dify+千问(**不变**) | | 转人工 | 关键字触发 → 推送"企微员工服务"链接 → 跳转新窗口 | 关键字触发 → 推送H5自建应用链接 → 同一WebView内切换 | | 员工端 | 无独立身份识别,员工服务窗口无登录 | H5 WebView(OAuth2静默授权 → 身份识别) | | 坐席端 | 企微内置员工服务后台(功能受限) | 自研工作台MVP,摆脱员工服务限制 | | 坐席快速回复 | 无(纯手动输入) | 三级导航快速回复面板(7大类28子类180条模板) | | 坐席AI能力 | 无 | **暂不接入**(阶段三引入) | **范围**: **员工端(H5 WebView,Vue3 + Vant4)**: - 自建应用创建 + H5页面基础框架 - OAuth2 静默授权 → 员工身份识别(核心) - 接收坐席消息的展示(人工回复在H5页面显示) - 企微应用消息推送(坐席回复通过 `/message/send` 推送企微通知) **坐席端(自研工作台MVP,Vue3 + Element Plus)**: - 会话列表(显示进行中的会话,按时间排序) - 聊天窗口(显示完整对话记录,可回复) - 发送消息(文本消息发送) - 快速回复面板(三级渐进导航:7大类→28子类→180条模板,数字键快捷操作) - **邀请功能**(坐席邀请其他员工/部门加入会话,详见§21) - 摆脱企微员工服务限制,坐席使用独立工作台处理会话 - **不含AI能力**(AI建议、排查步骤等留到阶段三) **后端变更**: - AI机器人转人工链接配置:从"员工服务"改为H5自建应用URL - 坐席WebSocket连接管理(复用现有 `ws_manager.py`) - 消息路由:AI对话→关键字触发→创建人工会话→分配坐席 **完成标准**:员工在企微与AI机器人对话 → 关键字触发转人工 → 推送H5链接 → 员工点击进入H5页面(OAuth2自动登录) → 坐席在自研工作台收到会话 → 坐席使用快速回复或手动输入回复 → 员工在H5页面看到人工回复;坐席可邀请其他员工/部门加入会话协作 → 被邀请人收到企微通知 → 通过H5链接加入 → 多人同一会话协作 **开发周期**:6-8周 #### 阶段二:迁移和集成面向员工的智能咨询功能 > **本阶段解决痛点**:痛点1(员工入口体验差:可绕过AI、另开窗口、无法跨主体)。 **目标**:完善H5员工端全流程体验,实现AI→人工无缝切换,取代关键字触发跳转链接的转人工方式,并增强坐席工作台能力(仍不含AI)。 **现状 → 目标对比**: | 维度 | 阶段一 | 阶段二目标 | |------|--------|----------| | 转人工方式 | 关键字触发 → 推送H5链接(同一WebView切换) | H5内"敲桌子"按钮/摇人 → 同一对话流切换 | | 人工回复到达 | 坐席自研工作台回复 → 员工H5页面查看(轮询) | H5内WebSocket实时推送 + 企微通知双通道 | | AI→人工切换 | 关键字触发,两个窗口(AI对话+人工H5) | 同一对话流,AI历史+人工回复连续显示 | | 坐席端能力 | 基础MVP(会话列表+聊天+快速回复) | 用户信息栏 + 会话标记 + 排队显示(不含AI) | | 满意度评分 | 无 | H5内评分组件,会话结束后弹出 | | 排队系统 | 无 | 等待坐席接入的排队机制,含等待提示 | **范围**: **员工端(H5)**: - H5 "敲桌子/摇人"按钮 + 转人工触发逻辑(AI实质性回复≥3轮) - H5 WebSocket 实时推送(双通道通知策略) - 满意度评分组件 - AI→人工同一对话流无缝切换 **坐席端(工作台增强,不含AI)**: - 用户信息栏(员工基本信息、IT等级徽标) - 会话标记系统(VIP/举手/需介入/情绪标记) - 会话列表增强(按紧急度排序、标记显示) - 排队信息展示 **后端**: - 消息路由层优化:新会话→AI优先,AI判断/用户触发→坐席队列 - 排队系统 + 等待提示 - 会话状态增强(排队中/服务中/已结单 + 标记) **完成标准**:员工H5内AI对话→敲桌子→坐席接入→人工回复→员工同一对话流看到→结单→评分 **开发周期**:5周 **开发计划**: | 周 | 天数 | 内容 | |----|------|------| | 第1周 | D1-D5 | H5敲桌子/摇人 + 消息路由优化 + AI→人工切换 | | 第2周 | D6-D10 | WebSocket推送 + 双通道通知策略 | | 第3周 | D11-D15 | 坐席AI建议面板 + 用户信息栏 + 会话标记 | | 第4周 | D16-D20 | 排队系统 + 满意度评分 | | 第5周 | D21-D25 | 联调测试 + 现有系统切换 | #### 阶段三:面向坐席的辅助回复和辅助判断 > **本阶段解决痛点**:痛点2(坐席能力不稳定:回复质量依赖个人能力、实习生成长慢)。 **目标**:坐席工作台引入AI Wingman(智能副驾驶),消灭重复劳动、增强认知能力。 **现状 → 目标对比**: | 维度 | 阶段二 | 阶段三目标 | |------|--------|----------| | 坐席回复方式 | 纯手动输入 | AI草稿回复 + 快速回复模板 + 排查步骤 | | 会话摘要 | 无 | AI自动生成结构化摘要(问题/原因/解决方案) | | 知识获取 | 坐席自行搜索 | 基于对话上下文自动推送知识库文档 | | 问题判断 | 依赖个人经验 | AI辅助判断 + 相似工单推荐 + SOP流程导航 | | 新人上手 | 老带新,成长慢 | AI推荐回复降低认知负荷,上手周期缩短50% | **范围**: - AI Wingman 效率层:AI草稿回复(采纳/编辑/忽略)+ 自动摘要 + 自动标签 - AI Wingman 认知层:知识推荐 + SOP流程导航 + 相似工单 + 客户画像 - 排查步骤栏 + 决策树流程图 - 坐席端双区布局(内嵌区 + 侧栏区) - 两个 Dify Agent(员工端AI + 坐席端Wingman)共用知识库 **完成标准**:坐席接会话→AI自动生成草稿→采纳/修改→发送;结单→自动摘要→确认存档 **开发周期**:4-6周 #### 阶段四:日志标准和AI知识库迭代 > **本阶段解决痛点**:痛点3(知识无法积累传承)+ 痛点4(管理缺乏数据支撑)。 **目标**:建立AI-人工协作闭环,坐席标注驱动AI知识库自动迭代,构建数据驱动的管理体系。 **现状 → 目标对比**: | 维度 | 阶段三 | 阶段四目标 | |------|--------|----------| | AI回答质量保障 | 依赖坐席主观感受 | 坐席标注→AI自动分析→知识库自动优化 | | 知识库维护 | 人工定期审查更新 | 千问自动分析标注数据,判断缺文档/信息过时 | | 数据统计 | 无 | 坐席绩效看板 + AI回答质量看板 + 员工满意度统计 | | 管理决策 | 凭感觉 | 数据支撑:响应时效/解决率/AI筛选率/知识库覆盖率 | **范围**: - 坐席标注AI回复正确/错误(嵌入日常工作流,不单独开标注页面) - 千问自动分析待优化队列:缺文档→生成FAQ→推送RAGFlow;过时→标记→推送管理员审核 - 数据统计看板:坐席绩效/会话量/AI筛选率/员工满意度 - 日志标准:会话日志格式规范,支持后续审计和分析 - 跨企业共享(通过企微互联企业应用共享) **完成标准**:坐席标注→千问分析→自动生成FAQ→推送RAGFlow→AI回答质量提升→闭环验证 **开发周期**:4-6周 #### 阶段五:自动/辅助审核、开单、结单 > **本阶段解决痛点**:多系统切换效率问题(延伸痛点4/5,进一步提升人效)。 **目标**:将工单/审批/设备异常等外部系统整合到坐席工作台,实现一站式闭环处理。 **现状 → 目标对比**: | 维度 | 阶段四 | 阶段五目标 | |------|--------|----------| | 工单处理 | 坐席手动切到外部系统开单 | 坐席工作台内一键开单/结单 | | 审批流程 | 坐席告知员工审批链接,员工自行操作 | 工作台内直接发起/审批 | | 设备异常 | 坐席手动记录,另开系统处理 | 工作台内查看设备状态+派工+标记恢复 | | 结单流程 | 坐席手动输入结单描述 | AI自动生成结单摘要→坐席确认→自动结单 | | 审核机制 | 无 | AI辅助审核(检测遗漏步骤/不合规操作) | **范围**: - 待办事项面板(工单/审批/设备异常) - 中间栏任务详情视图切换 - AI辅助填单(基于对话内容自动填写工单字段) - AI辅助审核(检测遗漏步骤、不合规操作) - AI辅助结单(自动生成结构化摘要) - 外部系统API对接(ITSM/审批系统/设备管理) **完成标准**:坐席接会话→AI辅助开单→处理→AI辅助审核→AI辅助结单→一站式闭环 **开发周期**:4-6周 ### 5.3 阶段间降级兼容 > 每个阶段上线期间,现有生产环境必须保持可用,作为降级通道。 | 阶段 | 降级方案 | 触发条件 | 恢复条件 | |------|---------|---------|---------| | 阶段一 | 回退到原企微1对1AI机器人窗口 | H5页面无法访问 | H5服务恢复 | | 阶段二 | 回退到关键字触发推送员工服务链接 | 坐席工作台故障 | 工作台恢复 | | 阶段三 | 坐席关闭AI辅助,纯手动回复(功能降级,非切换) | Dify AI服务故障 | AI服务恢复 | | 阶段四 | 数据统计暂时中断,坐席继续工作 | 分析服务故障 | 分析服务恢复 | | 阶段五 | 回退到外部系统手动处理 | 工作台任务模块故障 | 模块恢复 | --- ## 6. 需求池 (Requirements Pool) ### P0 — Must Have(第一步必须交付) | ID | 需求 | 说明 | 验收标准 | |----|------|------|---------| | P0-01 | 企微自建应用消息接收 | 通过企微回调URL接收员工消息 | 员工发送消息,服务器能收到并解析 | | P0-02 | 企微自建应用消息发送 | 通过企微API向员工发送消息 | 服务器主动发消息,员工在企微应用中收到 | | P0-03 | 消息路由层 | 所有消息先到路由层,按规则分发 | 新会话默认路由到坐席队列(第一步无AI) | | P0-04 | 坐席会话列表 | 显示所有进行中的会话,含基本排序 | 按时间倒序,显示员工姓名、最后消息摘要 | | P0-05 | 坐席对话区 | 显示选定会话的完整对话记录,可回复 | 消息实时显示,坐席可发送文本回复 | | P0-06 | 员工同窗口体验 | 员工AI对话和人工服务在同一企微应用对话流 | 无需切换窗口,消息连续显示 | | P0-07 | 会话状态管理 | 会话状态:排队中/服务中/已结单 | 数据库状态字段正确流转 | | P0-08 | 测试环境隔离 | 在正式企微企业中测试可见范围隔离 | 测试用户可见,其他用户不可见 | | P0-09 | 邀请功能-邀请发起 | 坐席在会话中可邀请其他员工/部门加入 | 坐席点击邀请→选人→确认→被邀请人收到企微通知 | | P0-10 | 邀请功能-加入会话 | 被邀请人通过链接进入H5会话,可查看和回复 | 点击通知→H5加载→拉取历史→可发送消息 | | P0-11 | 邀请功能-参与者管理 | 会话显示所有参与者,区分发起人/被邀请人 | 参与者列表可见,角色标识清晰 | ### P1 — Should Have(第一步应交付,第二步完善) | ID | 需求 | 说明 | 验收标准 | |----|------|------|---------| | P1-01 | 会话标记系统 | VIP/举手/需介入/情绪标记 + 紧急度评分 | 标记在会话列表中正确显示,紧急度计算准确 | | P1-02 | 会话列表排序 | 紧急→举手→需介入→活跃→AI处理中→已结单 | 排序规则生效,会话按紧急度排列 | | P1-03 | VIP标记自动匹配 | 基于企微通讯录API规则匹配(总监及以上或关键部门) | 匹配规则可配置,VIP标记自动显示 | | P1-04 | 举手标记 | 员工说"转人工"或关键词触发 | 关键词可配置,触发后自动举手 | | P1-05 | 需介入标记 | 同一问题追问超过N轮(默认3轮)或AI判断需要人工 | N值可配置,自动触发标记 | | P1-06 | 情绪标记(规则版) | 关键词规则匹配("急/紧急/马上/崩溃"等) | 关键词可配置,命中后自动标记 | | P1-07 | 紧急度评分 | 公式:紧急度=基础分(关键词)+情绪加成+VIP加成+重复追问加成,1-5分映射 | 评分计算正确,映射为低/中/高/紧急/最高 | | P1-08 | 置顶/代办 | 坐席手动操作,数据库加is_pinned和is_todo字段 | 操作后列表位置变化,数据持久化 | | P1-09 | 坐席端AI助手面板 | AI建议回复/快速回复模板/操作步骤/风险提示/用户信息 | 5个模块在右栏显示,功能可用 | | P1-10 | 用户端H5双栏 | 左侧对话区 + 右侧AI助手面板 | 企微应用内H5正确渲染双栏布局 | | P1-11 | 摇人按钮 | 输入框左侧,橙色渐变铃铛图标,点击触发转人工 | 视觉交互符合设计稿,功能正确触发 | | P1-12 | 趣味话术体系 | 存配置表,支持后台动态修改 | 6种场景话术正确触发,后台可修改 | | P1-13 | 用户端AI助手面板 | 相似问题/审批流程/软件下载/知识库搜索 | 4个模块在右栏显示,未实现功能显示"即将上线"占位 | | P1-20 | 邀请功能-历史消息共享 | 邀请时可选择共享历史消息模式(全部/最近10条/不共享) | 默认最近10条,被邀请人可查看共享的历史消息 | | P1-21 | 邀请功能-部门批量邀请 | 可按部门批量邀请,勾选部门=邀请全部门成员 | 部门节点勾选后自动展开子成员,支持取消个别成员 | | P1-22 | 邀请功能-系统消息广播 | 邀请成功/加入/退出时在会话中广播系统消息 | 所有参与者看到"XX邀请XX加入会话""XX已加入会话" | | P1-23 | 文件上传 | 坐席/员工可发送文件附件(PDF/Word/Excel/压缩包等) | 文件可上传、存储、下载,大小限制可配置(默认20MB) | | P1-24 | 满意度评价 | 会话结束后5星+表情评价,含文字反馈 | 评价弹窗正确弹出,数据正确存储,管理后台可查看统计 | | P1-25 | 知识库基础 | FAQ手动维护,多级分类+关键词标签+搜索 | 管理后台可增删改查,RAGFlow检索可用,命中统计正确 | ### P2 — Nice to Have(第二步及之后交付) | ID | 需求 | 说明 | 验收标准 | |----|------|------|---------| | P2-01 | AI前置筛选 | 新会话默认走AI,AI判断/用户触发转人工 | AI筛选率≥80% | | P2-02 | 转人工触发配置 | 关键词/连续追问轮次/AI超时阈值写配置文件 | 配置文件修改后即时生效 | | P2-03 | 排队系统 | 等待坐席接入的排队机制,含等待提示 | 排队人数/预计等待时间显示 | | P2-04 | 对话日志标注 | 坐席标注AI回复正确/错误,嵌入日常工作流 | 标注操作在对话区内完成,不跳转页面 | | P2-05 | AI知识库自动迭代 | 千问分析标注数据,判断缺文档/信息过时 | 自动生成FAQ推送RAGFlow,过时标记推送管理员 | | P2-06 | 情绪标记(模型版) | 第二阶段迭代接入轻量模型替代关键词规则 | 模型推理准确率≥85% | | P2-07 | 跨企业共享 | 通过企微"互联企业"应用共享 | 跨主体员工可使用同一服务 | | P2-08 | AI建议回复动态生成 | 千问基于对话上下文+RAGFlow知识生成建议回复 | 建议回复采纳率≥30% | | P2-09 | 操作步骤AI动态生成 | 替代静态配置,AI动态生成问题解决步骤 | 步骤可操作性强,坐席可直接转发 | | P2-10 | 风险提示AI动态判断 | 替代已知故障匹配,AI动态风险判断 | 关键风险不遗漏 | | P2-11 | 自动摘要 | 会话结束后AI自动生成摘要(问题描述+解决步骤+后续行动) | 摘要自动生成,内容准确完整,坐席可编辑 | | P2-12 | 数据看板 | 整体概览+坐席绩效+问题分布+AI效果+趋势分析 | 看板正确显示指标,数据更新及时,支持导出 | --- ## 7. 并行协作模式 ### 7.1 核心设计理念 传统"串行排队"改为"并行协作"——AI和人工并行,AI全程在场,人工随时介入。 ### 7.2 坐席看板分区 | 区域 | 说明 | 坐席是否主动看 | |------|------|---------------| | AI自主处理区 | AI处理简单问题 | 折叠,默认不展开 | | 举手等待区 | 员工明确要求人工或AI识别异常 | 核心关注区 | | 人工处理区 | 当前坐席正在处理 | 我的会话 | | 已结单区 | 会话已结束 | 灰色,折叠 | ### 7.3 会话标记系统详细设计 | 标记类型 | 图标颜色 | 触发条件 | 数据来源 | |---------|---------|---------|---------| | VIP标记 | 红色 | 企微通讯录API规则匹配(总监及以上或关键部门) | 企微通讯录 | | 举手标记 | 黄色 | 员工说"转人工"或关键词触发 | 消息内容匹配 | | 需介入标记 | 橙红色🔔 | 同一问题追问超过N轮(默认3轮)或AI判断需要人工 | 对话轮次计数 + AI判断 | | 情绪标记 | 红色 | 第一阶段:关键词规则("急/紧急/马上/崩溃"等);第二阶段:轻量模型 | 消息内容分析 | ### 7.4 紧急度评分公式 ``` 紧急度 = 基础分(关键词) + 情绪加成 + VIP加成 + 重复追问加成 ``` - 评分范围: 1-5分 - 映射: 1=低, 2=中, 3=高, 4=紧急, 5=最高 ### 7.5 会话列表排序规则 ``` 紧急 → 举手 → 需介入 → 活跃 → AI处理中 → 已结单 ``` --- ## 8. 界面设计 ### 8.1 用户信息去重规则 | 区域 | 显示内容 | 不显示 | |------|---------|--------| | 左栏(会话列表) | 姓名头像 + 标签 + 最后消息摘要 | 办公地点 | | 中栏(对话区) | 姓名 + 标签(VIP/举手/需介入) | 部门/岗位/等级 | | 右栏(AI助手面板) | 部门/岗位/等级/完整信息 | — | ### 8.2 用户端界面 **布局**: 企微H5双栏 - **左侧**: 对话区 - AI回复和人工回复在同一对话流 - AI回复后附带3张推荐卡片(相似问题、下载入口、审批流程) - 摇人按钮在输入框左侧 - 底部引导条:"点击 摇人 = 一键呼叫 IT 坐席" - **右侧**: AI助手面板 - 相似问题与做法(RAGFlow语义检索,异步加载) - 审批流程链接(静态映射表,存数据库/配置文件) - 软件下载快捷入口(分类到下载链接映射,显示版本号和平台) - 知识库搜索(用户主动触发,加防抖300ms) - **功能未实现前预留占位符+"即将上线"灰字提示** ### 8.3 坐席端界面 **布局**: 三栏 - **左栏**: 会话列表 - 排序 + 彩色标签 + 红点 + 未读消息数 - **中栏**: 对话区 - AI回复和坐席回复明确区分 - AI建议条 - 操作按钮 - **右栏**: AI助手面板(5个模块) - AI建议回复(采纳/编辑后采纳/忽略) - 快速回复模板(按问题分类,支持变量替换{员工姓名}等) - 问题解决操作步骤 - 风险提示 - 用户特点和其他注意事项(基本信息+VIP标记+历史咨询模式+坐席备注) --- ## 9. 摇人功能设计 ### 9.1 视觉设计 | 属性 | 值 | |------|------| | 位置 | 输入框左侧,和微信语音按钮同样的位置 | | 图标 | 铃铛图标 | | 颜色 | 橙色渐变(#FF6B35→#FF8F5E) | | 右上角 | 红点 | | 尺寸 | 44px圆形 | | Hover | 放大110%弹性回弹 | | 点击 | 0.6秒摇晃动画 | ### 9.2 趣味话术体系 | 触发场景 | 话术 | 语气 | 存储方式 | |---------|------|------|---------| | 点击摇人按钮 | 大哥,俺这就去摇人,稍等... | 亲切 | 配置表 | | 关键词触发转人工 | 收到!这就帮您摇位大神来 | 稍正式 | 配置表 | | 排队等待(30秒无人接单) | 人还在路上,别急别急~ | 安抚 | 配置表 | | 坐席接入 | 人摇来了!IT坐席为您服务 | 明确交接 | 配置表 | | 等待超时(2分钟) | 坐席都在忙,不过AI还在呢,要不先聊聊?我再继续摇 | 降级安抚 | 配置表 | | VIP员工(自动切换) | 这就帮您安排专家,请稍候 | 正式 | 配置表 | > **配置管理**: 话术存配置表,支持后台动态修改,无需发版。 --- ## 10. 术语与图标规范 > **新增日期**: 2026-06-11 > **整合自**: `PRD-增量-人工按钮与术语统一.md` ### 10.1 核心概念定义 | 术语 | 定义 | 触发者 | 接收者 | 图标 | 使用范围 | |------|------|--------|--------|------|----------| | **人工** | 用户呼叫坐席,请求人工服务 | H5用户端员工 | IT坐席 | 传菜铃(桌面拍铃)SVG | 用户端H5 + 坐席端(状态指示) | | **摇人** | 主责坐席呼叫其他坐席进入群聊协助 | IT坐席 | 其他IT坐席 | 👋 招手 | 仅坐席端 | | ~~**举手**~~ | **已取消** | — | — | — | 全局移除 | ### 10.2 "人工"按钮需求 #### 10.2.1 产品定义 **"人工"** = 用户(员工)主动呼叫IT坐席,请求人工服务。 | 属性 | 定义 | |------|------| | 触发者 | H5用户端员工 | | 接收者 | IT坐席(主责坐席或系统分配坐席) | | 图标 | 传菜铃(桌面拍铃)—— 前台/厨房放在桌面、拍一下发出"叮"声的圆形金属铃铛 | | 区别于 | "摇人" = 坐席呼叫其他坐席 | > **图标说明:传菜铃 vs 摇铃** > - ✅ **传菜铃**(正确):圆形金属铃铛,放在桌面上,从上方拍打铃面发出"叮"声。代表"我已提出问题,请人工来看一下"。 > - ❌ **摇铃** 🔔(错误):有把手的手摇铃,摇动发出声响。当前代码中使用的是此图标,需替换。 #### 10.2.2 按钮设计 **位置**:H5聊天界面标题栏右侧 **形态**: ``` ┌────────────────────────────────────┐ │ 智能IT支持服务台 [🔔 人工] │ ← 启用状态(橙色) │ [▓▓ 人工] │ ← 禁用状态(灰色) └────────────────────────────────────┘ ``` **图标规范**: - 启用状态:传菜铃SVG图标 + 橙色系配色 `#FF9800` - 禁用状态:传菜铃SVG图标 + 灰色 `#9E9E9E`,按钮整体 `opacity: 0.5; cursor: not-allowed` #### 10.2.3 启用条件 按钮在以下任一条件满足时**启用**(橙色,可点击): | # | 条件 | 说明 | |---|------|------| | 1 | **问题已确定** | AI已识别问题类型(`problem_confirmed = true`) | | 2 | **会话交互达3次** | 用户与AI的对话轮次 ≥ 3(不含:直接呼叫人工的消息、问候语如"你好""hi") | **禁用状态**(灰色,不可点击): - 以上条件均未满足时 - 显示 `title="请先描述您的问题,AI将为您匹配最佳坐席"` #### 10.2.4 坐席端联动 坐席端对应位置的按钮/状态指示也使用**传菜铃**图标: | 位置 | 当前状态 | 目标状态 | |------|---------|---------| | 会话列表 - 标签 | "举手"黄色标签 | "人工"橙色标签 + 传菜铃图标 | | 会话列表 - 排序权重 | `hand_raise` 标记 | `human_requested` 标记 | | 聊天区 - 系统消息 | "员工摇人请求人工" | "员工请求人工服务🔔" | #### 10.2.5 坐席离线状态 当无坐席在线时: - H5标题栏坐席状态显示:**灰色圆点 + "坐席离线"** - "人工"按钮:保持可见但**禁用**(灰色),`title="当前无在线坐席,请稍后再试或继续与AI对话"` ### 10.3 "摇人"详细规范 **含义**:主责坐席在处理会话时,邀请其他坐席进入当前会话协助。 **触发方式**: - 坐席点击聊天区"🤝 摇人"按钮 → 弹出 InviteDialog.vue **与"人工"的区别**: | 维度 | 人工 | 摇人 | |------|------|------| | 触发者 | 用户(员工) | 主责坐席 | | 接收者 | IT坐席 | 其他IT坐席 | | 目的 | 请求人工服务 | 协作处理复杂问题 | | 图标 | 传菜铃 SVG | 👋 招手 | | 对应代码 | `human_requested` | `collaborating_agent_ids` | ### 10.4 全局取消"举手"概念 **涉及范围**: | 类别 | 涉及位置 | 改动说明 | |------|---------|---------| | **代码变量名** | `hand_raise`, `hand_raise_keywords` | 标记为 `@deprecated`,重构为 `human_requested` | | **数据库字段** | `tags` JSON中的 `hand_raise: true` | 保持兼容,新增 `human_requested: true` | | **前端状态** | `store.tags.hand_raise` | 改为 `store.tags.human_requested` | | **UI文案** | "举手标签"、"举手标记" | 改为"人工标签"、"人工请求标记" | ### 10.5 图标汇总表 | 场景 | 图标 | 说明 | |------|------|------| | H5用户端 - "人工"按钮 | 传菜铃 SVG | 橙色,启用状态 | | H5用户端 - "人工"按钮(禁用) | 传菜铃 SVG | 灰色,`opacity: 0.5` | | 坐席端 - 会话列表"人工"标签 | 传菜铃 SVG + "人工"文字 | 橙色标签 | | 坐席端 - "摇人"按钮 | 👋 | 招手emoji | | 坐席离线状态 | ⚪ 灰色圆点 | CSS: `background-color: #9E9E9E` | ### 10.6 传菜铃SVG参考 ```svg ``` ### 10.7 改动清单摘要 | 类别 | 改动范围 | |------|---------| | 前端 | H5按钮文案+图标、坐席端标签、状态管理 | | 后端 | 新增 `human_requested` 字段,标记 `hand_raise` 为 deprecated | | 文档 | 全局替换"举手"为"人工" | --- ## 11. 技术约束 > **更新日期**: 2026-07-04 | **状态**: 部分约束已过时,需迭代更新 | 约束项 | 说明 | 当前状态 | |--------|------|----------| | 消息通道 | 企微自建应用消息API,禁止使用微信客服能力 | ✅ 约束中 | | 前端框架 | Vue3 + ElementPlus | ✅ 已采用 | | 后端框架 | FastAPI + Redis + PostgreSQL | ✅ 已采用 | | 部署方式 | Docker 容器化部署(Docker Compose 一键启停) | ✅ 已采用 | | 用户端渲染 | 企微H5(方式B:双栏布局,非对话卡片内方式A) | ✅ 已采用 | | 坐席端通信 | 使用WebSocket实时推送(2026-07已实现) | ⚠️ 已变更 | | AI接入 | 已接入Dify/RAGFlow/千问 | ⚠️ 已变更 | | 排队系统 | 阶段二已实现 | ⚠️ 已实现 | | 跨企业共享 | 阶段四规划中 | ⚠️ 规划中 | | 开发者 | 宋献,IT支持组组长,开发零基础,通过学习+AI辅助完成开发 | ✅ 持续进行 | | 企微设备管理 | 企微设备管理API | ❌ 付费功能,公司未购买 | --- ## 12. 数据模型核心设计 ### 11.1 会话表 (conversations) | 字段 | 类型 | 说明 | |------|------|------| | id | UUID | 会话ID | | employee_id | String | 企微员工ID | | employee_name | String | 员工姓名 | | department | String | 部门 | | position | String | 岗位 | | level | String | 等级 | | status | Enum | 会话状态: ai_handling / queued / serving / resolved | | is_vip | Boolean | VIP标记 | | is_pinned | Boolean | 置顶标记 | | is_todo | Boolean | 代办标记 | | urgency_score | Integer | 紧急度评分(1-5) | | tags | JSON | 标签集合(举手/需介入/情绪等) | | assigned_agent_id | String | 分配的坐席ID | | created_at | DateTime | 创建时间 | | updated_at | DateTime | 更新时间 | ### 11.2 消息表 (messages) | 字段 | 类型 | 说明 | |------|------|------| | id | UUID | 消息ID | | conversation_id | UUID | 所属会话ID | | sender_type | Enum | 发送者: employee / agent / ai / system | | sender_id | String | 发送者ID | | content | Text | 消息内容 | | msg_type | Enum | 消息类型: text / image / file | | ai_suggestion | Boolean | 是否为AI建议(坐席端) | | is_read | Boolean | 是否已读 | | created_at | DateTime | 创建时间 | ### 11.3 坐席表 (agents) | 字段 | 类型 | 说明 | |------|------|------| | id | UUID | 坐席ID | | user_id | String | 企微用户ID | | name | String | 坐席姓名 | | status | Enum | 在线/离线/忙碌 | | current_load | Integer | 当前服务会话数 | | created_at | DateTime | 创建时间 | --- ## 13. 待确认问题 (Open Questions) | # | 问题 | 影响范围 | 建议 | |---|------|---------|------| | OQ-01 | 坐席数量上限:第一步测试环境计划支持几个坐席同时在线? | 服务器资源/轮询频率 | 建议3-5个坐席 | | OQ-02 | 消息存储策略:会话记录保留多久?是否需要归档机制? | 数据库容量/合规要求 | 建议6个月热数据+归档 | | OQ-03 | 多媒体消息:M1支持文件上传,图片共享留到M2 | 企微API对接范围 | M1支持文本+文件上传,图片共享M2再评估 | | OQ-04 | 坐席排班:是否需要坐席排班/轮班功能? | 坐席管理模块 | 建议第二步考虑 | | OQ-05 | 满意度评价:会话结束后是否需要员工评价? | 用户端界面/数据收集 | 建议第二步增加 | | OQ-06 | 企微应用命名:自建应用在企微中显示的名称? | 用户感知 | 建议命名"IT服务台" | | OQ-07 | 坐席端权限:是否区分坐席/组长/管理员角色? | 权限系统设计 | 建议第一步简单区分,第二步完善 | | OQ-08 | 企微互联企业应用共享范围:共享给哪些上下游企业? | 跨企业功能边界 | 第三步确认 | | OQ-09 | AI回复末尾提示语:"以上为AI自动回复,如需人工帮助请回复'转人工'"——是否需要可配置? | 第二步AI接入 | 建议存配置表 | | OQ-10 | 转人工阈值:AI调用超时3秒是否需要可配置? | 第二步AI接入 | 建议写配置文件 | --- ## 14. 里程碑与交付物 | 里程碑 | 预计周期 | 核心交付物 | 现有系统变化 | |--------|---------|-----------|------------| | 阶段一:转人工改H5+坐席工作台MVP | 6-8周 | H5登录+身份识别 + 转人工链接改H5 + 坐席工作台MVP(会话列表+聊天+快速回复+邀请功能,不含AI) | AI转人工链接从员工服务改为H5,坐席使用自研工作台 | | 阶段二:智能咨询集成 | 5周 | H5全流程 + 敲桌子 + 双通道推送 + AI建议面板 + 排队 + 评分 | 员工服务入口逐步迁移至H5,坐席工作台增强 | | 阶段三:坐席辅助回复/判断 | 4-6周 | AI Wingman(草稿+摘要+知识+排查步骤)+ 双区布局 | 坐席从员工服务后台切换至自研工作台 | | 阶段四:日志标准+知识库迭代 | 4-6周 | 标注系统 + AI知识库自动优化 + 数据看板 + 跨企业共享 | AI知识库从人工维护升级为自动迭代 | | 阶段五:自动/辅助审核开单结单 | 4-6周 | 待办面板 + AI填单/审核/结单 + 外部系统对接 | 替代多系统切换,统一工作台闭环 | --- ## 15. AI Wingman — 坐席智能辅助设计 > **设计日期**: 2026-06-04 | **设计者**: 宋献 | **状态**: 方案已确认,待开发 ### 14.1 设计理念 传统IT服务台的设计重心偏向"员工端体验"——让员工更快获得答案。但**坐席人员的工作体验同样关键**。IT坐席每天面对大量重复性问题(密码重置、账号解锁、VPN连接),同时承受员工焦虑情绪传导带来的心理消耗。 **AI Wingman 的核心使命**:让AI不仅服务员工,更是坐席的"智能副驾驶"——消灭重复劳动、增强认知能力、守护情绪健康。 ``` ┌─────────────────────────────────────────────────────────────────────┐ │ AI Wingman 三层设计架构 │ │ │ │ ┌─────────────────────────────────────────────────────────────────┐│ │ │ 情感层 · 守护情绪健康 ││ │ │ 情绪识别预警 → 安抚话术推荐 → 语气润色 → 正向激励 → 疲劳检测 ││ │ │ 目标:减少坐席情绪耗竭 45%,降低职业倦怠风险 ││ │ └─────────────────────────────────────────────────────────────────┘│ │ ┌─────────────────────────────────────────────────────────────────┐│ │ │ 认知层 · 消除认知负荷 ││ │ │ 知识推荐 → SOP流程导航 → 相似工单推荐 → 下一步建议 → 客户画像 ││ │ │ 目标:降低坐席认知负荷 55%,新人上手周期缩短 50% ││ │ └─────────────────────────────────────────────────────────────────┘│ │ ┌─────────────────────────────────────────────────────────────────┐│ │ │ 效率层 · 消灭重复劳动 ││ │ │ AI草稿回复 → 会话自动摘要 → 智能填单 → 自动标签 → 快捷回复库 ││ │ │ 目标:坐席打字量减少 80%,单次会话处理时间缩短 60% ││ │ └─────────────────────────────────────────────────────────────────┘│ └─────────────────────────────────────────────────────────────────────┘ ``` ### 14.2 行业最佳实践验证 调研了 NiCE Copilot、Helpshift AI Copilot、Zendesk Agent Assist、天润融通、循环智能、合力亿捷等 7 家主流解决方案,提炼出关键数据: | 行业基准数据 | 数值 | 来源 | |-------------|------|------| | AI草稿回复可减少坐席打字量 | 70%-80% | 天润融通、合力亿捷实测 | | 自动填单节省时间 | 从1分钟降至10秒 | 天润融通实测 | | 知识推荐缩短新人上手 | 50% | 循环智能实测 | | 情绪识别预警准确率 | 85%+ | Helpshift 实测 | | 自动摘要节省文书记录时间 | 70% | 合力亿捷实测 | **5 大设计原则**(行业共识): 1. **非侵入式** — AI 辅助不干扰坐席原生工作流 2. **坐席始终主导** — AI 只建议,不自动发送,坐席始终有最终决定权 3. **反馈闭环** — 采纳/编辑/忽略行为持续优化 AI 推荐质量 4. **上下文继承** — AI → 人工切换时完整上下文(对话历史、客户画像、AI诊断)无缝跟随 5. **渐进式赋能** — 每阶段独立可用,不依赖后续阶段 ### 14.3 新增用户故事(坐席端) | # | 角色 | 故事 | 验收标准 | |---|------|------|---------| | US-8 | IT坐席 | 当我接到一个会话时,AI 已经帮我生成了草稿回复,我只需审核后点击发送,不用从头打字 | 每条新员工消息自动生成 1 个 AI 草稿,[采纳]/[编辑]/[忽略] 三选一 | | US-9 | IT坐席 | 当我完成一个会话时,系统自动生成结构化摘要(问题/原因/解决方案),我只需确认或微调 | 会话结单时自动弹出摘要确认框,坐席可编辑后确认,确认后存入 messages 表 | | US-10 | IT坐席 | 在处理复杂问题时,右侧自动显示知识库中的相关文档和操作步骤,不用切屏搜索 | 基于当前对话上下文,自动检索知识库并推送 Top 3 相关文档 | | US-11 | IT坐席 | 当员工情绪激动时,AI 提醒我注意语气,并推荐安抚话术,帮助我平和应对 | 情绪关键词触发预警图标,自动推荐 1-2 条安抚话术,支持一键发送 | | US-12 | IT坐席 | 我希望看到"历史上类似问题是怎么解决的",避免重复调查 | 基于当前问题自动搜索历史已结单会话,展示相似工单及解决方案 | | US-13 | IT主管 | 我希望了解坐席团队的工作效率和情绪健康状态,及时发现职业倦怠信号 | 仪表盘展示响应时效、会话时长、情绪事件统计、坐席疲劳指数 | ### 14.4 Phase 1 实施方案:效率层(已确认) **双区布局设计**: - **内嵌区(对话流中)**:针对当前员工消息的 AI 草稿回复,以特殊气泡样式显示在对话流中,[采纳]/[编辑]/[忽略] 按钮内嵌 - **侧栏区(右侧面板)**:会话自动摘要、自动标签、快捷回复库、相关知识推荐 **内嵌区 vs 侧栏区的设计逻辑**: | 功能 | 呈现位置 | 理由 | |------|---------|------| | AI草稿回复 | **内嵌**(对话流中) | 与当前对话上下文紧密相关,坐席需逐条审核 | | 会话自动摘要 | **侧栏** | 会话结束后查看,不干扰实时对话 | | 知识推荐 | **侧栏** | 参考性信息,按需查阅 | | 快捷回复模板 | **侧栏** | 已有功能,保持一致性 | | 自动标签 | **侧栏** | 批次操作,不打断对话流 | **底层实现**:扩展现有 Dify —— 新增一个 `assistant` 类型的 Dify Agent,与员工端 AI 共用知识库,但 system prompt 侧重"辅助坐席回复"而非"直接回复员工"。 | Agent | 用途 | system prompt 侧重 | |-------|------|-------------------| | Agent 1 — 员工端 AI(已有) | 回答员工问题 | 友好、准确、引导自助 | | Agent 2 — 坐席端 Wingman(新增) | 为坐席生成草稿/摘要/知识 | 专业、结构化、可操作 | ### 14.5 Phase 2+ 前置规划 | 阶段 | 功能 | 核心价值 | 预计周期 | |------|------|---------|---------| | Phase 1 效率层 | AI草稿 + 自动摘要 + 自动标签 | 消灭重复劳动 | 2-3 周 | | Phase 2 认知层 | 知识推荐 + SOP导航 + 相似工单 + 客户画像 | 降低认知负荷 | 3-4 周 | | Phase 3 情感层 | 情绪识别 + 安抚话术 + 语气润色 + 疲劳检测 | 减少情绪消耗 | 4-6 周 | ### 14.6 新增需求池 **P1 — Should Have(AI Wingman 效率层)** | ID | 需求 | 说明 | 验收标准 | |----|------|------|---------| | P1-14 | AI草稿回复 | 每条新员工消息自动生成AI建议回复,坐席可采纳/编辑/忽略 | 草稿生成 <3秒,内嵌在对应的员工消息下方 | | P1-15 | 会话自动摘要 | 会话结单时AI自动生成结构化摘要(问题/原因/解决方案) | 摘要包含 3 个结构化字段,坐席可编辑后确认 | | P1-16 | 自动标签 | AI基于对话内容自动建议会话标签(如:账号问题/网络故障) | 标签建议在结单时弹出,支持添加自定义标签 | | P1-17 | AI建议采纳追踪 | 记录坐席对AI建议的采纳/编辑/忽略行为 | 每个AI建议的操作记录到 messages 表 | **P2 — Nice to Have(认知层 + 情感层)** | ID | 需求 | 说明 | 验收标准 | |----|------|------|---------| | P2-11 | 知识推荐 | 基于对话自动检索知识库,推送 Top 3 相关文档 | 推荐刷新 <2秒,链接可点击跳转 | | P2-12 | SOP流程导航 | 高频问题预置SOP步骤,引导标准流程 | SOP步骤可勾选完成,支持动态调整 | | P2-13 | 相似工单推荐 | 搜索历史已结单会话,展示相似问题及解决方案 | 相似度排序,展示 Top 5 | | P2-14 | 客户画像 | 展示员工历史咨询模式、技术偏好等 | 画像自动提取,支持坐席补充 | | P2-15 | 情绪识别预警 | 检测员工消息情绪,坐席端预警图标 | 关键词+语气分析,准确率 ≥ 85% | | P2-16 | 安抚话术推荐 | 检测到情绪波动时自动推荐安抚话术 | 话术可一键发送,支持自定义 | | P2-17 | 语气润色 | 检查坐席即将发送的消息,提示语气问题 | 仅提示不拦截,坐席可选择忽略 | | P2-18 | 正向激励 | 会话满意结单时向坐席发送正向反馈 | 激励信息以系统消息方式推送 | | P2-19 | 坐席疲劳检测 | 统计连续工作时间、情绪事件次数,提醒休息 | 阈值可配置,温和提示 | --- ## 16. v5.3 坐席工作台增量需求 > 以下内容合并自 PRD-v53-incremental.md(2026-06-06),为 §16 v5.3 坐席工作台增量需求的子章节。 --- ## 16.1 产品定义 ### 16.1.1 产品目标 1. **提升坐席效率**:通过 AI 推荐回复(Ctrl+1/2/3 快捷填入)、键盘驱动的快速回复(Alt+1~5 + ↑↓ + Enter)、排查步骤流程图,将坐席平均响应时间降低 30% 2. **增强信息感知**:通过优先级图标体系(⛔阻断性/👥影响范围/⭐角色等级/🔁重复问题)、用户情绪状态芯片、IT 等级徽标,让坐席在 3 秒内掌握会话全貌 3. **统一工作闭环**:通过待办事项面板 + 中间栏视图切换,将工单/审批/设备异常等任务类型整合到同一工作台,消除多系统切换成本 ### 16.1.2 用户故事 | # | 用户故事 | |---|---------| | US-1 | **As a** IT 坐席, **I want** 在会话列表每条会话上直接看到阻断性/影响范围/角色等级/重复问题等优先级图标, **so that** 我能快速判断哪些会话需要优先处理,不必逐一点开查看详情 | | US-2 | **As a** IT 坐席, **I want** 在聊天区顶部常驻显示用户情绪、等待时长、IT 等级等信息芯片,点击展开 6 卡片详情, **so that** 我在对话过程中始终掌握用户画像,及时调整沟通策略 | | US-3 | **As a** IT 坐席, **I want** 在聊天区内看到 1-3 条 AI 推荐回复并支持 Ctrl+1/2/3 快捷填入, **so that** 我能快速回复常见问题,减少手动输入时间 | | US-4 | **As a** IT 坐席, **I want** 点击左侧待办事项时中间栏切换为任务类型专属页面(工单/审批/设备异常), **so that** 我无需切换到其他系统即可一站式处理所有任务 | | US-5 | **As a** IT 坐席, **I want** 在右栏通过 Alt+1~5 切换快速回复分类、↑↓ 导航、Enter 确认填入, **so that** 我可以在不离开键盘的情况下高效完成回复 | --- ## 16.2 需求池(P0/P1/P2) ### P0 — 必须完成(核心体验) --- #### FE-01 主题系统 | 项目 | 说明 | |------|------| | **需求** | 浅色/深色主题切换 | | **交互** | 顶部工具栏右侧添加 ☀️/🌙 切换开关(Track + Thumb 滑块样式),点击即切换 | | **实现** | `data-theme="light\|dark"` 属性切换;CSS 变量驱动两套配色(`:root` 浅色 / `[data-theme="dark"]` 深色) | | **持久化** | 切换后写入 `localStorage`,页面加载时读取恢复 | | **约束** | 切换即时生效,过渡时长 ≤ 300ms(`transition: background 0.3s, color 0.3s`);所有新增组件必须兼容双主题 | | **设计规格** | 深色主题:主背景 `#0f1923`,次背景 `#151f2b`,三级背景 `#1a2736`,悬停 `#1e3044`,激活 `#243b52`;主文字 `#e8edf2`,次文字 `#8ba1b7`;强调色 `#4da6ff` | | **变更范围** | `Workspace.vue` 顶部栏重构为独立 `TopBar.vue`;新增 `composables/useTheme.ts`;`global.css` 新增深色 CSS 变量 | --- #### FE-02 左栏会话列表 — 三段折叠 + 搜索增强 + 优先级图标 | 项目 | 说明 | |------|------| | **三段折叠** | 替代原 6 区结构,改为 3 段:📌 我的会话(默认展开)/ 👥 同事会话(默认折叠)/ 🕐 历史会话(默认折叠) | | **段头交互** | 段头背景 `var(--bg-tertiary)`,hover 变 `var(--bg-hover)`;显示条目数量(药丸徽标)+ 折叠箭头(▼ 旋转 -90° 收起);点击整行切换折叠 | | **搜索增强** | 搜索框 placeholder "搜索用户、关键词...";下方增加快捷筛选标签:全部/待处理/进行中/已完成(药丸样式,active 态 `var(--accent-soft)` + `var(--accent)` 色) | | **优先级图标** | 每条会话名称右侧显示:⛔ 阻断性(`is_blocking`,红底)、👥 影响范围(`impact_scope`,>5 人用高对比色)、⭐ 角色等级、🔁 重复问题。**不显示 IT 等级徽标** | | **优先级图标规格** | 16×16px 圆角方块,8px 字体;`pi-blocked` 红底、`pi-impact` 黄底(high 变红底)、`pi-role` 紫底、`pi-repeat` 橙底 | | **会话条目规格** | 条目间距 `margin: 1px 6px`,padding `8px 10px`;active 态 `var(--accent-soft)` + accent 边框;"待回复" 红色药丸标签 | | **变更范围** | `ConversationList.vue` 重构分区逻辑 + 搜索标签;`ConversationItem.vue` 新增优先级图标渲染 | --- #### FE-03 左栏底部 — 待办事项面板 | 项目 | 说明 | |------|------| | **位置** | 左栏底部,`border-top: 1px solid var(--border)`,`max-height: 220px`,内部滚动 | | **标题** | "待办事项" + 紧急数量红色标记(如 "5 紧急") | | **条目** | 每条显示:优先级圆点(urgent 红 / high 黄)+ 文本 + 类型标签(工单/审批/设备)+ 时间 | | **类型标签样式** | 工单:蓝底蓝字蓝边框;审批:紫底紫字紫边框;设备:橙底橙字橙边框(9px 字体) | | **点击交互** | 点击条目 → 中间栏切换为对应任务类型详情视图 | | **底部统计** | 在线/忙碌/离线坐席数(带状态圆点) | | **变更范围** | `ConversationList.vue` 底部新增 `TodoPanel.vue` | --- #### FE-04 中栏聊天区 — 用户信息栏 | 项目 | 说明 | |------|------| | **常驻区** | 替代原顶部标题栏,显示:头像(36px 圆形渐变)+ 姓名·部门岗位 + IT 等级徽标 + 信息 chips + 展开箭头 | | **信息 chips** | 😟 情绪(黄底黄边)、⏱ 等待时长、💬 对话轮次、🔁 重复标记(红底红边)、📝 备注标记(紫底紫边);默认态灰底 | | **展开详情** | 点击整行展开/收起 6 卡片详情面板(3 列 grid 布局):① 情绪状态 ② 会话详情 ③ 问题分析 ④ IT 技能等级 ⑤ 历史工单 ⑥ 其他备注 | | **IT 等级徽标** | 7 级段位(见 §4.2),显示在用户名行 + 详情卡片 ④ 中 | | **动画** | 展开箭头旋转 180°,详情面板 `max-height` 动画过渡 0.35s | | **变更范围** | 新增 `UserInfoBar.vue` + `ItLevelBadge.vue`;`ChatArea.vue` 替换顶部栏 | --- #### FE-05 中栏聊天区 — AI 推荐回复(内联) | 项目 | 说明 | |------|------| | **位置** | 聊天消息流中,用户消息之后、坐席回复之前 | | **触发条件** | 仅坐席未回复时显示;坐席发送回复后自动隐藏 | | **样式** | 虚线边框(`1px dashed var(--accent)`)+ 浅蓝背景,全宽 | | **内容** | "🤖 AI 推荐回复" 标签 + 1-3 个推荐选项卡片(横向排列,flex:1) | | **快捷键** | Ctrl+1 / Ctrl+2 / Ctrl+3 快捷填入回复框 | | **点击** | 点击卡片内容填入回复框并聚焦 | | **变更范围** | 新增 `AiRecommendInline.vue`;修改 `ChatArea.vue` 消息渲染逻辑 | --- #### FE-06 中栏聊天区 — 排查步骤栏 | 项目 | 说明 | |------|------| | **位置** | 聊天输入框下方,始终可见(不可整体收起) | | **栏头** | "🔧 排查步骤" + "▶ 展开全流程图" 按钮(accent 色边框药丸) | | **默认视图** | 最优路径横向方块:① 确认版本 → ② 清除缓存 → ③ 远程排查 → ...(可横向滚动) | | **路径方块规格** | padding `7px 14px`,圆角方块;done 态绿底、current 态蓝底、默认灰底;hover 变 accent 边框 | | **展开视图** | 点击 "展开全流程图" → 按钮文字变 "▼ 收起全流程图",下方展开完整决策树 | | **决策树规格** | 纵向步骤:圆点节点(22px)+ 连接线(2px);判断节点(❓ 判断)黄底方块;分支用虚线左侧缩进;当前步骤蓝色节点,已完成绿色节点 | | **动画** | 流程图区 `max-height` 过渡 0.35s;按钮箭头旋转 90° | | **数据源** | 静态模板库(`TroubleshootingTemplate` 模型),P0 坐席手动选择模板 | | **变更范围** | 新增 `TroubleshootBar.vue`;`ChatArea.vue` 底部挂载 | --- #### FE-07 中栏 — 任务详情视图切换 | 项目 | 说明 | |------|------| | **触发** | 点击左栏待办事项条目 → 中间栏从聊天视图切换为任务详情视图 | | **返回** | "← 返回会话" 按钮,切换回聊天视图 | | **运维工单页** | 📋 工单描述卡片(标题/类型/优先级/上报人/时间/描述)+ 📍 处理进度卡片(状态/接单人/SLA)+ 操作按钮:📥 接单 / 🔧 开始处理 / ✅ 结单 / 🔄 转派 | | **审批单页** | 📝 审批内容卡片 + ✏️ 审批意见输入区(textarea)+ 操作按钮:✅ 审批通过 / ❌ 拒绝审批 / 🔄 转交审批 | | **设备异常页** | 🖥 设备状态网格(2×3 grid:名称/型号/在线状态/最后在线/IP/告警次数)+ 🔧 处理记录卡片 + 操作按钮:📝 一键开单 / 🚚 派工 / ✅ 标记恢复 / 📅 加入巡检 | | **卡片规格** | 白底 + border + `radius-lg`(10px) + padding `14px 16px`;标签行 `tic-label`(70px) + `tic-value` | | **状态色值** | 正常=success绿、告警=warning黄、异常=danger红 | | **变更范围** | 新增 `TaskDetailView.vue`(含 3 种子视图);`ChatArea.vue` 同级添加视图切换逻辑 | --- #### FE-08 右栏 AI 助手面板重构 | 项目 | 说明 | |------|------| | **重构** | 移除现有 5 Tab 结构(`ElTabs`),改为上下两个区域 | | **上方 ~1/3** | 🤖 AI 智能推荐区(`flex-shrink:0`,border-bottom 分隔):标题栏(左侧蓝色竖线 3×12px + "🤖 AI 智能推荐")+ 1-3 张推荐卡片 | | **推荐卡片** | 灰底 + border,hover 变 accent 边框;卡片头:方案名称 + 置信度药丸(如 "92%");卡片文本:2 行截断;快捷键提示 `Ctrl+1/2/3` | | **下方 ~2/3** | 快速回复区(`flex:1`,内部列布局):搜索栏置顶 + 分类标签栏 + 回复条目列表 + 底部键盘指南 | | **分类标签** | 横向排列,每个标签带 `Alt+N` 提示;active 态 `var(--accent-soft)` + accent 边框;如 "VPN/网络 Alt+1"、"邮箱/办公 Alt+2" 等 | | **回复条目** | 左侧图标 + 文本 + 序号提示;selected 态蓝底蓝边框;hover 灰底 | | **键盘导航** | Alt+1~5 切换分类;↑↓ 选中条目;Enter 确认填入;/ 聚焦搜索框 | | **键盘指南** | 底部常驻:`Alt+1-5 切换` / `↑↓ 选择` / `Enter 填入` / `/ 搜索` | | **移除** | 风险提示 Tab(`RiskAlert.vue` 废弃)、用户信息 Tab(`UserInfoPanel.vue` 废弃,功能已并入聊天区) | | **变更范围** | `AiAssistantPanel.vue` 完全重写;`QuickReplyPanel.vue` 重写交互逻辑 | --- #### FE-09 系统名称 | 项目 | 说明 | |------|------| | **顶部栏** | 左侧:logo 方块 "IT"(渐变紫蓝 26×26px)+ "智能IT支持服务台"(渐变文字)+ "· 坐席工作台 — AI驱动 · 多系统对接 · 一站式处理"(10px 灰色副标题,max-width 280px 溢出省略) | | **变更范围** | `TopBar.vue`(从 `Workspace.vue` 顶部栏独立) | --- #### BE-01 Employee 模型扩展 | 项目 | 说明 | |------|------| | **新增字段** | `it_level`: IT 等级枚举(bronze/silver/gold/platinum/diamond/star/king),默认 silver;`it_level_source`: 等级来源(system/manual),默认 system;`notes`: 备注 JSON | | **API** | 新增 `PUT /api/employees/{id}/it-level` 坐席手动调整 IT 等级端点;修改 `GET /api/employees/{id}` 返回新字段 | | **变更范围** | `models/employee.py` 新增 3 字段;`schemas/` 新增/修改;`api/` 新增端点 | --- #### BE-02 Conversation 模型扩展 | 项目 | 说明 | |------|------| | **新增字段** | `impact_scope`: 影响范围(整数,受影响人数,默认 0);`is_blocking`: 阻断性标记(布尔,默认 False);`emotion_state`: 情绪状态(枚举 normal/anxious/angry/urgent,默认 normal) | | **API** | 修改 `GET /api/conversations` 和 `GET /api/conversations/{id}` 响应包含新字段 | | **变更范围** | `models/conversation.py` 新增 3 字段;`schemas/conversation.py` 修改;`api/conversations.py` 修改 | --- #### BE-03 TodoItem 模型 + CRUD API | 项目 | 说明 | |------|------| | **新增模型** | `TodoItem`:id(UUID), type(ticket/approval/device), title, priority(urgent/high/normal), description(JSON), status(pending/processing/resolved), assigned_agent_id(nullable), corp_id, created_at, updated_at | | **API** | `GET /api/todo-items`(列表)、`GET /api/todo-items/{id}`(详情)、`PUT /api/todo-items/{id}/status`(更新状态)| | **数据** | Mock 数据先行,预置 5-10 条示例待办 | | **变更范围** | 新增 `models/todo_item.py` + `schemas/todo_item.py` + `api/todo_items.py` | #### BE-03B 企微审批工单同步 > **新增日期**: 2026-07-04 | **优先级**: P1 | 项目 | 说明 | |------|------| | **需求** | 将企微审批工单同步到坐席待办事项 | | **数据来源** | 企微审批中心 API | | **同步内容** | 审批单标题、申请人、审批状态、创建时间 | | **企微API** | `GET /cgi-bin/oa/approvallist` 获取审批列表 | | **映射逻辑** | 企微审批状态 → TodoItem 状态(pending/processing/resolved)| | **同步频率** | 定时任务,每5分钟拉取一次;或实时 Webhook 推送 | | **变更范围** | 新增 `services/approval_sync.py` + 定时任务配置 | > **技术说明**:企微审批 API 需要审批应用权限,需在企微管理后台创建审批应用并配置 API 授权。 --- #### BE-04 TroubleshootingTemplate 模型 + CRUD API | 项目 | 说明 | |------|------| | **新增模型** | `TroubleshootingTemplate`:id(UUID), name, category(vpn/email/system/account), path_steps(JSON 最优路径), flowchart(JSON 完整决策树), is_active(布尔), created_at, updated_at | | **API** | `GET /api/troubleshooting-templates`(列表)、`GET /api/troubleshooting-templates/{id}`(详情)、`POST/PUT/DELETE`(管理员增删改) | | **数据** | 预置常见问题模板(VPN 连接失败、邮箱配置、系统登录、账号权限等 5-8 套) | | **变更范围** | 新增 `models/troubleshooting_template.py` + `schemas/troubleshooting_template.py` + `api/troubleshooting_templates.py` | --- ### P1 — 应该完成(体验增强) --- #### FE-10 快捷键系统完善 | 项目 | 说明 | |------|------| | **需求** | 全局快捷键注册与统一管理 | | **快捷键列表** | Ctrl+1/2/3(AI 推荐填入)、Alt+1~5(快速回复分类切换)、↑↓(快速回复条目导航)、Enter(确认填入)、/(聚焦快速回复搜索框) | | **约束** | 快捷键仅在未聚焦输入框时生效(避免与打字冲突);需提供快捷键提示 UI(右栏底部键盘指南) | | **变更范围** | 新增 `composables/useKeyboardShortcuts.ts` | --- #### FE-11 IT 等级手动调整交互 | 项目 | 说明 | |------|------| | **需求** | 坐席可在用户信息详情卡片中手动调整用户 IT 等级 | | **交互** | 在 IT 等级详情卡片旁提供「调整」按钮,弹出 7 级选择器(下拉/弹窗) | | **约束** | 调整后需记录 `it_level_source=manual`;前端立即更新显示,后端异步保存 | | **变更范围** | `UserInfoBar.vue` 详情面板中新增调整交互 | --- #### FE-12 主题切换过渡动画 | 项目 | 说明 | |------|------| | **需求** | 主题切换时的平滑过渡效果 | | **实现** | `body` 添加 `transition: background 0.3s, color 0.3s`;所有 CSS 变量驱动的属性自动跟随过渡 | | **约束** | 过渡时长 ≤ 300ms,不影响交互流畅度 | --- #### BE-05 IT 等级自动评分逻辑(框架) | 项目 | 说明 | |------|------| | **需求** | 为后续迭代搭建自动评分框架 | | **实现** | 定义评分维度和权重接口,当前仅返回默认值(silver)或手动值 | | **约束** | 不在 P0 实现完整评分,仅搭建扩展点 | --- ### P2 — 锦上添花(远期优化) --- #### FE-13 排查步骤进度同步 | 项目 | 说明 | |------|------| | **需求** | 排查步骤的当前步骤与对话内容自动同步 | | **实现** | 根据消息内容关键词自动推进步骤状态(如坐席说"清除缓存"→ 步骤 ② 标记 done) | #### FE-14 待办事项实时推送 | 项目 | 说明 | |------|------| | **需求** | 通过 WebSocket 实时推送新的待办事项 | | **实现** | 扩展 WS 消息类型,新增 `todo_item_created` 事件 | #### FE-15 IT 等级完整自动评分 | 项目 | 说明 | |------|------| | **需求** | 基于用户历史工单、自助解决率、操作复杂度等维度自动计算 IT 等级 | | **实现** | 后台定时任务 + 评分服务 | #### FE-16 排查步骤模板管理后台 | 项目 | 说明 | |------|------| | **需求** | 管理员可在后台增删改排查模板 | | **实现** | 独立管理页面或嵌入现有管理后台 | --- ## 16.3 UI 设计草案 ### 16.3.1 整体布局(三栏 + 顶栏) ``` ┌─────────────────────────────────────────────────────────────────────┐ │ [IT] 智能IT支持服务台 · 坐席工作台 — AI驱动 · 多系统对接 · 一站式处理 │ ☀️/🌙 │ 坐席: 陈思远 │ ├──────────┬──────────────────────────────────┬───────────────────────┤ │ │ 👤 张伟 · 研发一部 🥇黄金 │ 🤖 AI 智能推荐 │ │ 🔍 搜索 │ 😟焦虑 ⏱8分32秒 💬6轮 🔁重复 │ ┌─────────────────┐ │ │ 全部|待处 │ ▼ [6卡片详情展开区] │ │ 92% 远程协助方案 │ │ │ |进行|已完│──────────────────────────────────│ │ 85% 备用方案 │ │ │ │ │ └─────────────────┘ │ │ 📌我的会话│ [用户消息气泡] │───────────────────────│ │ ⛔👥👑🔁 │ [坐席消息气泡] │ 🔍 搜索快速回复 / │ │ 张伟 │ 🤖 AI推荐回复 │ Alt+1│Alt+2│... │ │ 👥👑 │ ┌────────────────────────────┐ │ ┌─────────────────┐ │ │ 陈芳 │ │①确认版本 → ②清除缓存 → ...│ │ │ VPN连接失败... │ │ │ │ └────────────────────────────┘ │ │ VPN证书过期... │ │ │ 👥同事会话│ 💬 [回复输入框] [发送] │ └─────────────────┘ │ │ (折叠) │──────────────────────────────────│ Alt+1~5 ↑↓ Enter / │ │ │ 🔧 排查步骤 [▶展开全流程图] │ │ │ 🕐历史会话│ ①确认版本→②清除缓存→③远程排查→.. │ │ │ (折叠) │ │ │ │──────────│ │ │ │ 📋待办事项│ │ │ │ 🔴工单 │ │ │ │ 🟣审批 │ │ │ │ 🟠设备 │ │ │ ├──────────┤ │ │ │ 在线4 忙2│ │ │ └──────────┴──────────────────────────────────┴───────────────────────┘ ``` ### 16.3.2 IT 等级徽标设计 | 等级 | 标识 | 配色 | CSS 类名 | 说明 | |------|------|------|---------|------| | 青铜 | 🛡️ 青铜 Lv.1 | 棕色渐变 `#78350f→#92400e`,文字 `#fef3c7`,边框 `#b45309` | `.bronze` | 基础操作需指导 | | 白银 | 🛡️ 白银 Lv.2 | 灰色渐变 `#374151→#6b7280`,文字 `#f3f4f6`,边框 `#9ca3af` | `.silver` | 能完成常规操作 | | 黄金 | 🥇 黄金 Lv.3 | 金色渐变 `#92400e→#d97706`,文字 `#fffbeb`,边框 `#f59e0b` | `.gold` | 熟练使用,高级操作需指导 | | 铂金 | 💎 铂金 Lv.4 | 青蓝渐变 `#164e63→#0e7490`,文字 `#cffafe`,边框 `#22d3ee` | `.platinum` | 独立解决大部分问题 | | 钻石 | 💎 钻石 Lv.5 | 靛蓝渐变 `#312e81→#4338ca`,文字 `#e0e7ff`,边框 `#818cf8` | `.diamond` | 高级排障能力 | | 星耀 | ⭐ 星耀 Lv.6 | 粉紫渐变 `#831843→#be185d`,文字 `#fce7f3`,边框 `#ec4899` | `.star` | 技术专家级 | | 王者 | 👑 王者 Lv.7 | 橙红渐变 `#7c2d12→#c2410c`,文字 `#ffedd5`,边框 `#f97316` + **发光动画** | `.king` | IT 管理员级 | > 王者徽标特有动画:`king-glow`,`box-shadow` 在 `0 0 4px` 和 `0 0 10px` 之间交替,2s 循环 ### 16.3.3 待办事项 → 中间栏视图切换 ``` 点击左侧「工单」→ 中间栏切换为: ┌──────────────────────────────────────────────┐ │ ← 返回会话 工单 #20240606001 [运维工单] │ ├──────────────────────────────────────────────┤ │ 📋 工单描述 │ │ 标题: CEO办公室 - 投屏设备故障 │ │ 优先级: 🔴 紧急 SLA: ⏰ 剩余 12 分钟 │ │ ...描述详情... │ │ │ │ 📍 处理进度 │ │ 状态: ⏳ 待接单 接单人: 未分配 │ ├──────────────────────────────────────────────┤ │ [📥 接单] [🔧 开始处理] [✅ 结单] [🔄 转派] │ └──────────────────────────────────────────────┘ ``` --- ## 16.4 数据模型变更 ### 16.4.1 Employee 模型新增字段 ```python # 新增字段(在 models/employee.py 中追加) it_level: Mapped[str] = mapped_column( String(20), nullable=False, default="silver", comment="IT技能等级: bronze/silver/gold/platinum/diamond/star/king" ) it_level_source: Mapped[str] = mapped_column( String(20), nullable=False, default="system", comment="等级来源: system(系统初评)/manual(坐席手动)" ) notes: Mapped[dict] = mapped_column( JSON, nullable=False, default=dict, comment="坐席备注(JSON): {pregnancy, preferred_time, special_needs, ...}" ) ``` ### 16.4.2 Conversation 模型新增字段 ```python # 新增字段(在 models/conversation.py 中追加) impact_scope: Mapped[int] = mapped_column( Integer, nullable=False, default=0, comment="影响范围(受影响人数)" ) is_blocking: Mapped[bool] = mapped_column( Boolean, nullable=False, default=False, comment="阻断性标记: 是否导致用户无法工作" ) emotion_state: Mapped[str] = mapped_column( String(20), nullable=False, default="normal", comment="情绪状态: normal/anxious/angry/urgent" ) ``` ### 16.4.3 新增 TodoItem 模型 ```python class TodoItem(Base): __tablename__ = "todo_items" id: Mapped[str] # UUID 主键 type: Mapped[str] # ticket/approval/device title: Mapped[str] # 标题 priority: Mapped[str] # urgent/high/normal description: Mapped[dict] # JSON,类型专属详情 status: Mapped[str] # pending/processing/resolved assigned_agent_id: Mapped[str | None] # 分配坐席 corp_id: Mapped[str] # 企业ID created_at: Mapped[datetime] updated_at: Mapped[datetime] ``` ### 16.4.4 新增 TroubleshootingTemplate 模型 ```python class TroubleshootingTemplate(Base): __tablename__ = "troubleshooting_templates" id: Mapped[str] # UUID 主键 name: Mapped[str] # 模板名称,如 "VPN连接失败" category: Mapped[str] # 分类:vpn/email/system/account path_steps: Mapped[list] # JSON,最优路径步骤 [{label, status}] flowchart: Mapped[dict] # JSON,完整决策树(含判断节点、分支) is_active: Mapped[bool] # 是否启用 created_at: Mapped[datetime] updated_at: Mapped[datetime] ``` --- ## 16.5 API 变更概要 ### 16.5.1 新增端点 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/todo-items` | 获取当前坐席待办列表 | | GET | `/api/todo-items/{id}` | 获取待办详情 | | PUT | `/api/todo-items/{id}/status` | 更新待办状态 | | GET | `/api/troubleshooting-templates` | 获取排查模板列表 | | GET | `/api/troubleshooting-templates/{id}` | 获取排查模板详情 | | POST | `/api/troubleshooting-templates` | 新增排查模板(管理员) | | PUT | `/api/troubleshooting-templates/{id}` | 修改排查模板(管理员) | | DELETE | `/api/troubleshooting-templates/{id}` | 删除排查模板(管理员) | | PUT | `/api/employees/{id}/it-level` | 坐席手动调整 IT 等级 | ### 16.5.2 修改端点 | 方法 | 路径 | 变更说明 | |------|------|---------| | GET | `/api/conversations` | 响应新增 `impact_scope`, `is_blocking`, `emotion_state` 字段 | | GET | `/api/conversations/{id}` | 同上 | | GET | `/api/employees/{id}` | 响应新增 `it_level`, `it_level_source`, `notes` 字段 | --- ## 16.6 组件变更矩阵 | 组件 | 变更类型 | 说明 | |------|---------|------| | `Workspace.vue` | **重构** | 顶部栏独立为 `TopBar.vue`;移除应急模式横幅到 TopBar;三栏布局微调 | | `ConversationList.vue` | **重构** | 三段折叠替代原六段;搜索区增加筛选标签;底部新增待办事项面板 | | `ConversationItem.vue` | **修改** | 新增优先级图标渲染(⛔👥⭐🔁);移除 IT 等级徽标 | | `ChatArea.vue` | **重构** | 顶部栏替换为 `UserInfoBar.vue`;底部新增 `TroubleshootBar.vue`;新增视图切换逻辑(聊天/任务详情) | | `AiAssistantPanel.vue` | **完全重写** | 移除 5 Tab,改为上下两区(AI 推荐 ~1/3 + 快速回复 ~2/3) | | `QuickReplyPanel.vue` | **重写** | 搜索栏置顶 + Alt 分类切换 + ↑↓ 键盘导航 + Enter 确认填入 + 底部键盘指南 | | `RiskAlert.vue` | **废弃** | 功能移除 | | `UserInfoPanel.vue` | **废弃** | 功能并入 `UserInfoBar.vue` | | `AiSuggestReply.vue` | **修改** | 移至右栏上方 AI 推荐区;增加置信度显示 + Ctrl 快捷键 | | `TopBar.vue` | **新增** | 独立顶栏组件(系统名称 + 主题切换 + 坐席信息 + 应急模式) | | `UserInfoBar.vue` | **新增** | 聊天区顶部用户信息栏(chips + 展开详情 6 卡片) | | `AiRecommendInline.vue` | **新增** | 聊天区内 AI 推荐回复(Ctrl+1/2/3 快捷填入) | | `TroubleshootBar.vue` | **新增** | 排查步骤栏(路径视图 + 可展开流程图) | | `TodoPanel.vue` | **新增** | 左栏底部待办事项面板 | | `TaskDetailView.vue` | **新增** | 中间栏任务详情视图(工单/审批/设备三种子视图) | | `ItLevelBadge.vue` | **新增** | IT 等级徽标组件(7 级段位 + 渐变配色 + 王者发光动画) | | `useKeyboardShortcuts.ts` | **新增** | 全局快捷键管理 composable | | `useTheme.ts` | **新增** | 主题切换 composable(CSS 变量 + localStorage 持久化) | | `stores/todo.ts` | **新增** | 待办事项 Pinia Store | | `stores/theme.ts` | **新增** | 主题 Pinia Store | | `api/todo.ts` | **新增** | 待办事项 API | | `api/troubleshooting.ts` | **新增** | 排查模板 API | --- ## 16.7 待确认问题 | # | 问题 | 影响范围 | 建议 | |---|------|---------|------| | 1 | **情绪状态识别方式**:由 AI 自动分析消息内容识别,还是由坐席手动标记? | BE-02, FE-04 | 建议先 AI 自动识别 + 坐席可手动修正 | | 2 | **影响范围数据来源**:是员工自行填写、系统自动判断(如根据部门人数),还是坐席标记? | BE-02 | 建议坐席手动标记为主,后续迭代增加 AI 辅助判断 | | 3 | **排查模板与问题分类的关联**:排查模板如何匹配到当前会话?是按标签自动匹配还是坐席手动选择? | BE-04, FE-06 | 建议 P0 坐席手动选择模板,P2 再做自动匹配 | | 4 | **待办事项与外部系统对接时机**:工单/审批/设备的真实系统 API 何时对接? | BE-03 | 已确认 Mock 先行,前端 UI 做完整交互 | | 5 | **IT 等级在用户端显示方式**:用户端看到的 IT 等级是完整徽标还是简化文本? | FE-04, BE-01 | 需与用户端(H5)产品确认 | | 6 | **同事会话区的数据筛选**:「同事会话」是显示所有其他坐席的进行中会话,还是仅显示同组/同部门坐席的? | FE-02 | 建议先显示同组坐席,后续可配置 | | 7 | **排查步骤栏的高度**:排查步骤栏始终可见会占用聊天区空间,是否需要设置最小/最大高度? | FE-06 | 参考原型:默认路径视图 ~44px,展开流程图最大 300px | | 8 | **AI 推荐回复的触发时机**:是每条用户消息后都触发,还是有条件触发? | FE-05 | 已确认仅坐席未回复时显示 | | 9 | **原 6 区到 3 段的数据映射**:原"待接单"区并入"我的会话"还是独立显示?原"协作会话"区并入哪个段? | FE-02 | 需确认分区数据映射规则 | --- ## 16.8 关键决策记录 | # | 决策 | 依据 | |---|------|------| | 1 | 外部系统对接 Mock 先行,前端 UI 做完整交互 | 避免被外部系统 API 阻塞前端开发进度 | | 2 | IT 等级采用混合模式(系统初评 + 坐席手动调整) | 系统自动评分不够准确,需坐席校准 | | 3 | 排查步骤数据源为静态模板库 | 预置常见问题模板即可满足 MVP,后续可扩展为动态生成 | | 4 | 右栏移除 5 Tab 结构,改为上下两区 | 原型验证:坐席主要使用 AI 推荐和快速回复,其他功能使用频率低 | | 5 | 会话列表不显示 IT 等级徽标 | 避免信息过载,IT 等级在聊天区详情展示更合适 | | 6 | 排查步骤栏整体不可收起 | 确保坐席始终能看到排查进度,避免遗漏步骤 | | 7 | 原型样式已锁定(v5.3 版),调整样式前必须与用户确认 | 保证开发产出与设计稿一致 | --- ## 16.9 里程碑建议 | 阶段 | 范围 | 预估周期 | |------|------|---------| | **Phase 1 — 基础框架** | FE-01 主题系统 + FE-09 系统名称 + BE-01/02 模型扩展 + 数据库迁移 | 2-3 天 | | **Phase 2 — 左栏改造** | FE-02 三段折叠 + 优先级图标 + FE-03 待办面板 + BE-03 TodoItem API | 2-3 天 | | **Phase 3 — 中栏改造** | FE-04 用户信息栏 + FE-05 AI 推荐内联 + FE-06 排查步骤栏 | 3-4 天 | | **Phase 4 — 右栏改造** | FE-08 AI 助手面板重构 + BE-04 排查模板 API | 2-3 天 | | **Phase 5 — 任务视图** | FE-07 视图切换 + 工单/审批/设备 3 种子页面 | 2-3 天 | | **Phase 6 — 增强打磨** | FE-10 快捷键 + FE-11 IT 等级调整 + FE-12 过渡动画 + 联调测试 | 2-3 天 | --- ### 16.2.1 密码管理需求 | ID | 需求 | 说明 | 验收标准 | |----|------|------|----------| | P0-10 | 修改密码API | POST /api/agents/password,支持旧密码验证+新密码修改 | 旧密码验证成功后更新,bcrypt 哈希存储 | | P0-11 | 修改密码UI | 个人中心/设置页面提供"修改密码"入口,弹窗表单 | 弹窗包含旧密码、新密码、确认密码字段,验证后提交 | --- ## 17. 管理后台远景规划 > **决策状态**: 已确认(2026-06-08) > **决策依据**: 本平台未来产品、开发、维护人员并非专业岗位人员,所有模块功能需尽可能解耦,产品开发阶段和功能模块颗粒度需符合零基础岗位人员特点。 ### 17.1 产品定位 管理后台是 IT 智能服务台的**第三端产品**(与员工端 H5、坐席工作台并列),面向**坐席组长**,提供系统配置、人员管理、内容运营、数据监控等能力。 **核心原则**: - 运维人员能通过管理后台配置一切,代码修改仍需开发 - 代码修改由零开发基础员工逐步成长,但要合理控制代码开发变更颗粒度和影响范围 - 单功能单模块,每个菜单项可独立启用/禁用 - 配置优于代码,导入导出标准格式统一用 JSON/CSV - 变更可回滚,每次配置变更记录版本 ### 17.2 功能模块清单 | # | 模块 | 功能描述 | 优先级 | 上线阶段 | 备注 | |---|------|---------|--------|---------|------| | 1 | **功能开关/参数** | 按阶段控制功能开放,运行时切换无需改代码 | P0 | 阶段一 | 阶段一仅开核心功能,后续阶段解锁排队/评分等 | | 2 | **坐席人员管理** | 在线/离线状态、技能标签(参考快速回复7大类)、权限分级(角色→权限组) | P0 | 阶段一 | 技能标签与快速回复分类对齐:电脑/软件/外设/网络/安全/资产/其他 | | 3 | **消息分配模式** | 阶段一仅手动接单,后续按坐席规模扩展自动分配 | P1 | 阶段一(手动) → 阶段二+(自动) | 当前1人足够,手动接单完全满足;6种模式为远景规划,详见 §18.3 | | 4 | **快速回复管理** | 分类管理 + 版本历史 + 审核发布流程 | P1 | 阶段一 | 审核通过前不影响提交人自己使用(提交人可用待审核版本) | | 5 | **主题模板管理** | 三层管理(全局默认→坐席端→H5端),支持节日/活动主题 | P2 | 阶段二 | 三层统一一个主题体系,未来可加入节日和活动主题 | | 6 | **会话监控** | 实时查看坐席工作状态、会话队列、异常告警(超时未响应等) | P1 | 阶段二 | 先出 Demo | | 7 | **数据看板** | 坐席绩效(响应时间/结单率/AI采纳率)、满意度趋势、热点问题排行 | P1 | 阶段四 | 先出 Demo | | 8 | **排查流程图管理** | JSON 导入导出 + 预览 + 版本管理 | P1 | 阶段三 | 后续升级为可视化拖拽编辑 | | 9 | **知识库管理** | 标注→知识条目→迭代闭环 | P2 | 阶段四 | 与 RAGFlow 集成,详见 §19 | | 10 | **外部系统集成** | Dify/RAGFlow/数据平台连接管理 + 同步日志 | P0~P2 | 阶段二起 | 详见 §19 | ### 17.3 消息分配模式 > **现状校准(2026-06-08)**:当前人工咨询量和坐席人员数量 1 人足以承担,引入多坐席主要是 AB 角色设置和冗余考虑。因此阶段一只需手动接单,自动分配模式为远景规划,按坐席规模增长渐次启用。 | # | 模式 | 描述 | 适用场景 | 启用时机 | 优先级 | |---|------|------|---------|---------|--------| | 1 | **手动接单** | 坐席在待办列表中自行选择接单 | 当前唯一模式:1人足以承担,AB角冗余 | ✅ 阶段一 | P0 | | 2 | **轮询分配** | 按坐席列表顺序依次分配,循环往复 | 坐席≥3人且能力均匀 | 坐席≥3人时 | P2 | | 3 | **最少活跃优先** | 自动分配给当前活跃会话数最少的坐席 | 坐席处理速度有差异 | 坐席≥3人时 | P2 | | 4 | **加权比例分配** | 按坐席权重分配(如高级权重2、初级权重1) | 坐席能力分层明显 | 坐席≥5人时 | P3 | | 5 | **技能匹配分配** | 根据问题类别匹配坐席技能标签 | 专业化分工 | 坐席≥5人+技能标签体系成熟时 | P3 | | 6 | **优先队列** | 紧急/阻断性问题优先路由到高级坐席/组长 | 需要快速响应高优问题 | 坐席≥5人+紧急度评分上线时 | P3 | **设计原则**: - 阶段一管理后台分配模式设置页仅显示「手动接单」一项,界面简洁 - 后续模式按坐席规模自动解锁(如坐席<3人时自动分配选项灰显并提示"坐席人数不足3人,暂不需要") - 所有模式均支持热切换,不需重启服务 ### 17.4 快速回复管理 — 审核流程 ``` 坐席提交模板 → 状态: 待审核(仅提交人可用) ↓ 坐席组长审核 → 通过: 全员可见 / 驳回: 返回修改 ↓ 版本历史保留,支持回滚到任意版本 ``` ### 17.5 主题模板管理 — 三层架构 ``` 全局默认主题 ──→ 坐席端主题覆盖 ──→ H5端主题覆盖 │ │ │ └─ 基础色板 └─ 坐席工作台专属 └─ 员工端专属 └─ 字体/圆角 └─ 优先级高于全局 └─ 优先级高于全局 特殊主题:节日/活动主题 → 临时覆盖三层,到期自动恢复 ``` --- ## 18. 系统生态与集成规划 > **决策状态**: 已确认(2026-06-08) > **核心策略**: 管理后台先建 + 集成渐次接入 ### 18.1 五系统生态架构 | 系统 | 职责 | 部署位置 | 当前集成度 | |------|------|---------|-----------| | **智能IT支持服务台** | 员工端H5 + 坐席工作台 + 管理后台 | 公司内网服务器 | — | | **Dify** | AI对话引擎(Agent1 员工自助 + Agent2 坐席辅助) | 公司内网 | 100%(dify2openai 集成) | | **RAGFlow** | 知识库检索(Dify 通过 RAGFlow 获取知识) | 公司内网 | 0%(Dify 间接调用) | | **智能IT助手数据处理平台** | 会话数据分析、报表、运营指标 | 公司内网 | 0%(物理隔离) | | **企业微信** | 消息通道、身份认证、组织架构 | 企微云 | 100%(回调+API) | ### 18.2 Dify 管理边界 | 管理后台管的 | 仍在 Dify 网页管的 | |------------|-----------------| | Agent Key/URL 配置 | Workflow 逻辑设计 | | System Prompt 参数 | 知识库与 Agent 绑定 | | 转人工关键字列表 | 对话日志查看 | | AI 命中阈值参数 | dify2openai 桥接配置 | **设计原则**:管理后台管「配置和参数」,Dify 网页管「Workflow 逻辑」,两者边界明确。 ### 18.3 RAGFlow 集成 — 知识库迭代闭环 **同步触发方式**: 阈值触发自动推送,管理员仅审核 ``` 坐席标注 → 同类问题超过 N 次 → 管理后台自动推荐「加入知识库」 ↓ 管理员确认 → 管理后台生成 FAQ 条目 → RAGFlow API 推送 → 知识库更新 ↓ 下次同类问题 → L1 流程图命中(不走 AI)→ 成本下降 ``` **标注粒度**: 标注 + 坐席实际回复内容(不只是「有效/无效」,还记录坐席实际发了什么) ### 18.4 数据处理平台集成 **策略**: 短期 B+C,长期 A | 阶段 | 方式 | 描述 | |------|------|------| | **短期** | B. 数据库只读 | 数据平台直连新系统 PostgreSQL(只读视图),获取全量会话/消息/评分数据 | | **短期** | C. 看板嵌入 | 数据平台看板 URL 嵌入管理后台 iframe,体验统一 | | **长期** | A. API 推送 | 会话结单时管理后台推送标签/评分到数据平台 API | **数据同步内容**: | 数据 | 同步方向 | 时机 | |------|---------|------| | 会话标签 | 服务台 → 数据平台 | 会话结单时 | | 满意度评分 | 服务台 → 数据平台 | 员工评分后 | | 坐席绩效 | 服务台 → 数据平台 | 每日汇总 | | 运营报表 | 数据平台 → 管理后台 | iframe 嵌入实时查看 | ### 18.5 外部系统集成模块 | 子模块 | 功能 | 优先级 | |--------|------|--------| | Dify 连接管理 | API URL/Key 配置、连接测试、Agent 状态查看 | P0 | | RAGFlow 连接管理 | API URL/Key 配置、知识库列表查看、同步状态 | P1 | | 数据平台连接管理 | 数据库连接配置、看板 URL 嵌入、同步状态 | P1 | | 同步日志 | 所有外部系统的推送/拉取记录、成功/失败统计 | P1 | | 流程图→Dify 导出 | L1 流程图导出为 Dify 变量/知识条目 | P2 | ### 18.6 AI 混合策略 — 四层架构 > **决策状态**: 已确认(2026-06-08) > **核心原则**: 不过度依赖 AI 实时能力,采用「固定流程图 + AI 动态能力 + 标注 + 迭代」混合模式,在响应速度、算力成本、管理可控、迭代循环实现最佳实践。 | 层级 | 名称 | 机制 | 成本 | 响应速度 | 可控性 | |------|------|------|------|---------|--------| | **L1** | 固定流程图 | 确定性分支树,关键词/规则匹配 | 零 | 毫秒级 | 100% | | **L2** | AI 动态能力 | Dify Agent 调用(RAGFlow 检索增强) | 高 | 2-5秒 | 中 | | **L3** | 人工标注 | 坐席对 AI 建议标注「有效/无效/部分有效」+ 实际回复内容 | 低 | 即时 | 高 | | **L4** | 迭代闭环 | 高频问题→流程图补充,AI 命中率低→知识库补充 | 低 | 批量 | 高 | **迭代目标**: 不断将 L2 的问题「降级」到 L1,提升系统确定性和响应速度,降低 AI 算力成本。 **L1 流程图编辑方式**: - 阶段三: JSON 导入导出 + 预览(实现快、零基础人员可用) - 后续升级: 可视化拖拽编辑 **迭代触发机制**: 阈值自动推荐(超过 N 次同类问题 → 管理后台弹推荐),管理员确认后执行 **关键设计原则**: AI 的 system prompt 中应注入当前流程图的结构摘要,让 AI 在已有流程图覆盖的领域内回答时与流程图保持一致。 ### 18.7 排查流程图与 Dify 结合 — 实现路径 > **决策状态**: 已确认(2026-06-08),接收推荐的分阶段实现路径 #### 可行性矩阵 | 结合点 | 可行性 | 实现方式 | |--------|--------|---------| | 流程图→Dify System Prompt 注入 | ✅ 完全可行 | 导出为结构化文本→注入 Agent system prompt 变量 | | 流程图→Dify 知识条目 | ✅ 完全可行 | 每个分支导出为 FAQ 对→推送 RAGFlow→Dify 通过 RAGFlow 检索 | | 流程图→Dify Workflow 节点 | ⚠️ 有限可行 | Dify 不开放 Workflow 编辑 API,但可通过 HTTP 请求节点回调管理后台获取流程图分支 | | Dify 对话结果→流程图标注 | ✅ 完全可行 | AI 回复后自动记录命中/未命中流程图,统计覆盖率 | #### 分阶段实现路径 | 阶段 | 实现内容 | 对应子阶段 | 交付物 | |------|---------|-----------|--------| | **Step 1** | JSON 导入导出 + 预览 | 3B | 管理后台可管理流程图 JSON,坐席端展示流程图 | | **Step 2** | 流程图导出为 Dify 变量/知识条目 | 4A | 管理后台一键导出→Dify system prompt 注入/RAGFlow 推送 | | **Step 3** | Dify HTTP 请求节点回调流程图分支 | 4C | Dify Agent 可实时查询流程图分支,动态决策 | | **Step 4** | 可视化拖拽编辑 | 远景 | 管理后台可视化编辑流程图,替代 JSON 手写 | **Step 1→2 的关键价值**:流程图从「仅坐席可见的参考」升级为「AI 也遵循的规则」,实现 L1+L2 一致性。 --- ## 19. 阶段细化与并行推进策略 > **决策状态**: 已确认(2026-06-08) > **核心策略**: 资源审批期间并行推进不受阻断影响的需求,避免停工等待 ### 19.1 阶段细化(子阶段划分) 每个子阶段独立可交付,不受其他子阶段阻断: #### 阶段一:转人工改H5 + 坐席MVP + 管理后台骨架 | 子阶段 | 范围 | 独立可交付物 | 外部依赖 | |--------|------|-------------|---------| | **1A** | H5 Mock登录 + 坐席MVP + 邀请功能 | 员工手动登录→坐席可接单回复→坐席可邀请员工/部门加入会话 | 无 | | **1B** | 管理后台骨架 | 功能开关 + 坐席管理 + 快速回复管理 | 无 | | **1C** | 端到端验证 | 完整链路跑通 + 修复缺陷 | 需完整环境 | #### 阶段二:H5全流程 + 实时推送 + 排队 | 子阶段 | 范围 | 独立可交付物 | 外部依赖 | |--------|------|-------------|---------| | **2A** | WebSocket推送 | 员工端实时消息 | 无 | | **2B** | 排队分配 | 手动接单(已满足当前1人需求),自动分配按坐席规模渐次解锁 | 无 | | **2C** | 满意度评分 | H5评分 + 后端存储 | 无 | | **2D** | OAuth2切换 | 公司域名就绪后一键切回 | 公司备案域名 | #### 阶段三:AI Wingman + 排查流程图 | 子阶段 | 范围 | 独立可交付物 | 外部依赖 | |--------|------|-------------|---------| | **3A** | AI Wingman验证 | Agent2 Key填入 + 草稿/摘要验证 | Dify Agent2 创建 | | **3B** | 排查流程图+AI混合 | L1流程图管理(JSON) + L2 AI兜底 + 管理后台流程图模块 | 无 | | **3C** | 标注体系 | 坐席标注 + 数据沉淀 + 阈值推荐 | 无 | #### 阶段四:迭代闭环 + 数据看板 | 子阶段 | 范围 | 独立可交付物 | 外部依赖 | |--------|------|-------------|---------| | **4A** | 迭代闭环 | 高频问题→流程图补充 + RAGFlow 知识库推送 | RAGFlow API 联调 | | **4B** | 数据看板 | 绩效/满意度/热点 + 数据平台集成 | 数据平台联调 | | **4C** | 知识库管理 | 标注→知识条目→迭代闭环 | 无 | ### 19.2 并行推进策略 **核心原则**: P0 阻断项依赖外部资源审批,不等审批完成,并行推进不受阻断影响的需求。 | 外部依赖 | 阻断的子阶段 | 可并行推进的子阶段 | |---------|------------|-----------------| | 公司备案域名 | 2D(OAuth2切换) | 1A/1B/1C/2A/2B/2C/3A/3B/3C/4A/4B/4C | | Dify Agent2 创建 | 3A(Wingman验证) | 1A/1B/1C/2A/2B/2C/3B/3C/4A/4B/4C | | RAGFlow API 联调 | 4A(迭代闭环-知识推送) | 1A/1B/1C/2A/2B/2C/3A/3B/3C/4B/4C | | 数据平台联调 | 4B(数据看板-平台集成) | 1A/1B/1C/2A/2B/2C/3A/3B/3C/4A/4C | ### 19.3 资源审批期间推荐推进事项 在 OAuth2 公司域名审批期间,优先推进以下**零外部依赖**的工作: | 优先级 | 工作内容 | 所属子阶段 | |--------|---------|-----------| | 🔴 最高 | 管理后台骨架(功能开关+坐席管理+快速回复管理) | 1B | | 🔴 最高 | 端到端测试验证 | 1C | | 🟡 高 | H5 WebSocket 推送实现 | 2A | | 🟡 高 | 手动接单优化(当前1人足够,AB角冗余场景) | 2B | | 🟢 中 | 满意度评分组件 | 2C | | 🟢 中 | 排查流程图 JSON 导入导出 + 预览 | 3B | --- > **文档结束** — 本PRD涵盖企微智能IT支持服务台全部已确认设计决策和约束,作为后续架构设计和开发实施的基准文档。 > - v1.0 新增管理后台远景规划、系统生态与集成规划、阶段细化与并行推进策略 > - v1.1 新增邀请功能设计(§21) > - v1.2 文档合并优化:归档冗余 PRD,保留唯一权威版本 --- ## 20. 邀请功能设计 — 多人会话协作 > **设计日期**: 2026-06-10 | **设计者**: 宋献 | **状态**: 方案已确认,纳入M1 MVP > **原型文件**: `docs/prototypes/invite-flow-v1.html` > **技术方案**: `docs/邀请功能-技术方案.md` ### 20.1 背景与动机 **问题场景**:IT坐席在处理会话时,经常需要拉入其他同事协助(如网络问题需要网络组同事确认、软件授权需要资产管理同事查证)。当前只有1对1模式,坐席只能手动告知对方会话内容,效率极低。 **方案选型**(2026-06-10 确认): | 方案 | 核心思路 | 可行性 | 结论 | |------|---------|--------|------| | 方案一:一对一+邀请 | 在现有会话上扩展参与者,企微应用消息通知 | ✅ 完全可行 | 备选 | | 方案二:应用群聊 | 企微appchat创建群,群内沟通 | ❌ 应用无法接收群内消息回调 | 不可行 | | **方案三:WebSocket+应用消息双通道** | **在现有架构上扩展,后端维护参与者列表** | ✅ **完全可行,零新增基础设施** | **当前方案** | **方案二不可行的原因**:企微appchat是「应用推送消息群」,群成员在群内的发言**不会回调给应用**。应用只能单向推送消息到群,无法看到用户回复,坐席工作台无法获取群内对话。 ### 20.2 核心设计理念 **邀请 ≠ 群聊**。邀请是在现有1对1会话基础上,将新参与者加入同一会话的协作模式: ``` 原始:员工 ←→ 坐席(1对1) 邀请后:员工 ←→ 坐席 + 被邀请人A + 被邀请人B(多人同一会话) ``` - 所有参与者在同一会话中看到完整对话 - 坐席始终是会话的"主控者"(创建/结单/转接权限) - 被邀请人是"协作者"(可查看和回复,不可结单/邀请他人) ### 20.3 用户故事 | # | 角色 | 故事 | 验收标准 | |---|------|------|---------| | US-14 | IT坐席 | 处理网络问题时,我想邀请网络组的同事直接进入当前会话查看情况并回复,不用我手动转发聊天记录 | 坐席点击邀请→选择人员→对方收到通知→加入会话→可看到历史消息并发送回复 | | US-15 | IT坐席 | 邀请同事时,我想选择共享多少历史消息,避免对方被大量无关信息淹没 | 邀请时可选择共享模式(全部/最近10条/不共享),默认最近10条 | | US-16 | IT坐席 | 我需要邀请整个部门参与,比如让安全组的同学一起排查 | 可按部门批量邀请,勾选部门=邀请全部门成员 | | US-17 | 被邀请员工 | 收到邀请通知后,我希望一键加入会话,看到之前的问题上下文 | 点击企微通知→H5加载→看到共享历史→可发送消息 | | US-18 | 被邀请员工 | 我协助完成后,想退出这个会话,不再收到消息 | 被邀请人可主动退出,退出后会话列表中不再显示 | ### 20.4 功能规格 #### 20.4.1 邀请发起(坐席端) | 功能点 | 规格 | |--------|------| | 入口 | 会话详情头部工具栏「+ 邀请」按钮 | | 选人方式 | ①搜索姓名/工号 ②组织架构树浏览 ③按部门批量勾选 | | 组织架构数据 | 后端调用企微通讯录API,前端渲染部门树 | | 历史消息共享 | 三选一:全部 / **最近10条**(默认)/ 不共享 | | 邀请确认 | 显示已选人员列表 + 共享模式,确认后调用后端接口 | | 人数提醒 | >10人时弹窗提醒"建议优先邀请关键人员",不设硬上限 | #### 20.4.2 通知与加入(被邀请人端) | 功能点 | 规格 | |--------|------| | 通知方式 | 企微应用消息(template_card 卡片消息) | | 卡片内容 | 邀请人姓名 + 发起人姓名 + 问题摘要(最近1条消息截取50字) + 「加入会话」按钮 | | 加入方式 | 点击按钮→H5页面→自动加载会话(Mock登录或OAuth2) | | 历史消息 | 根据邀请时的共享模式,加载对应历史消息 | | 加入广播 | 加入后自动在会话中发送系统消息「XX已加入会话」 | #### 20.4.3 多人会话(所有参与者) | 角色 | 查看消息 | 发送消息 | 邀请他人 | 结单/转接 | 退出 | |------|---------|---------|---------|----------|------| | 原始员工 | ✅ | ✅ | ❌ | ❌ | 关闭页面即退出 | | 主责坐席 | ✅ | ✅ | ✅ | ✅ | ❌(主责不可退) | | 被邀请人 | ✅ | ✅ | ❌ | ❌ | ✅ | #### 20.4.4 参与者管理 | 功能点 | 规格 | |--------|------| | 参与者显示 | 会话详情头部显示参与者头像+姓名,hover显示角色标签 | | 系统消息 | 邀请/加入/退出均广播系统消息,所有参与者可见 | | 退出机制 | 被邀请人点击「退出会话」→ 确认 → 从participants移除 → 广播系统消息 | | 坐席视角 | 坐席工作台可查看参与者列表,可移除被邀请人 | ### 20.5 与「摇人」的关系 | 维度 | 摇人(§9) | 邀请功能(§21) | |------|-----------|---------------| | 邀请对象 | 坐席 → 坐席 | 坐席 → 任意员工/部门 | | 通信通道 | WebSocket(坐席内部) | WebSocket + 企微应用消息(跨端) | | 被邀请人入口 | 坐席工作台内弹窗通知 | 企微应用消息→H5页面 | | 典型场景 | 坐席A请坐席B协助同一问题 | 坐席请网络组同事确认现场情况 | | 数据字段 | `collaborating_agent_ids` | `participants` | | 权限 | 协作坐席可邀请其他坐席 | 只有主责坐席可邀请员工 | > **两套机制独立但互补**:摇人解决坐席间协作,邀请解决跨部门/跨角色协作。 ### 20.6 非目标(Non-goals) | 不做什么 | 原因 | |---------|------| | 不做企微群聊同步 | appchat API无法接收群内消息,技术上不可行 | | 不做被邀请人二次邀请 | 防止邀请链失控,只有主责坐席能发起邀请 | | 不做邀请审批流程 | 邀请是即时协作需求,加审批会破坏时效性 | | 不做音视频通话 | 当前只做文字协作,音视频是独立功能 | | 不做跨企业邀请 | 阶段一仅限内部员工,互联企业是阶段四的P2需求 | | 不做文件/图片共享 | 阶段一支持文本+文件上传,图片粘贴共享留到阶段二 | ### 20.7 交互原型 详见 `docs/prototypes/invite-flow-v1.html`,包含9步完整交互流程: 1. 架构概览(SVG流程图) 2. 一对一会话中 → 点击邀请 3. 选人弹窗(组织架构树+已选列表+历史共享设置) 4. 批量选部门 5. 历史消息共享模式选择 6. 确认邀请(后端6步时序) 7. 企微通知卡片样式 8. 加入会话流程 9. 多人会话双视角对照 ### 20.8 依赖与前提 | 依赖 | 状态 | 说明 | |------|------|------| | 企微通讯录API | ✅ 已有 | 读取部门/员工列表,OAuth2授权后可调用 | | 企微应用消息推送 | ✅ 已有 | `/message/send` 推送邀请通知 | | WebSocket通道 | ✅ 已有 | 坐席端和H5端均已实现 | | H5 Mock登录 | ✅ 已有 | 被邀请人通过H5加入,Mock模式下手动登录 | | template_card消息 | 🔧 需开发 | 邀请卡片消息类型,当前仅支持text消息 | --- ## 21. 应急降级页设计 — BC/DR 业务连续性保障 > **需求提出**: 2026-06-15(经多次澄清,核心场景为 BC/DR) > **需求方**: Simon > **状态**: 方案已确认,待实施 > **关联规则**: §3.3 降级应急预案 ### 21.1 背景与业务目标 **核心场景**:🔴 **业务连续性(BC/DR)** — 系统故障时切换至企微原生服务,坐席保留关键功能 当本系统出现**特殊情况**(故障 / 不可用 / 合规要求 / 流量过载)时: 1. **员工侧**:切换至企微**原生员工服务**(群聊/单聊兜底) 2. **坐席侧**:通过企微"员工服务 → 服务窗口"链接,使用本系统应急页 3. **目标**:即使主系统挂掉,**核心 IT 服务不中断** ### 21.2 入口架构(1 URL + 企微 JS-SDK) ``` ┌────────────────────────────────────────┐ │ 企微"员工服务"应用(企业已建) │ │ └─ "服务窗口" tab(只能配 1 个 URL) │ │ └─ https://itsupport.servyou.com.cn/emergency └────────────────────────────────────────┘ ↓ ┌────────────────────────────────────────┐ │ /emergency 页面(身份检测) │ │ 1. 加载企微 JS-SDK(不依赖本后端) │ │ 2. agentConfig 拿当前 userid │ │ 3. 调企微通讯录 API 查 user 详情 │ │ 4. 判断身份:是"IT支持-咨询坐席"标签成员 │ │ ├─ 是 → router.push('/agent/preview')│ │ └─ 否 → router.push('/h5/preview') │ └────────────────────────────────────────┘ ``` **关键设计原则**: - 身份检测**不依赖本系统后端**(主系统挂时仍可用) - 应急页 2 套(h5 + agent),通过 router.push 切换 - 企微通讯录 API 走企微 access_token,跟主系统无关 ### 21.3 保留功能(4 件套 + 动态联系人) | # | 功能 | 描述 | 数据源 | |---|---|---|---| | 1 | 🔍 **快速回复模板** | 100+ 条按关键词搜索 | mock JSON → localStorage | | 2 | 🔍 **排障流程模板** | vpn/邮箱/系统/账号 4 大类 | mock JSON → localStorage | | 3 | 📋 **资源/审批链接** | 12 个常用入口 | mock JSON → localStorage | | 4 | 👥 **应急联系人** | 企微标签"IT支持-咨询坐席"成员 | 企微 API → 单独 localStorage | | **合计** | | | **~750KB + 联系人列表** | #### 21.3.1 应急联系人(动态,非固定) **数据源**:企微通讯录标签"IT支持-咨询坐席" **预同步**: - 主系统正常时,每 30 分钟调企微通讯录 API 查该标签成员 - 存到**独立 localStorage key** `emergency_contacts`: ```json { "synced_at": "2026-06-15T10:00:00", "tag_id": "TAG_xxx", "members": [ {"userid": "zhangsan", "name": "张三", "avatar": "...", "online": true}, ... ] } ``` **应急展示**: - 列出标签下所有成员 - 在线/离线状态(企微 status 接口) - 点击 → 打开企微单聊 - 数据 > 1 小时未更新时标红,提示"联系人可能不准,建议手动搜索标签组" ### 21.4 "特殊情况" 触发与降级 | 类型 | 触发条件 | 降级动作 | |---|---|---| | 🔴 主系统完全不可用 | API 5xx / 网络断开 | 切企微原生 + 服务窗口 | | 🟡 部分功能故障 | 消息发送失败 / 排队堵死 | 切企微原生 + 工具走应急页 | | 🟠 合规要求 | 必须用企微审计 | 切企微原生 + 应急页工单 | | 🟢 流量过载 | 服务降级中 | 部分功能走应急页 | ### 21.5 功能范围 | 项 | H5 应急页 | Agent 应急页 | |---|---|---| | URL | `/h5/preview` | `/agent/preview` | | 统一入口 | `/emergency` | `/emergency` | | 显示组件 | `RightPanel.vue`(3 段式) | `AiAssistantPanel.vue`(4 件套) | | 去除功能 | `ChatPanel`(聊天走企微原生) | `ConversationList` + `ChatArea` + `TopBar` | | 数据源 | **预同步到 localStorage** | **预同步到 localStorage** | | 后端调用 | **无**(主系统可能挂) | **无**(主系统可能挂) | | 用户登录 | **跳过**(应急场景免登) | **跳过**(应急场景免登) | ### 21.6 数据预同步机制(2 个独立 localStorage) #### localStorage #1: `emergency_data`(静态工具数据) **正常态**: ``` 主后端 /api/emergency-data → 前端每 30 分钟拉取 → 存到 localStorage("emergency_data") ``` **应急态**: ``` localStorage("emergency_data") → 应急页直接渲染 ``` **内容**:快速回复 / 排障 / 资源(~750KB) #### localStorage #2: `emergency_contacts`(动态联系人) **正常态**: ``` 企微通讯录 API 查"IT支持-咨询坐席"标签 → 前端每 30 分钟拉取 → 存到 localStorage("emergency_contacts") ``` **应急态**: ``` localStorage("emergency_contacts") → 应急页渲染联系人列表 ``` **内容**:标签成员列表(动态,可能多人) ### 21.7 页面要求(应急场景) #### 21.7.1 `/emergency`(身份检测入口,约 50 行) - 加载企微 JS-SDK(wx.config + wx.agentConfig) - 拿当前 userid - 调企微通讯录 API 查 user 详情 + 标签 - 判断是否含"IT支持-咨询坐席"标签 - 是坐席 → push /agent/preview,否则 → push /h5/preview - 检测失败 → 显示"请选择身份"2 个大按钮兜底 #### 21.7.2 H5 应急页(`/h5/preview`) - 顶部:项目名 + **"🆘 应急模式"** 红色徽章 + 数据更新时间 - 主体:`RightPanel` 全宽,3 段式(AI 推送 / 资源 / 趣味问答) - 底部:固定"主系统异常?此页面帮您继续获得服务" - 移动端:强制显示(覆盖 `isMobile` 判断) #### 21.7.3 Agent 应急页(`/agent/preview`) - 顶栏:简化版 TopBar + 🆘 徽章 - 主体:`AiAssistantPanel` 全宽,4 件套 - 联系人:标签组成员 + 在线状态 - 底部:固定"主系统异常"提示 ### 21.8 文件改动清单 #### H5 端(frontend-h5/) | 操作 | 路径 | 说明 | |---|---|---| | 新建 | `src/views/EmergencyEntry.vue` | 身份检测入口(约 50 行) | | 新建 | `src/views/H5PreviewView.vue` | 应急主页 | | 新建 | `src/mock/emergency-data.json` | 应急静态数据 | | 新建 | `src/utils/emergency-sync.ts` | 同步工具(2 个 localStorage) | | 改 | `src/router/index.ts` | 加 `/emergency` + `/h5/preview` | | **复用** | `src/components/assistant/RightPanel.vue` | import 共享 | #### Agent 端(frontend-agent/) | 操作 | 路径 | 说明 | |---|---|---| | 新建 | `src/views/AgentPreviewView.vue` | 应急主页 | | 改 | `src/router/index.ts` | 加 `/agent/preview` | | **复用** | `src/components/assistant/AiAssistantPanel.vue` | import 共享 | **注**:联系人 API 调用放 `emergency-sync.ts` 共用模块,h5 + agent 都用 ### 21.9 验收标准 #### 功能验收 - [ ] **断网测试**:拔网线/关后端 → 应急页仍能打开 - [ ] **身份自动路由**:员工点开 → /h5/preview,坐席点开 → /agent/preview - [ ] **联系人动态**:标签组加新人,预同步后能显示 - [ ] **数据新鲜度**:顶部"数据 X 分钟前更新",> 1h 标红 - [ ] **2 个 localStorage 独立工作**:删 emergency_data 不影响 emergency_contacts #### 灾备演练(非工作时间,本月必做) - [ ] 选择非工作时间(晚上 / 周末) - [ ] 模拟主系统挂掉 → 切企微原生服务 → 坐席用应急页 - [ ] 演练时长 / 解决率 / 痛点记录 - 详见 `docs/SOPs/SOP-005-应急降级演练.md` ### 21.10 排期 | 时间 | 任务 | |---|---| | 2026-06-16(周一) | WB 接单,1 入口 + 2 页面 + 1 mock + 1 同步工具 + 2 路由 | | 2026-06-16(周一) | 本地 `npm run build` 验证 | | 2026-06-17(周二) | 部署 + **断网演练**(非工作时间,如周二晚 20:00) | | 2026-06-18(周三) | 收集问题,迭代 | | 2026-06-19(周四) | 二次演练确认 | | 2026-06-20(周五) | 正式版上线 + 应急页同步上线 | ### 21.11 应急场景的额外考虑 1. **入口要醒目**:企微"员工服务 → 服务窗口"配置清晰描述 2. **不依赖登录**:应急时坐席可能密码都改不了,免登 3. **非工作时间演练**:降低对业务影响 4. **联系人降级**:实在没预同步数据,提示"请手动搜索 IT支持-咨询坐席 标签" 5. **保留升级路径**:主系统恢复后,应急页要有提示"主系统已恢复,建议返回" ### 21.12 关联文档 - **双端同步规则**:`[[preview-pages-sync-rule]]` - **锁定决策**:`[[locked-decisions]] § 应急降级` - **演练 SOP**:`docs/SOPs/SOP-005-应急降级演练.md` - **需求演进**:v1 灰度(误)→ v2 BC/DR(理解)→ v3 服务窗口(1 URL)→ v4 标签联系人(动态) --- ## 22. 阶段5 自动化闭环需求 > **新增日期**: 2026-07-06 | **状态**: 已合并(原独立文档 `docs/02-需求分析/阶段5-自动化闭环-PRD.md` 已归档删除)| **定位**: 在阶段1-4(MVP→完整流程→AI Wingman辅助→知识库/看板)基础上,将「AI辅助」与「知识库/看板」闭环为「自动处置 + 自动关单」。外部系统集成见主文档 §18(火绒/HMAC-SHA1、联软 LV7000、Dify、RAGFlow、aTrust/HMAC-SHA256待密钥、eHR)。 ### 22.1 产品目标 **要解决的核心问题**:阶段3 是「AI 辅助坐席」、阶段4 是「知识库 + 看板」,但常见 IT 请求(密码重置、软件自助安装、病毒自动处置、终端定位、网络故障自助、权限申请)仍需人工接待与处置,导致人工成本高、响应慢。 **成功标准(可量化,验收口径见 §22.5 Q7)**: | # | 目标 | 指标 / 量化标准 | | --- | --- | --- | | G1 | 提升自动化闭环率 | 上线首季 ≥ 30%、稳态 ≥ 50%(无需人工介入即从受理到关单的会话占比) | | G2 | 降低人工介入 | 同类请求坐席工时较阶段4 下降 ≥ 40% | | G3 | 缩短响应时延 | 机器人首响应时间 ≤ 5 秒(WebSocket 实时推送) | | G4 | 提升自动关单率 | 处置成功且无需转人工的会话中,自动关单占比 ≥ 90% | | G5 | 覆盖满意度采集 | 自动关单后自动推送评价,满意度收集覆盖率 ≥ 95% | | G6 | 保障安全合规 | 高危/写操作 100% 审计留痕,0 安全事故(处置需可审批、可回滚) | ### 22.2 用户故事 **员工(H5 端)** - 作为员工,我希望描述问题后系统能自动给出解决方案或自动处理,以便我无需等待坐席即可快速恢复工作。 - 作为员工,我希望能实时看到自动化处置进度与结果,以便了解我的请求状态,必要时主动转人工。 **坐席(agent 端)** - 作为坐席,我希望系统自动处置常见请求、仅把疑难/异常/高危转给我,以便我专注高价值问题。 - 作为坐席,我希望能一键查看、审核或接管自动化动作,以便在安全兜底的同时减少重复操作。 **管理员(admin 端)** - 作为管理员,我希望能配置自动化场景的触发条件与动作、审核写操作审批策略,以便安全可控地运营自动化。 - 作为管理员,我希望在看板中查看自动化闭环率/介入率/响应时长等指标,以便持续优化场景。 ### 22.3 需求池(P0/P1/P2) > 优先级:P0=Must have(本期必须);P1=Should have(重要可分批);P2=Nice to have(可选/后续)。依赖外部系统:火绒 / 联软 LV7000 / Dify / RAGFlow / aTrust / eHR;映射策略 联软(主) > aTrust(VPN辅) > eHR(静态)。 **P0(Must have)** | 编号 | 名称 | 描述 | 优先级 | 角色 | 依赖 | | --- | --- | --- | --- | --- | --- | | P0-01 | 意图识别与场景路由 | 基于 Dify 识别员工自然语言意图,结合 RAGFlow 知识库,将请求路由到对应自动化场景(自助应答 / 处置执行 / 转人工) | P0 | user/agent | Dify、RAGFlow、§18 知识库 | | P0-02 | 员工↔终端映射解析 | 复用联软 LV7000 `strusername` 字段建立员工↔终端映射,作为自动化处置定位终端的依据;映射策略:联软(主) > aTrust(VPN辅) > eHR(静态) | P0 | user/agent | 联软 LV7000、aTrust(待密钥)、eHR | | P0-03 | 知识库自助应答 | 复用 RAGFlow 检索知识库,向员工返回自助解决指引(图文/步骤),支持「已解决/未解决」反馈 | P0 | user | RAGFlow、§18 知识库 | | P0-04 | 自动化处置执行引擎 | 核心执行层,分级执行(见 §22.5 Q2):只读/低风险动作自动执行;写操作/高危动作默认需审批或员工 H5 二次确认。调用火绒/联软/aTrust 等 | P0 | user/agent | 火绒、联软 LV7000、aTrust(待密钥)、P0-05 | | P0-05 | 自动化动作审批与审计 | 对写操作/高危动作提供审批与 100% 审计留痕(操作人、对象、参数、结果、时间) | P0 | admin/agent | P0-04、OAuth2、会话审计 | | P0-06 | 转人工兜底与阈值 | 定义自动应答/处置必须转人工的触发条件(见 §22.5 Q3):置信度<0.6 / 超时60s / 高危必转 / 员工主动转 / 连续未解决≥2次 | P0 | user/agent | P0-01 | | P0-07 | 自动关单 + 满意度自动收集 | 处置成功且员工未异议后静默 10 分钟自动关单(见 §22.5 Q4),并自动推送满意度评价 | P0 | user | 满意度、数据看板 | | P0-08 | 管理后台自动化配置 | 管理后台简易配置(见 §22.5 Q5):自动化场景开关、触发条件与动作配置、审批策略配置 | P0 | admin | §17 功能开关、集成配置 | | P0-09 | 自动化实时进度推送 | 经 WebSocket 向 H5 与坐席端实时推送处置进度/状态/结果,复用 WebSocket 与本地消息缓存 | P0 | user/agent | WebSocket、本地消息缓存 | | P0-10 | 自动化指标看板 | 在数据看板基础上扩展:自动化闭环率、人工介入率、首响应时长、场景分布、自动关单率 | P0 | admin | 数据看板 | **P1(Should have)** | 编号 | 名称 | 描述 | 优先级 | 角色 | 依赖 | | --- | --- | --- | --- | --- | --- | | P1-01 | 处置失败回滚/补偿 | 写操作失败时提供回滚或补偿机制,保证终端/VPN 状态可恢复 | P1 | agent/admin | P0-04、P0-05 | | P1-02 | 异常处理与自动转人工通知 | 处置失败/超时/异常时自动转人工并通知坐席(经 WebSocket) | P1 | agent | P0-06、P0-09 | | P1-03 | 规则版本管理与灰度 | 自动化场景配置支持版本快照与灰度发布(小比例流量验证后再全量) | P1 | admin | P0-08 | | P1-04 | 高危操作员工侧二次确认 | 影响员工终端/账号的高危动作,执行前需在 H5 端二次确认 | P1 | user | P0-04、P0-05 | **P2(Nice to have)** | 编号 | 名称 | 描述 | 优先级 | 角色 | 依赖 | | --- | --- | --- | --- | --- | --- | | P2-01 | 可视化工作流编排引擎 | 可视化配置「触发条件→动作链」(拖拽式)。本期用管理后台简易配置(Q5),引擎列入 P2 后续迭代 | P2 | admin | P0-08 | | P2-02 | 自学习场景优化 | 基于满意度/转人工数据,自动建议或优化场景路由与方案 | P2 | admin | P0-10 | | P2-03 | 权限申请自动化 | 联动 eHR/审批流,自动发起并跟踪权限申请(涉及审批流,范围较大) | P2 | user/admin | eHR、P0-04 | | P2-04 | aTrust VPN 自动化接入 | 基于 aTrust(HMAC-SHA256) 自动处理 VPN 接入/策略。**aTrust 密钥未到则后置**(见 §22.5 Q6) | P2 | user | aTrust(待密钥) | ### 22.4 UI 设计稿 > 风格:沿用现有 Vue3 三端风格——浅色扁平、主色 accent = `#07C160`。 **端到端自动化闭环流程** ```mermaid flowchart TD A[员工 H5 提交请求] --> B{意图识别/场景路由
Dify + RAGFlow} B -->|高置信-自助类| C[知识库自助应答
RAGFlow] B -->|处置类| D{是否写操作/高危?} D -->|否/只读| E[自动化处置执行引擎] D -->|是| F{需审批/确认?} F -->|是| G[审批流/坐席审核/员工二次确认] F -->|否| E G --> E E --> H{处置成功?} H -->|是| I[自动关单 + 满意度自动收集] H -->|否| J[自动转人工 坐席接管] B -->|低置信/异常/超时| J C -->|已解决| I C -->|未解决| J I --> K[看板:闭环率/介入率/响应时长] J --> K ``` **H5 员工端 · 自动化会话页(线框)** ``` ┌─────────────────────────────┐ │ ← IT 智能服务台 │ ├─────────────────────────────┤ │ [输入/语音] 描述你的问题… │ ├─────────────────────────────┤ │ 🤖 智能助手(实时进度条) │ │ ▸ 已识别:密码重置 │ │ ▸ 正在检索知识库… │ │ ▸ 已生成自助方案 / 处置中… │ ├─────────────────────────────┤ │ 方案卡片:步骤1/2/3… │ │ [已解决] [仍未解决] │ ├─────────────────────────────┤ │ [转人工] [查看进度] │ └─────────────────────────────┘ ``` **H5 状态流转** ```mermaid stateDiagram-v2 [*] --> 提交请求 提交请求 --> 识别中: WebSocket 推送 识别中 --> 自助应答: 高置信 识别中 --> 自动处置: 处置类 识别中 --> 转人工: 低置信/异常 自助应答 --> 已解决: 员工点[已解决] 自助应答 --> 转人工: 员工点[未解决] 自动处置 --> 待确认: 高危/写操作需确认 待确认 --> 处置中: 员工确认 自动处置 --> 处置中: 免确认 处置中 --> 已解决: 成功 处置中 --> 转人工: 失败/超时 已解决 --> 自动关单: 静默10分钟/默认关单 自动关单 --> 满意度评价 转人工 --> 坐席处理 ``` **坐席端 · 自动化处置监控 / 接管页(线框)** ``` ┌──────────────────────────────────────┐ │ 自动化工作台 │ ├──────────────────────────────────────┤ │ 进行中自动化会话 (实时列表) │ │ • 员工A · 病毒处置 · 处置中 · [接管] │ │ • 员工B · 软件安装 · 待确认 · [审核] │ ├──────────────────────────────────────┤ │ 选中会话详情: │ │ 意图/场景 · 映射终端 · 计划动作链 │ │ [一键接管] [批准执行] [驳回转人工] │ ├──────────────────────────────────────┤ │ 异常/超时队列(自动转人工) │ └──────────────────────────────────────┘ ``` ```mermaid flowchart LR M[坐席监控列表] -->|查看| N[会话详情] N -->|一键接管| O[坐席接管处理] N -->|批准执行| P[执行引擎继续] N -->|驳回/高危| Q[转人工处理] P --> R[自动关单/异常] ``` **管理后台 · 自动化配置 + 看板(线框)** ``` ┌──────────────────────────────────────┐ │ 管理后台 / 自动化 (OTP 已验证) │ ├──────────────┬───────────────────────┤ │ 场景开关 │ 自动化指标看板 │ │ ☑ 密码重置指引 │ 闭环率 32% ▲ │ │ ☑ 软件自助安装 │ 介入率 ↓ 41% │ │ ☑ 病毒自动处置 │ 首响应 3.2s │ │ ☑ 终端定位 │ 场景分布(饼) │ │ ☐ 权限申请 │ │ ├──────────────┼───────────────────────┤ │ 触发条件/动作 │ 审批策略 │ │ 意图=密码重置 │ 写操作: ☑需审批 │ │ → 动作=推送指引│ 高危: ☑员工二次确认 │ │ [保存] [版本] │ [保存] │ └──────────────┴───────────────────────┘ ``` ### 22.5 待确认问题与确认结论 > 以下原 PRD 待确认项均已由产品负责人与业务方确认(2026-07-06),结论如下,相应需求条目已在 §22.3 同步标注。 | 编号 | 原问题 | 确认结论 | 状态 | | --- | --- | --- | --- | | Q1 | 优先覆盖场景 | 首期聚焦 **①④②③** 四类:①密码重置指引 ②软件自助安装 ③病毒自动处置(火绒)④终端定位(联软映射);网络故障自助、权限申请后置 | ✅ 已确认 | | Q2 | 执行模式与安全设计 | **分级执行**:只读/低风险动作自动执行;写操作/高危动作默认需审批或员工 H5 二次确认;审计留痕、可回滚(P1-01) | ✅ 已确认 | | Q3 | AI 兜底与人工接管阈值 | **可配置默认值**:意图置信度 < 0.6、处置超时 60s、命中高危必转、员工主动转人工、连续未解决 ≥ 2 次 | ✅ 已确认 | | Q4 | 自动关单与满意度触发 | **静默 10 分钟**自动关单(员工无异议);关单后自动推送满意度评价 | ✅ 已确认 | | Q5 | 是否需要可视化编排引擎 | 本期用**管理后台简易配置**(P0-08 开关+条件+动作);可视化编排引擎列 P2(P2-01)后续迭代 | ✅ 已确认 | | Q6 | aTrust 密钥与 VPN 自动化排期 | aTrust 密钥未到,则 **VPN 自动化(P2-04)后置**,不影响首期交付 | ✅ 已确认 | | Q7 | 量化目标值拍板 | G1 闭环率首季30%/稳态50%、G2 人工介入下降40% 等**暂定作验收口径**,后续按实际数据校准 | ✅ 已确认 | --- ## 附录 A: 术语表 | 术语 | 说明 | |------|------| | 企微 | 企业微信 | | 员工服务 | 企微内置的客服模块,本方案将放弃使用 | | 自建应用 | 企微中由企业自行开发的应用 | | 互联企业 | 企微跨主体企业互联功能 | | RAGFlow | 检索增强生成引擎,用于知识库语义检索 | | Dify | AI应用开发平台 | | 千问 | 阿里云通义千问大模型 | | 摇人 | 一键呼叫IT坐席的趣味化交互设计 | | 并行协作 | AI和人工同时在线,人工可随时介入的创新服务模式 | ## 附录 B: 企微API关键接口 | 接口 | 用途 | 文档 | |------|------|------| | 接收消息 | 通过回调URL接收员工发送的消息 | 企微自建应用消息回调 | | 发送消息 | 主动向员工发送消息 | 企微应用消息发送API | | 通讯录读取 | 获取员工信息(VIP判断) | 企微通讯录API | | 互联企业应用共享 | 跨主体共享应用 | 企微互联企业API | | OAuth2静默授权 | H5页面身份认证 | 企微网页授权API | ## 附录 C: TeliChat 技术分析 — 产品设计借鉴 > **分析日期**: 2026-07-03 | **来源**: TeliChat 官网 (telichat.io) | **目的**: 借鉴 TeliChat 架构理念,优化复杂对话场景设计 ### C.1 核心理念 TeliChat 提出 **"让代码负责业务逻辑,让模型负责语言理解"** 的分工模式: | 问题 | 传统 ReAct Agent | TeliChat 方案 | |------|-----------------|---------------| | 幻觉 | 模型自由推理导致越权 | 代码硬编码业务流程,100% 确定 | | 延迟 | 每步都调用大模型推理 | 仅意图识别用模型,执行由 Python 完成 | | 状态 | 长对话上下文丢失 | 独立结构化状态空间,持久化存储 | ### C.2 三大核心组件 | 组件 | 职责 | 在 IT 服务台中的对应 | |------|------|---------------------| | **对话树** | 基于 DAG 表达交互逻辑和状态流转 | Neo4j 知识图谱(可复用) | | **大语言模型** | 意图识别,信息抽取,自然语言生成 | Dify / 千问 | | **Python 代码** | 业务逻辑、权限校验、API 调用 | FastAPI 后端服务 | ### C.3 信息项状态管理 借鉴 TeliChat 的信息项概念,设计结构化的用户信息状态: | 修饰 | 交互策略 | 在 IT 服务台的应用 | |------|---------|-------------------| | `固定` | 不再询问,通过系统获取 | 操作系统版本、用户名 | | `增量` | 允许补充,不覆盖旧值 | 故障描述、错误信息 | | `明确` | 必须明确回答 | 紧急程度确认 | | `隐含` | 可从上下文推断 | AI 推断的问题类型 | | `复述` | 要求用户确认 | 关键操作确认 | | `必需` | 缺失则强制补全 | 必填的故障信息 | ### C.4 三重约束抑制幻觉 1. **拓扑结构限制** — 限制对话可以走到哪里 2. **信息状态约束** — 决定当前已经知道什么 3. **Python 代码约束** — 负责真正的业务判断 ### C.5 与 Dify 工作流的对比 | 维度 | Dify 工作流 | TeliChat 风格 | 适用场景 | |------|------------|--------------|---------| | 流程表达 | 线性节点图 | DAG 对话树 | Dify 适合固定流程,TeliChat 适合多分支 | | 状态管理 | 单一节点状态 | 组合信息项 | TeliChat 更适合复杂长对话 | | 用户灵活性 | 路径固定 | 允许乱序输入 | TeliChat 更适合自然对话 | ### C.6 落地建议 **短期(1-2周)**: - 信息项模型设计:在 Conversation 模型中增加 `information_items` JSON 字段 - 全局意图识别:在 Dify 中新增意图识别 Agent **中期(1个月)**: - 开发独立的对话状态管理服务 - Neo4j 融合:将知识图谱作为对话树的入口路由 **长期(季度目标)**: - 白盒调试能力:实现对话轨迹全链路追踪 - 性能优化:简单场景跳过 Dify,直接 Python 处理