Files
ticket-workbench/DESIGN.md
绝尘 4793b1a533 新增: AI工单处理工作台 v1.0
- Go Gin 后端 (19个源文件): 认证、工单CRUD、GLM AI分析、状态流转、备注、操作日志
- Arco Design Vue 前端: 登录、工单列表/详情/创建、AI分析触发与确认
- MySQL 5表: ticket_user/ticket_info/ticket_ai_analysis/ticket_operation_log/ticket_note
- 部署: tk.1216.top HTTPS, Nginx反代
2026-05-13 17:05:49 +08:00

278 lines
9.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AI 工单处理工作台 - 功能设计文档
> 版本: v1.0 | 日期: 2026-05-13
---
## 1. 系统概述
AI 工单处理工作台帮助客服团队高效处理用户工单。核心流程:**创建工单 → AI 辅助分析 → 人工审核确认 → 状态流转 → 闭环**。
**技术栈**
- 后端Go 1.22 + Gin + GORM + MySQL
- 前端Vue 3 + Arco Design + Vite + TypeScript + Pinia
- AI智谱 GLM-4-Flash
- 部署abc.1216.top (Nginx HTTPS 反代)
---
## 2. 用户角色
| 角色 | Code | 职责 |
|------|------|------|
| 管理员 | 10 | 全部权限,用户管理,系统配置 |
| 客服 | 20 | 创建工单查看工单触发AI分析审核确认 |
| 处理人员 | 30 | 查看分配工单,处理工单,添加备注 |
**所属团队**
| 团队 | Code | 处理工单类型 |
|------|------|-------------|
| 退款组 | refund | 退款申请 |
| 技术支持 | tech | 登录异常、账户问题 |
| 财务组 | finance | 发票问题 |
| 物流组 | logistics | 物流投诉 |
| 客服组 | service | 产品咨询、其他 |
---
## 3. 工单分类
| 分类 | Code | 典型场景 |
|------|------|---------|
| 退款申请 | refund | 用户要求退款、退货退款、部分退款 |
| 登录异常 | login | 无法登录、验证码收不到、账号被锁 |
| 发票问题 | invoice | 发票未开具、发票信息错误、补开发票 |
| 物流投诉 | logistics | 快递丢失、配送延迟、商品损坏 |
| 账户问题 | account | 账户被盗、信息修改、注销账户 |
| 产品咨询 | inquiry | 功能使用、价格咨询、合作洽谈 |
| 其他 | other | 不属于以上分类的工单 |
---
## 4. 优先级体系
| 优先级 | Code | 含义 | 颜色 | 响应要求 |
|--------|------|------|------|---------|
| P0 紧急 | 0 | 系统故障、资金安全、批量投诉 | 🔴 红色 | 15分钟内响应 |
| P1 高 | 1 | 单个大额退款、VIP客户投诉 | 🟠 橙色 | 1小时内响应 |
| P2 中 | 2 | 常规退款、发票问题、物流异常 | 🔵 蓝色 | 4小时内响应 |
| P3 低 | 3 | 产品咨询、建议反馈 | ⚪ 灰色 | 24小时内响应 |
---
## 5. 工单状态流转
```
┌──────────┐ 触发AI分析 ┌──────────┐ 人工确认 ┌──────────┐ 开始处理 ┌──────────┐ 处理完成 ┌──────────┐
│ 待处理 │───────────→│ 分析中 │─────────→│ 已确认 │─────────→│ 处理中 │─────────→│ 已关闭 │
│ (status=0)│ │ (status=1)│ │ (status=2)│ │ (status=3)│ │ (status=4)│
└──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘
│ ↑
└───────────────────── 跳过分析,直接确认 ────────────────────────────┘
```
**状态说明**
| 状态 | Code | 含义 | 可执行操作 |
|------|------|------|-----------|
| 待处理 | 0 | 新创建工单,等待分析 | 触发AI分析、直接确认、关闭 |
| 分析中 | 1 | AI正在分析 | 等待分析完成 |
| 已确认 | 2 | AI分析结果已确认/人工修改 | 分配处理人、开始处理、添加备注 |
| 处理中 | 3 | 处理人正在处理 | 添加备注、关闭 |
| 已关闭 | 4 | 工单处理完成 | 查看详情、重新打开 |
---
## 6. AI 分析功能
### 6.1 分析触发
- 工单创建后客服点击「AI 分析」按钮触发
- 后端调用 GLM-4-Flash API 进行分析
- 分析期间工单状态变为「分析中」
### 6.2 分析结果
| 字段 | 说明 | 示例 |
|------|------|------|
| category | AI建议分类 | refund |
| priority | AI建议优先级 | 1 (P1高) |
| summary | 一句话摘要 | "用户申请订单TK-20260501-003的全额退款" |
| suggest_role | 建议处理团队 | refund_team |
### 6.3 人工审核
- 客服可查看 AI 分析结果
- 可修改任意字段(分类、优先级、建议处理角色)
- 确认后结果写入工单,状态流转为「已确认」
### 6.4 GLM Prompt 设计
```
系统提示词:
你是一个专业的客服工单分析助手。请根据工单内容,返回以下分析结果:
1. category: 工单分类
2. priority: 优先级(0=P0紧急, 1=P1高, 2=P2中, 3=P3低)
3. summary: 一句话摘要,客观描述工单核心诉求
4. suggest_role: 建议处理团队
分类选项refund(退款申请)、login(登录异常)、invoice(发票问题)、logistics(物流投诉)、account(账户问题)、inquiry(产品咨询)、other(其他)
处理团队refund_team(退款组)、tech_support(技术支持)、finance_team(财务组)、logistics_team(物流组)、customer_service(客服组)
仅返回JSON格式
{"category":"...","priority":0,"summary":"...","suggest_role":"..."}
用户消息:
工单标题: {title}
工单内容: {content}
联系人: {contactname}
联系电话: {contactphone}
```
---
## 7. 功能模块
### 7.1 用户管理(简化版)
| 功能 | 说明 |
|------|------|
| 登录 | 账号 + 密码,返回 session token |
| 登出 | 清除 token |
| 获取用户信息 | 根据token获取当前用户 |
**初始账号**admin / admin123 (管理员)
### 7.2 工单管理
| 功能 | API | 说明 |
|------|-----|------|
| 创建工单 | POST /api/tickets | 填写标题、内容、联系人、来源 |
| 工单列表 | GET /api/tickets | 分页 + 筛选(状态/分类/优先级/关键词) |
| 工单详情 | GET /api/tickets/:id | 完整信息 + AI分析 + 操作日志 + 备注 |
| 更新工单 | PUT /api/tickets/:id | 修改基本信息 |
| 更新状态 | PUT /api/tickets/:id/status | 状态流转 |
| 触发AI分析 | POST /api/tickets/:id/analyze | 调用GLM返回分析结果 |
| 获取分析结果 | GET /api/tickets/:id/analysis | 获取AI分析详情 |
| 确认分析 | PUT /api/tickets/:id/analysis | 修改/确认分析结果 |
### 7.3 备注系统
| 功能 | API | 说明 |
|------|-----|------|
| 获取备注列表 | GET /api/tickets/:id/notes | 工单所有备注 |
| 添加备注 | POST /api/tickets/:id/notes | 处理人/客服添加备注 |
### 7.4 操作日志
所有关键操作自动记录,不可修改:
- 创建工单
- 触发AI分析
- 确认分析结果
- 修改分析结果
- 状态变更
- 添加备注
- 分配处理人
---
## 8. 页面设计
### 8.1 登录页 (`/login`)
- 居中卡片布局
- 标题AI 工单处理工作台
- 字段:账号、密码
- 默认填充 admin / admin123
### 8.2 主布局
- 左侧:导航菜单(工单列表、创建工单)
- 顶部:系统标题 + 用户名 + 登出按钮
### 8.3 工单列表 (`/tickets`)
- 筛选栏:状态/分类/优先级下拉 + 搜索框
- 数据表格编号、标题、分类、优先级Tag、状态Tag、联系人、创建时间、操作
- 分页组件
### 8.4 创建工单 (`/tickets/create`)
- 表单卡片:标题*、内容*、联系人、联系电话、来源
- 提交后跳转详情页
### 8.5 工单详情 (`/tickets/:id`)
- **基本信息卡片**:标题、内容、联系人、电话、来源、状态
- **AI 分析卡片**
- 未分析:大按钮「触发 AI 分析」
- 已分析:分类/优先级/摘要/建议角色(可编辑)
- 确认/修改按钮
- **操作区**:状态流转按钮、处理人分配
- **操作日志**:时间线展示
- **备注区**:备注列表 + 添加备注输入框
---
## 9. 数据模型
### 9.1 ER 关系
```
ticket_user ──1:N──→ ticket_info (submitterid)
ticket_user ──1:N──→ ticket_info (handlerid)
ticket_info ──1:N──→ ticket_ai_analysis (ticketid)
ticket_info ──1:N──→ ticket_operation_log (ticketid)
ticket_info ──1:N──→ ticket_note (ticketid)
```
### 9.2 表结构
详见 `DATA-MODEL.md`
---
## 10. 部署架构
```
用户浏览器
↓ HTTPS
abc.1216.top (39.99.243.191)
├── Nginx :443
│ ├── / → /opt/ticket-workbench/frontend (Vue SPA)
│ └── /api/ → localhost:8090 (Go Gin)
├── Go Gin :8091 (后端服务)
└── MySQL :3306 / ticket_dev (数据库)
```
**域名**: tk.1216.top → A 记录 → 39.99.243.191
**SSL**: *.1216.top 通配符证书 (Let's Encrypt)
---
## 11. 工单来源与发起方
### 工单是谁发起的?
- **当前实现**: 客服人员代为录入。客户通过电话/邮件/网页反馈问题后,客服在工作台创建工单。
- **工单来源标记**: web网页、phone电话、email邮件
### 完整生命周期
```
客户反馈(外部) → 客服录入 → AI辅助分析 → 人工审核确认 → 分配处理人 → 处理中 → 关闭
```
### 客户自助提交(计划中)
> 后续补充:添加无需登录的客户工单提交页面,客户可自助填写工单信息。
---
## 12. 测试计划
| 测试项 | 类型 | 说明 |
|--------|------|------|
| 用户登录 | 功能 | 正确/错误密码 |
| 创建工单 | 功能 | 必填校验、编号生成 |
| 工单列表 | 功能 | 分页、筛选 |
| AI 分析 | 功能 | GLM 调用、结果解析 |
| 人工确认 | 功能 | 修改字段、确认流转 |
| 状态流转 | 功能 | 顺向流转、越权校验 |
| 操作日志 | 功能 | 操作记录完整性 |
| 备注 | 功能 | 添加、展示 |