Files
wecom_it_smart_desk/docs/03-技术架构/00-系统架构设计文档-v1.3.md
T

20 KiB
Raw Blame History

IT智能服务台 — 系统架构设计文档

文档版本: v1.4 创建日期: 2025-07-11 最近更新: 2026-07-04 架构师: 高见远 (Bob) 状态: 正式版


目录

  1. 技术文档索引
  2. 系统概述
  3. 整体架构
  4. 技术选型
  5. 部署架构
  6. 统一入口设计
  7. 模块架构
  8. AI Wingman 设计
  9. 外部系统集成
  10. 安全设计
  11. 复杂对话场景设计
  12. 知识图谱数据模型设计
  13. 数据库设计
  14. API设计规范

1. 技术文档索引

本文档为技术架构主文档,相关详细设计文档如下:

文档 说明 状态
本文档 系统架构总览 v1.3 正式
01-ADRs-架构决策/ 4项架构决策 已完成
02-技术方案/ 具体功能技术方案
├── 技术方案-消息功能详细设计.md 消息功能详细设计 已实现
├── 技术方案-摇人协作.md 多坐席协作方案 已实现
├── 技术方案-邀请功能.md 邀请功能方案 已实现
├── 技术方案-复杂场景重构.md 复杂对话场景技术方案 设计完成
└── 技术方案-ExternalSystemAdapter抽象层.md 外部系统适配层设计 设计完成
03-技术分析/ 技术研究分析
├── 技术分析-H5右侧栏动态推送评估.md H5右侧栏动态推送评估 已完成
└── 技术分析-架构消息知识库迭代.md 架构消息知识库迭代 已完成
04-数据库设计/ 数据库设计
└── 数据库设计-ER图与环境变量清点.md 数据库ER图与环境变量 已完成
05-架构图/ Mermaid图表
└── 架构图集 各类时序图/类图 已完成
D-T19-知识图谱数据模型设计.md 知识图谱数据模型设计 设计完成

2. 系统概述

2.1 项目背景

IT智能服务台是为企业提供 IT support 的智能化服务平台,核心目标:

  • 员工侧:通过 H5 页面提交 IT 问题、AI 自助解答、人工坐席服务
  • 坐席侧:通过自研工作台处理会话、AI 辅助( Wingman )、知识推荐
  • 管理侧:通过管理后台配置系统、管理坐席、查看数据

2.2 核心能力

能力 说明
消息路由 AI 与人工无缝切换
实时会话 坐席工作台实时消息
AI 辅助 Wingman 草稿/摘要/知识推荐
外部集成 联软/火绒/aTrust/eHR 终端数据
角色管理 统一入口 + RBAC 权限
知识图谱 Neo4j 图数据库支撑智能对话

3. 整体架构

3.1 系统架构图

┌─────────────────────────────────────────────────────────────────────┐
│                         Linux 服务器 Docker                           │
│                                                                     │
│  ┌──────────┐  ┌──────────────┐  ┌──────────────┐  ┌────────────┐ │
│  │  Nginx   │  │  Frontend    │  │  Frontend    │  │  Frontend │ │
│  │ (反代)    │──│  Agent       │  │  H5 User     │  │  Portal   │ │
│  │  :80/:443│  │  (Vue3+EP)   │  │  (Vue3+Vant4)│  │  (Vue3)   │ │
│  └────┬─────┘  └──────────────┘  └──────────────┘  └────────────┘ │
│       │          :5173            :5174            :5176           │
│       ▼                                                                 │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────────┐     │
│  │ FastAPI  │  │  Redis   │  │PostgreSQL│  │   Neo4j     │     │
│  │ Backend  │──│ (缓存/Session)│──│ (持久化)  │──│ (知识图谱)  │     │
│  │  :8000   │  │  :6379   │  │  :5432   │  │  :7687     │     │
│  └────┬─────┘  └──────────┘  └──────────┘  └──────┬───────┘     │
│       │                                                │             │
│       │                                                ▼             │
│       │                                        ┌──────────────┐     │
│       └──────────────────────────────────────▶│   Dify AI    │     │
│                                                 │ (外部依赖)   │     │
│                                                 └──────────────┘     │
└───────────────────────────────────────────────────────────────────────┘
        │  HTTPS
        ▼
┌───────────────┐
│  企微服务器    │
│  (消息回调API) │
└───────────────┘

3.2 前端架构

路径 技术栈 端口
Portal /itportal/ Vue3 + Element Plus 5176
坐席端 /itagent/ Vue3 + Element Plus 5173
H5用户端 /itdesk/ Vue3 + Vant 4 5174
管理后台 /itadmin/ Vue3 + Element Plus + Tailwind 5175

4. 技术选型

4.1 核心技术栈

层级 技术 版本 说明
前端框架 Vue 3 ^3.4.0 Composition API
前端路由 Vue Router ^4.3.0 SPA 路由
状态管理 Pinia ^2.1.0 轻量级状态管理
UI 组件 Element Plus ^2.7.0 坐席端/Portal
UI 组件 Vant 4 ^4.0 H5 移动端
样式 Tailwind CSS ^3.4.0 管理后台
构建工具 Vite ^5.3.0 快速构建
后端框架 FastAPI 0.110+ 异步高性能
ORM SQLAlchemy 2.0+ async ORM
数据库 PostgreSQL 16 主数据存储
图数据库 Neo4j Community 5.x 知识图谱存储
缓存 Redis 7 Session/Token/缓存
AI 引擎 Dify 外部依赖

5. 部署架构

5.1 部署拓扑

                          ┌────────────────────────────┐
                          │      企微服务器(外部)      │
                          │  qyapi.weixin.qq.com       │
                          └──────────┬─────────────────┘
                                     │ HTTPS :443
                                     ▼
┌──────────────── 办公网络 ────────────────────────────────┐
│                                                          │
│  ┌──────────┐         ┌──────────────────────────┐      │
│  │ 坐席浏览器 │────────▶│ https://itsupport.      │      │
│  │ (内网)    │   HTTPS  │ servyou.com.cn          │      │
│  └──────────┘         └──────────┬───────────────┘      │
│                                  │                       │
├────────────────── OA 服务器网络 ──┼───────────────────────┤
│                                  │                       │
│                          ┌───────▼──────────────┐       │
│                          │   服务器 (Docker)      │       │
│                          │  ┌────────────────┐  │       │
│                          │  │  Nginx :80/443 │  │       │
│                          │  └───────┬────────┘  │       │
│                          │          │            │       │
│                          │  ┌───────▼────────┐  │       │
│                          │  │  FastAPI :8000 │  │       │
│                          │  └───────┬────────┘  │       │
│                          │          │            │       │
│                          │  ┌───────▼────────┐  │       │
│                          │  │ PostgreSQL    │  │       │
│                          │  └───────┬────────┘  │       │
│                          │          │            │       │
│                          │  ┌───────▼────────┐  │       │
│                          │  │ Redis         │  │       │
│                          │  └───────┬────────┘  │       │
│                          └──────────┴───────────┘       │
│                                   │                      │
│                          ┌────────▼──────────────┐     │
│                          │  现有 AI 服务(外部依赖)│     │
│                          └───────────────────────┘     │
└──────────────────────────────────────────────────────────┘

6. 统一入口设计

6.1 概述

统一入口(Portal)是系统的认证入口,按角色分发到对应端。

核心功能

  • 企微 OAuth2 静默授权(用户端)
  • 账号密码+OTP 认证(坐席/管理端)
  • 角色检测与路由选择
  • 统一 Token 管理

6.2 登录方式(v1.5 变更)

更新日期: 2026-07-04 | 核心变更: 坐席/管理端浏览器直接打开,无需经过企微工作台

访问方式 登录方式 说明
用户端 (H5) 企微工作台 → 应用内嵌打开 OAuth2 静默授权 强制内嵌,保证安全、入口统一、用户粘性
坐席端 浏览器直接打开 账号密码+OTP 无需经过企微,灵活办公,支持多设备
管理后台 浏览器直接打开 账号密码+OTP 无需经过企微,安全可控

6.3 登录流程

用户端 (H5)                           坐席端 / 管理后台
    │                                    │
    ▼                                    ▼
企微工作台打开                    浏览器直接访问
    │                                    │
    ▼                                    ▼
OAuth2 静默授权                   账号密码+OTP验证
(用户无感知)                          │
    │                                    ▼
    ▼                               登录成功
跳转 /itdesk/                    跳转 /itagent/ 或 /itadmin/

6.4 角色路由逻辑

OAuth2 授权完成(用户端) / 登录成功(坐席/管理端)
    │
    ▼
查询角色列表: GET /api/portal/roles
    │
    ├── 仅 user 角色 → 直接跳转 /itdesk/
    ├── user + agent → 显示选择页(2张卡片)
    ├── user + admin → 显示选择页(2张卡片)
    └── user + agent + admin → 显示选择页(3张卡片)

6.5 URL 路径规划

路径 说明
统一入口 /itportal/ 路由选择页
用户端 /itdesk/ 员工提交工单
坐席端 /itagent/ IT坐席处理会话
管理端 /itadmin/ 系统配置
API /api/ 后端接口

6.6 企微环境检测

组件 说明
用户端检测 navigator.userAgent.includes('wxwork'),非企微跳转拦截页
坐席/管理端 无需检测,浏览器直接访问

6.7 OTP 双因素认证

组件 说明
OTP 绑定 首次登录引导绑定,支持 TOTPGoogle Authenticator/微信扫码)
OTP API /api/agents/otp-bind/api/agents/otp-verify
验证场景 坐席/管理员登录时需 OTP 验证
绑定入口 坐席端 TopBar 下拉菜单"OTP二次验证"选项

6.8 测试账号

角色 用户名 初始密码 OTP 说明
坐席 sxn admin123 需绑定 IT 支持组组长
管理 sxn admin123 需绑定 同上,具有 admin 权限

注意:生产环境需修改默认密码;坐席/管理员需先绑定OTP才能登录


7. 模块架构

7.1 管理后台模块

技术栈Vue 3 + TypeScript + Element Plus + Tailwind CSS + Pinia

核心功能

  • 运营仪表盘
  • 功能开关配置
  • 坐席管理(角色/技能标签)
  • 外部系统集成配置
  • 快速回复审核
  • 会话监控
  • 知识图谱管理

7.2 坐席工作台模块

技术栈Vue 3 + TypeScript + Element Plus + Pinia

核心功能

  • 会话列表(排队/进行中/已解决)
  • 实时聊天
  • 快速回复
  • AI Wingman 右侧栏
  • 消息标记(VIP/招手/情绪)

7.3 H5 用户端模块

技术栈Vue 3 + Vant 4 + TypeScript

核心功能

  • 消息发送/接收
  • 排查步骤引导
  • 会话状态查看
  • 满意度评价

8. AI Wingman 设计

详见 02-技术方案/技术方案-Wingman设计.md

8.1 什么是 Wingman

Wingman 是坐席工作台的 AI 辅助系统:

  • 草稿回复:坐席打字 → AI 实时生成 3 条草稿
  • 自动摘要:会话结束 → AI 200 字摘要
  • 知识推荐:对话中识别关键字 → 推 FAQ
  • 排查步骤:员工描述问题 → AI 给 step-by-step

9. 外部系统集成

9.1 系统角色与优先级

系统 角色 核心能力 认证方式
联软LV7000 主映射源(P0) 终端查询、硬件详情、在线状态 IP白名单+账号密码
火绒企业版 安全源(P0) 终端列表、漏洞/病毒事件 HMAC-SHA1 AccessKey
aTrust VPN源(P1) 在线用户+VPN IP、终端查询 HMAC-SHA256签名
北森eHR 辅助静态数据(P2) 员工基础信息、任职信息 OAuth2.0
企微审批 待办同步(P1) 审批工单同步到坐席待办 企微审批应用API

9.2 企微审批工单同步

新增日期: 2026-07-04

项目 说明
功能 将企微审批工单同步到坐席待办事项面板
企微API GET /cgi-bin/oa/approvallist
同步频率 每5分钟定时拉取,或 Webhook 实时推送
数据映射 审批标题 → TodoItem.title / 审批状态 → TodoItem.status
依赖 需企微管理后台创建审批应用并授权 API

10. 安全设计

10.1 认证安全

安全措施 说明
OAuth2 静默授权 scope=snsapi_base,用户无感知(用户端)
账号密码+OTP 坐席/管理端认证方式
state 参数防 CSRF 随机 state,回调时验证
Token 密码学安全 secrets.token_urlsafe(32)
Token TTL 8小时 Redis 自动过期
redirect_uri 白名单 生产环境仅允许正式域名
企微 UA 检测 用户端非企微环境跳转拦截页
OTP 双因素认证 坐席/管理员登录需 OTP 验证码

10.2 角色安全

安全措施 说明
角色最小权限 默认仅 user 角色
角色来源追溯 user_roles 表记录 source 和 assigned_by
管理端 IP 白名单 仅内网/VPN 可访问

11. 复杂对话场景设计

11.1 设计理念:TeliChat 三重约束

约束 作用 实现方式
拓扑结构限制 限制对话可以走到哪里 Neo4j DAG 边定义
信息状态约束 决定当前已经知道什么 信息项组合状态
Python 代码约束 负责真正的业务判断 FastAPI 业务逻辑

11.2 全局意图类型

意图 用户表达示例 处理策略
SKIP "这个问题先不管了" 跳过当前节点
INSERT "对了,我的打印机也有问题" 插入新任务到队列
RESUME "还是说回刚才那个网络问题" 恢复之前话题
ESCALATE "叫个人工来" 转接坐席

12. 知识图谱数据模型设计

详见 ../02-产品需求/小组任务书/D-T19-知识图谱数据模型设计.md

12.1 实体类型

实体类型 说明 示例
Domain 业务域 网络域、安全域、设备域
Issue 问题 VPN连不上、打印机故障
Solution 解决方案 密码重置、重启服务
FAQ 常见问题 如何连接VPN

12.2 关系类型

关系类型 方向 含义 核心属性
BELONGS_TO Issue→Domain 属于 weight
RECOMMENDS Issue→Solution 推荐 priority, confidence
CAN_RESOLVE Solution→Issue 解决 success_rate

13. 数据库设计

13.1 核心表结构

表名 说明
agents 坐席信息
conversations 会话表
messages 消息表
quick_reply_templates 快速回复模板
system_configs 系统配置
roles 角色表
user_roles 用户角色关联

14. API设计规范

14.1 响应格式

// 成功
{"code": 0, "data": {...}, "message": "success"}

// 失败
{"code": 1001, "data": null, "message": "参数错误"}

14.2 认证方式

localStorage 键 说明
坐席端 agent_token 坐席工作台
管理后台 admin_token 管理后台
统一入口 user_token Portal

附录

A. 项目阶段规划

阶段 内容
阶段一 转人工改H5+坐席MVP+邀请+管理后台
阶段二 H5全流程+WS+排队+满意度+OAuth2
阶段三 AI Wingman+排查流程图+标注+知识图谱
阶段四 迭代闭环+数据看板+知识库
阶段五 自动/辅助审核、开单、结单

B. 部署信息

环境 域名 IP
生产 itsupport.servyou.com.cn 10.90.5.110
测试 itdesk.amanzac.com NAS

C. 技术文档更新日志

版本 日期 修改内容
v1.0 2026-07-04 整合技术架构文档
v1.1 2026-07-04 新增知识图谱章节
v1.2 2026-07-04 新增登录设计章节(用户端强制企微内嵌)
v1.3 2026-07-04 坐席/管理端无需经过企微,浏览器直接登录
v1.4 2026-07-04 新增企微审批工单同步到待办事项

文档结束 — 本文档为 IT 智能服务台系统架构设计主文档