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

45 KiB
Raw Permalink Blame History

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

文档版本: v1.5 创建日期: 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.1.1 日志体系(2026-07-09 增补)

管理后台 5 类「日志」机制统一归口,详细定义、接口、字段、权限见 docs/04-功能设计/系统日志与审计日志-产品与设计.md

编号 日志 表 / 存储 接口路径 权限 状态
A 配置变更历史 config_change_logs GET /api/admin/system-logs(写:PUT /api/admin/configs/{key} admin 已实现(无筛选)
B 安全审计日志 audit_logs GET /admin/audit-logs audit_log:read:alladmin / auditor 已实现(事件待补)
C 自动化动作日志 auto_action_logs (落表,暂未暴露列表接口) 已实现
D 运行期结构化日志 stdout → Docker 文件 待开发:GET /api/admin/runtime-logs(筛选 + 下载) admin 查看页未落地
E 会话 / 消息记录 conversations / messages 会话管理相关接口 agent / admin 已实现(业务主数据)

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

9.3 WebSocket 实时通讯技术方案

新增日期: 2026-07-05 | 状态: 已实现

9.3.1 技术选型

方案 优点 缺点 结论
WebSocket 双向实时、低延迟 需心跳维护 推荐
SSE 简单单向 仅服务器→客户端 不适合
轮询 实现简单 延迟高、资源浪费 不推荐

9.3.2 消息类型

消息类型 方向 说明
message_new Server→Client 新消息推送
message_recall Server→Client 消息撤回
typing Bidirectional 对方正在输入
presence Bidirectional 在线状态
ping/pong Bidirectional 心跳保活

9.3.3 心跳机制

  • 客户端每 30 秒发送一次 ping
  • 服务端 60 秒内未收到 ping 断开连接

9.3.4 断线重连

  • 前端 WebSocket 断开后自动重连
  • 最大重连次数: 5
  • 重连间隔: 2s, 4s, 8s, 16s, 32s

9.3.5 降级策略

WebSocket 连接失败或断开时,自动降级为轮询(每3-5秒)。


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 可访问

10.3 OTP 双因素认证技术方案

新增日期: 2026-07-05 | 状态: 规划中

10.3.1 技术选型

方案 优点 缺点 结论
TOTP (Google Authenticator) 开源成熟无需服务器 需手动绑定 推荐
短信OTP 用户无需安装App 有成本,有延迟 不推荐
邮箱OTP 无需安装App 有延迟,不实时 不推荐

10.3.2 认证流程

用户输入账号密码
    ↓
验证账号密码成功
    ↓
返回要求OTP验证
    ↓
用户输入OTP验证码
    ↓
验证OTP → 返回结果

10.3.3 绑定流程

用户首次登录 → 系统检测未绑定OTP → 显示绑定页面 → 用户扫描二维码 → 输入验证码确认 → 绑定成功

10.3.4 API 设计

方法 路径 说明
POST /api/auth/otp-bind 绑定OTP
POST /api/auth/otp-verify 验证OTP
POST /api/auth/otp-unbind 解绑OTP(管理员)
GET /api/auth/otp-status 查询OTP绑定状态

10.3.5 数据库设计

-- 扩展 agents 表新增字段
ALTER TABLE agents ADD COLUMN otp_secret VARCHAR(32) DEFAULT NULL;
ALTER TABLE agents ADD COLUMN otp_bound BOOLEAN DEFAULT FALSE;
ALTER TABLE agents ADD COLUMN otp_bound_at TIMESTAMP DEFAULT NULL;

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

15. 阶段5 自动化闭环

新增日期: 2026-07-05 | 架构师: 高见远 (Gao) | 状态: 设计完成(待实现) 范围: 在阶段1-4 基础上新增自动化闭环能力——意图识别与场景路由、员工↔终端映射、知识库自助应答、自动化处置执行(双模式)、审批与审计、转人工兜底、自动关单、管理后台配置、实时进度推送、指标看板。 技术栈: FastAPI + SQLAlchemy + PostgreSQL + Redis / Vue3Element Plus / Vant4 / Element+Tailwind)三端。

15.1 实现方案与框架选型

15.1.1 核心难点

难点 说明 对策
多外部系统集成 火绒(HMAC-SHA1)/联软(三层认证)/Dify/RAGFlow/北森eHR 认证与协议各异 抽象 BaseClient 统一超时/重试/审计;ActionRegistry 按动作类型注册适配器
风险分级执行 只读/低风险自动执行,写/高危需审批或员工二次确认 执行引擎 Executor 双模式(plan-only / real-exec),risk_level 驱动分支
员工↔终端映射 多源、需优先级与兜底 MappingResolver:联软(主) > aTrust(VPN辅,后置) > eHR(静态),结果缓存 MappingCache
实时进度 H5/坐席需秒级看到处置进展 复用阶段2 WebSocket,新增 automation.* 事件族,由 ProgressPublisher 统一发布
自动关单 成功+员工已解决 或 静默10min 无异议 Redis TTL + 后台任务触发,复用阶段2满意度

15.1.2 选型(沿用现有栈,仅新增必要依赖)

  • 后端FastAPI 路由 + Pydantic Schema + SQLAlchemy 模型 + Alembic 迁移;异步 HTTP 用 httpx(若未引入);重试用 tenacity
  • 外部客户端:自研 app/core/clients/*,统一封装 HMAC 签名与三层认证,不引入重型 SDK
  • 前端三端:沿用 Vue3 组合式 API + Pinia + 现有 axios/WebSocket 封装,不新增 npm 包
  • 可视化编排引擎:本期用管理后台结构化简易配置(场景开关+触发条件+动作+审批策略),编排引擎列 P2。
  • aTrust VPN 自动化:密钥未到,列 P2-04 后置,不影响首期。

15.1.3 架构分层

[三端前端] ──HTTP/WS──> [FastAPI /itportal/automation]
                              │
              ┌───────────────┼───────────────────────┐
        [api/automation]  [services/automation]   [core/clients]
         (路由+WS端点)   (会话/意图/映射/执行/   (火绒/联软/Dify/
                             审批/进度/回滚/异常)   RAGFlow/eHR)
                              │
                   [models/automation] ──SQLAlchemy──> PostgreSQL
                   [Redis] 会话态/映射缓存/静默TTL

15.2 文件列表及相对路径(标注 新增/修改 + 职责)

15.2.1 后端 backend/

路径 状态 职责
app/core/config.py 修改 新增自动化配置键(Dify/RAGFlow/火绒/联软/eHR 基址、密钥占位、阈值默认)
app/core/constants.py 修改 新增 WS 事件名 AUTOMATION_*、错误码段 AUT-*
app/core/clients/__init__.py 新增 客户端包导出
app/core/clients/base.py 新增 带超时/重试/审计的异步 BaseClient
app/core/clients/huorong.py 新增 火绒 HMAC-SHA1_leak / _virus_events / 病毒隔离(写)
app/core/clients/lianruan.py 新增 联软 LV7000 三层认证,strusername 员工↔终端映射(读)
app/core/clients/dify.py 新增 Dify 意图识别 / AI 编排
app/core/clients/ragflow.py 新增 RAGFlow 知识库检索(:9380)
app/core/clients/ehr.py 新增 北森 eHR 静态映射兜底
app/models/automation.py 新增 AutoSession / AutoAction / ApprovalTicket / ScenarioConfig / ActionLog / RuleVersion / MappingCache
migrations/versions/xxxx_automation.py 新增 Alembic 迁移建表
app/schemas/automation.py 新增 请求/响应 Pydantic Schema
app/dependencies/automation.py 新增 场景配置加载、WS 连接鉴权、审批权限(OTP仅admin配置)
app/services/automation/__init__.py 新增 服务包导出
app/services/automation/session_manager.py 新增 会话生命周期(创建/状态机/关单判定)
app/services/automation/intent_router.py 新增 意图识别 + 场景路由(Dify+RAGFlow
app/services/automation/mapping_resolver.py 新增 员工↔终端映射解析(联软>eHR)
app/services/automation/executor.py 新增 处置执行引擎(双模式、风险分级、动作编排)
app/services/automation/action_registry.py 新增 动作适配器注册(火绒/联软;aTrust 占位)
app/services/automation/approval.py 新增 审批单创建/流转/审计
app/services/automation/progress_publisher.py 新增 WS 进度统一发布
app/services/automation/rollback.py 新增(P1) 处置失败回滚/补偿
app/services/automation/exception_handler.py 新增(P1) 异常自动转人工 + 通知
app/api/automation.py 新增 REST 路由 + WS 端点
app/main.py 修改 注册 automation router 与 WS 路由

15.2.2 前端 H5(员工端)frontend-h5/src/

路径 状态 职责
api/automation.js 新增 自动化会话/确认/已解决接口
views/AutomationProgress.vue 新增 自动化进度页(WS 实时进展)
components/ActionConfirmDialog.vue 新增(P1) 员工侧高危动作二次确认
components/ResolveFeedback.vue 新增 「已解决」反馈 / 静默关单提示
store/automation.js 新增 Pinia 自动化状态

15.2.3 前端 坐席端 frontend-agent/src/

路径 状态 职责
api/automation.js 新增 会话/审批/接管接口
views/automation/SessionWorkbench.vue 新增 自动化会话工作台
components/automation/ActionApprovalCard.vue 新增 坐席审批卡片
components/automation/TakeoverPanel.vue 新增 转人工/接管面板
store/automation.js 新增 Pinia 状态

15.2.4 前端 管理后台 frontend-admin/src/

路径 状态 职责
api/automation.js 新增 配置/版本/指标接口
views/automation/ScenarioConfig.vue 新增 场景开关+触发条件+动作+审批策略
views/automation/RuleVersion.vue 新增(P1) 规则版本管理/灰度
views/dashboard/AutoMetrics.vue 新增 指标看板(扩展阶段4
store/automation.js 新增 Pinia 状态

15.3 数据结构和接口(Mermaid 类图)

classDiagram
    class ScenarioConfig {
        +int id
        +str name
        +bool enabled
        +dict trigger_conditions
        +dict actions
        +dict approval_policy
        +int version
        +int gray_pct
        +datetime created_at
        +datetime updated_at
        +int created_by
    }
    class AutoSession {
        +int id
        +int ticket_id
        +str employee_id
        +str intent
        +float intent_confidence
        +int scenario_config_id
        +str status
        +str mode
        +str current_step
        +bool takeover_flag
        +bool auto_close_flag
        +datetime created_at
        +datetime updated_at
    }
    class AutoAction {
        +int id
        +int session_id
        +str type
        +str target
        +dict params
        +str mode
        +str risk_level
        +str status
        +bool is_approved
        +dict result
        +str error_msg
        +bool rolled_back
        +datetime executed_at
    }
    class ApprovalTicket {
        +int id
        +int action_id
        +int session_id
        +int approver_id
        +str employee_id
        +str type
        +str status
        +datetime requested_at
        +datetime resolved_at
        +str resolution
    }
    class ActionLog {
        +int id
        +int session_id
        +int action_id
        +str actor
        +str event
        +dict detail
        +datetime created_at
    }
    class RuleVersion {
        +int id
        +int scenario_config_id
        +int version
        +dict snapshot
        +int gray_pct
        +str status
        +datetime created_at
    }
    class MappingCache {
        +int id
        +str employee_id
        +str terminal_id
        +str source
        +float confidence
        +datetime updated_at
    }
    ScenarioConfig "1" --> "0..*" RuleVersion : has versions
    ScenarioConfig "1" --> "0..*" AutoSession : routes
    AutoSession "1" --> "0..*" AutoAction : produces
    AutoSession "1" --> "0..*" ActionLog : logs
    AutoAction "1" --> "0..1" ApprovalTicket : requires
    MappingCache "1" --> "0..*" AutoSession : used by

15.3.1 核心 API 端点(前缀 /itportal/automation

方法 路径 说明 角色
POST /sessions/start 员工提交意图,创建自动化会话 employee
GET /sessions/{id} 会话状态/进度快照 employee/agent
POST /sessions/{id}/takeover 转人工/接管(命中阈值或主动) agent
GET /actions/{id} 动作状态 employee/agent
POST /actions/{id}/approve 坐席审批(写/高危) agent
POST /actions/{id}/confirm 员工二次确认(P1 高危) employee
POST /sessions/{id}/resolved 员工标记已解决(触发关单) employee
GET /configs 场景配置列表 admin(OTP)
POST /configs 新建场景配置 admin(OTP)
PUT /configs/{id} 修改场景配置 admin(OTP)
POST /configs/{id}/version 版本快照/灰度发布(P1) admin(OTP)
GET /metrics 自动化指标(扩展阶段4看板) admin
WS /ws/{session_id} 实时进度推送 employee/agent

15.4 程序调用流程(Mermaid 时序图,全链路 + WS 推送)

sequenceDiagram
    participant H5 as 员工H5
    participant WS as WebSocket网关
    participant API as Automation API
    participant IR as IntentRouter(Dify+RAGFlow)
    participant MR as MappingResolver(联软/eHR)
    participant EX as Executor(执行引擎)
    participant AP as Approval(审批)
    participant PP as ProgressPublisher
    participant T2 as 阶段2工单/满意度

    H5->>API: POST /sessions/start {intent_text, employee_id}
    API->>IR: recognize(intent_text)
    IR->>IR: Dify意图识别 + RAGFlow检索
    IR-->>API: {intent, confidence, knowledge}
    API->>MR: resolve(employee_id)
    MR->>MR: 联软(主)>eHR(兜底) 映射
    MR-->>API: {terminal_id, source}
    API->>EX: plan(scenario_config, intent, mapping)
    alt 自助应答(密码重置/软件安装指引)
        EX-->>API: knowledge answer
        API->>PP: publish(progress=answered)
        PP-->>WS: automation.progress
        WS-->>H5: 展示方案
        H5->>API: POST /sessions/{id}/resolved
    else 自动处置(病毒隔离/终端定位)
        EX->>EX: 生成AutoAction + 风险分级
        alt 低风险(仅出方案/读操作)
            EX->>EX: 执行 action
            EX->>PP: publish(progress=executed)
        else 高风险(写操作/高危)
            EX->>AP: create ApprovalTicket
            AP->>PP: publish(action_required)
            alt 坐席审批
                PP-->>WS: automation.action_required
                WS-->>Agent: 通知
                Agent->>API: POST /actions/{id}/approve
            else 员工二次确认(P1)
                PP-->>WS: automation.action_required
                WS-->>H5: 弹窗
                H5->>API: POST /actions/{id}/confirm
            end
            AP->>EX: execute approved action
        end
        EX->>PP: publish(progress=result)
    end
    PP-->>WS: automation.progress / resolved
    WS-->>H5: 进度/结果
    API->>API: 关单判定(成功+已解决 或 静默10min)
    API->>T2: 复用满意度收集(阶段2)
    T2-->>H5: 满意度推送

阈值转人工(Q3):意图置信度<0.6 / 处置超时60s / 命中高危必转 / 员工主动转 / 连续「未解决」≥2次 → exception_handler / session_manager 触发 automation.takeover 事件并落入坐席队列。

15.5 有序任务列表(依赖关系 + 实现顺序,对应 P0/P1,P2 标注后置)

任务上限 5 个、每任务≥3 文件、T01 为基础设施;T03/T04/T05 平行依赖 T02,减少线性链。

T01 项目基础设施与公共能力(无依赖,P0)

  • 源文件:app/core/config.py(改)、app/core/constants.py(改)、app/core/clients/{__init__,base,huorong,lianruan,dify,ragflow,ehr}.py(新)、app/models/automation.py(新)、migrations/versions/xxxx_automation.py(新)
  • 依赖:无 | 优先级:P0
  • 交付:配置键、WS 事件/错误码常量、5 个外部客户端封装、7 张表模型与迁移

T02 自动化核心服务(依赖 T01,P0/P1)

  • 源文件:app/schemas/automation.py(新)、app/dependencies/automation.py(新)、app/services/automation/{__init__,session_manager,intent_router,mapping_resolver,executor,action_registry,approval,progress_publisher,rollback,exception_handler}.py(新)
  • 依赖:T01 | 优先级:P0rollback/exception_handler 为 P1
  • 交付:意图路由、映射解析、双模式执行引擎、审批、进度发布、回滚补偿(P1)、异常转人工(P1)

T03 后端 API + 坐席端工作台(依赖 T02,P0)

  • 源文件:app/api/automation.py(新)、app/main.py(改)、frontend-agent/src/{api/automation.js, views/automation/SessionWorkbench.vue, components/automation/ActionApprovalCard.vue, components/automation/TakeoverPanel.vue, store/automation.js}(新)
  • 依赖:T02 | 优先级:P0
  • 交付:REST+WS 端点、坐席审批/接管/工作台

T04 H5 员工端交互(依赖 T02P0/P1)

  • 源文件:frontend-h5/src/{api/automation.js, views/AutomationProgress.vue, components/ActionConfirmDialog.vue, components/ResolveFeedback.vue, store/automation.js}(新)
  • 依赖:T02 | 优先级:P0ActionConfirmDialog 二次确认为 P1
  • 交付:进度页、员工二次确认(P1)、已解决反馈、静默关单

T05 管理后台配置 + 指标看板(依赖 T02,P0/P1)

  • 源文件:frontend-admin/src/{api/automation.js, views/automation/ScenarioConfig.vue, views/automation/RuleVersion.vue, views/dashboard/AutoMetrics.vue, store/automation.js}(新)
  • 依赖:T02 | 优先级:P0RuleVersion 灰度为 P1
  • 交付:场景开关/触发条件/动作/审批策略配置、规则版本灰度(P1)、指标看板(扩展阶段4)

P2 后置任务(本期不排期,预留接口)

  • P2-01 可视化工作流编排引擎(替代结构化简易配置)
  • P2-02 自学习场景优化
  • P2-03 权限申请自动化
  • P2-04 aTrust VPN 自动化(密钥到位后;action_registry 已留占位)

15.5.1 任务依赖图

graph TD
    T01[T01 基础设施与公共能力] --> T02[T02 自动化核心服务]
    T02 --> T03[T03 后端API+坐席端]
    T02 --> T04[T04 H5员工端交互]
    T02 --> T05[T05 管理后台配置+看板]

15.6 依赖包列表(新增)

后端 pip(若尚未引入):

- httpx>=0.27.0        # 异步 HTTP 客户端(调外部系统)
- tenacity>=8.2.0      # 重试/退避(外部调用健壮性)
- pydantic>=2.0        # 已有,Schema 校验(确认版本一致)

HMAC 用标准库 hmac/hashlibRedis/PostgreSQL/SQLAlchemy 阶段1-4 已具备,无需新增。

前端 npm:三端复用现有 axios + WebSocket 封装 + vant/element-plus本期无强制新增包

15.7 共享知识(跨文件约定)

  • 统一响应{code, msg, data},成功 code=0;自动化错误码段 AUT-001~AUT-0xx(意图识别失败/映射缺失/执行超时/审批拒绝等)。
  • WS 事件名(前缀 automation.):automation.progress(进度)、automation.action_required(需审批/确认)、automation.resolved(已解决/关单)、automation.takeover(转人工)、automation.error
  • 配置键(前缀 AUTOMATION_):DIFY_BASE_URL/DIFY_KEYRAGFLOW_BASE_URLHUORONG_*(HMAC-SHA1)、LIANRUAN_*(三层认证)、EHR_*AUTOMATION_THRESHOLDS(置信度0.6/超时60s/未解决≥2)。
  • 映射源常量MAPPING_SOURCES = ["lianruan", "atrust", "ehr"],优先级顺序固定。
  • 表/路由命名:表前缀 auto_API 前缀 /itportal/automation;服务类后缀 Service/函数式模块。
  • 日志规范:结构化日志含 session_id/action_id/employee_id/event;所有外部调用出入参落 ActionLog(审计可追溯)。
  • 风险分级risk_level ∈ {read, low, high}read/low 默认可自动执行,high 必走审批或员工二次确认。
  • OTP 适用范围:仅 admin 配置类接口(新建/修改/版本)需 OTP 双因素;坐席审批与普通会话不需 OTP。
  • 静默关单AutoSession 成功后写 Redis TTL=600s,到期无 resolved 异议则自动关单;员工主动 resolved 立即关单。

15.8 待明确事项(仅技术层面,业务决策已确认)

  1. Dify 返回结构:意图字段名与置信度字段名需联调确认(影响 IntentRouter 解析)。
  2. RAGFlow 检索策略:结果分页/截断/Top-K 与引用来源展示方式。
  3. 火绒写操作细节:HMAC-SHA1 构造、沙箱环境、病毒隔离接口字段与回执。
  4. 联软 LV7000:三层认证具体字段、超时与并发限制。
  5. AutoSession 与阶段2 工单(Ticket)关系:建议弱关联session 可独立存在,ticket_id 可空;关单时复用阶段2满意度),需确认是否强制绑定。
  6. 静默10分钟关单机制Redis TTL + 后台任务 vs 轮询,确认后台任务调度方式(APScheduler / FastAPI BackgroundTasks / Redis 键空间通知)。
  7. 规则灰度(P1):按比例灰度还是白名单灰度,发布回滚流程。
  8. 审批并发:同一 AutoAction 坐席审批与员工二次确认是否互斥、超时未处理如何降级转人工。

15.9 建议文件变更清单(落盘指引)

文档(合并进已有文件,不新建独立文档)

路径 状态 落盘建议 已有文件
docs/03-技术架构/00-系统架构设计文档-v1.3.md 修改 文末新增「阶段5 自动化闭环」章节(即本章)

后端

路径 状态 落盘建议 已有文件
app/core/config.py 修改 追加自动化配置键
app/core/constants.py 修改 追加 WS 事件/错误码常量
app/core/clients/{__init__,base,huorong,lianruan,dify,ragflow,ehr}.py 新增 整组新建
app/models/automation.py 新增 整文件新建
migrations/versions/xxxx_automation.py 新增 Alembic 生成并落地
app/schemas/automation.py 新增 整文件新建
app/dependencies/automation.py 新增 整文件新建
app/services/automation/*.py10个) 新增 整组新建
app/api/automation.py 新增 整文件新建
app/main.py 修改 注册 router/WS

前端 H5

路径 状态 落盘建议 已有文件
frontend-h5/src/api/automation.js 新增 新建
frontend-h5/src/views/AutomationProgress.vue 新增 新建
frontend-h5/src/components/ActionConfirmDialog.vue 新增 新建
frontend-h5/src/components/ResolveFeedback.vue 新增 新建
frontend-h5/src/store/automation.js 新增 新建

前端 坐席端

路径 状态 落盘建议 已有文件
frontend-agent/src/api/automation.js 新增 新建
frontend-agent/src/views/automation/SessionWorkbench.vue 新增 新建
frontend-agent/src/components/automation/ActionApprovalCard.vue 新增 新建
frontend-agent/src/components/automation/TakeoverPanel.vue 新增 新建
frontend-agent/src/store/automation.js 新增 新建

前端 管理后台

路径 状态 落盘建议 已有文件
frontend-admin/src/api/automation.js 新增 新建
frontend-admin/src/views/automation/ScenarioConfig.vue 新增 新建
frontend-admin/src/views/automation/RuleVersion.vue 新增 新建
frontend-admin/src/views/dashboard/AutoMetrics.vue 新增 新建(扩展阶段4看板)
frontend-admin/src/store/automation.js 新增 新建

汇总:文档 1 处合并修改(本章);代码新增约 35 个文件(后端 21 + 三前端 14),修改 4 个已有文件(config/constants/main + 设计文档)。代码文件按此清单在后续实现阶段落地。


附录

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 智能服务台系统架构设计主文档