企业微信智能客服产品设计文档
# 企业微信智能客服系统 - 产品设计文档
**文档版本**:v1.0
**创建日期**:2026年1月22日
**设计人员**:[您的名字]
**客户名称**:[客户公司名称]
---
## 文档说明
本文档是《企业微信智能客服系统》的详细产品设计文档,作为开发实施的依据。包含:
- 功能需求详细说明
- 数据库设计
- 接口设计
- 界面原型
- 技术实现方案
- 开发排期
---
## 目录
1. [需求概述](#1-需求概述)
2. [功能模块设计](#2-功能模块设计)
3. [数据库设计](#3-数据库设计)
4. [接口设计](#4-接口设计)
5. [界面设计](#5-界面设计)
6. [技术实现方案](#6-技术实现方案)
7. [开发排期](#7-开发排期)
8. [验收标准](#8-验收标准)
---
## 1. 需求概述
### 1.1 项目背景
客户需要一套企业微信智能客服系统,用于:
- 自动回答员工/客户的常见问题
- 减少人工客服工作量
- 提供7×24小时服务
- 沉淀企业知识库
### 1.2 核心需求
✅ **必须实现**
- 企业微信机器人(私聊+群聊)
- 知识库管理(文档CRUD、分类、批量导入)
- RAG智能问答(语义检索+AI生成)
- 后台管理(机器人配置、对话记录、统计)
- 多机器人支持
- 定时消息推送
❌ **不需要实现**
- 前台网页展示
- 用户注册登录
- 评论互动功能
### 1.3 技术要求
- 后端:PHP 7.4+ / CodeIgniter 4
- 数据库:MySQL 5.7+
- AI服务:火山方舟 / 腾讯云混元
- 部署:Linux服务器,支持HTTPS
---
## 2. 功能模块设计
### 2.1 模块架构
```
系统架构
├── 企业微信接入层
│ ├── 消息接收(Webhook)
│ ├── 消息发送(API)
│ └── 事件处理
│
├── 业务逻辑层
│ ├── 机器人管理
│ ├── 对话处理
│ ├── 知识检索
│ ├── AI问答
│ └── 定时任务
│
├── 数据访问层
│ ├── 机器人配置
│ ├── 知识库数据
│ ├── 对话记录
│ └── 用户画像
│
└── 后台管理层
├── 机器人管理
├── 知识库管理
├── 对话记录
└── 统计分析
```
### 2.2 企业微信机器人模块
#### 2.2.1 功能列表
| 功能编号 | 功能名称 | 优先级 | 说明 |
|---------|---------|--------|------|
| WX-001 | 机器人创建 | P0 | 添加新机器人,配置企业微信参数 |
| WX-002 | 机器人编辑 | P0 | 修改机器人配置 |
| WX-003 | 机器人删除 | P0 | 删除机器人及相关数据 |
| WX-004 | 机器人启用/禁用 | P0 | 控制机器人是否工作 |
| WX-005 | 消息接收 | P0 | 接收企业微信推送的消息 |
| WX-006 | 消息发送 | P0 | 向企业微信发送回复 |
| WX-007 | 私聊支持 | P0 | 支持一对一私聊 |
| WX-008 | 群聊支持 | P0 | 支持群聊@回复 |
| WX-009 | 上下文记忆 | P1 | 记住最近N条对话 |
| WX-010 | 定时推送 | P1 | 定时发送消息 |
| WX-011 | 多机器人管理 | P0 | 支持创建多个机器人 |
| WX-012 | 回调URL生成 | P0 | 自动生成回调地址 |
#### 2.2.2 详细设计
**WX-001: 机器人创建**
输入参数:
```json
{
"name": "客服机器人",
"identifier": "customer-service",
"corp_id": "ww1234567890",
"agent_id": "1000001",
"secret": "xxxxx",
"token": "mytoken",
"encoding_aes_key": "43位字符串",
"knowledge_spaces": [1, 2, 3],
"ai_model": "ep-xxx",
"system_prompt": "你是客服助手",
"work_mode": "smart",
"confidence_threshold": 0.7,
"welcome_message": "您好",
"no_answer_message": "抱歉",
"support_group_chat": true,
"enable_user_history": true
}
```
处理流程:
1. 验证必填字段
2. 检查identifier唯一性
3. 生成回调URL
4. 保存到数据库
5. 返回机器人ID和回调URL
输出结果:
```json
{
"code": 0,
"msg": "创建成功",
"data": {
"id": 1,
"callback_url": "https://yourdomain.com/wework/callback/customer-service"
}
}
```
**WX-005: 消息接收**
接收地址:`/wework/callback/{identifier}`
企业微信推送格式(XML):
```xml
<xml>
<ToUserName><![CDATA[企业微信CorpID]]></ToUserName>
<FromUserName><![CDATA[UserID]]></FromUserName>
<CreateTime>1234567890</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[用户消息内容]]></Content>
<MsgId>1234567890</MsgId>
<AgentID>1000001</AgentID>
</xml>
```
处理流程:
1. 验证签名(msg_signature)
2. 解密消息内容
3. 解析XML获取消息信息
4. 判断消息类型(文本/图片/文件)
5. 判断聊天类型(私聊/群聊)
6. 群聊检查是否@机器人
7. 调用RAG问答模块
8. 发送回复消息
9. 记录对话日志
**WX-006: 消息发送**
企业微信API:`https://qyapi.weixin.qq.com/cgi-bin/message/send`
请求格式:
```json
{
"touser": "UserID",
"msgtype": "text",
"agentid": 1000001,
"text": {
"content": "回复内容"
}
}
```
处理流程:
1. 获取access_token
2. 构建消息体
3. 调用企业微信API
4. 处理返回结果
5. 记录发送日志
### 2.3 知识库管理模块
#### 2.3.1 功能列表
| 功能编号 | 功能名称 | 优先级 | 说明 |
|---------|---------|--------|------|
| KB-001 | 文档创建 | P0 | 创建新文档 |
| KB-002 | 文档编辑 | P0 | 修改文档内容 |
| KB-003 | 文档删除 | P0 | 删除文档 |
| KB-004 | 文档列表 | P0 | 查看文档列表 |
| KB-005 | 文档搜索 | P0 | 搜索文档 |
| KB-006 | 批量导入 | P0 | 批量导入文档 |
| KB-007 | 分类管理 | P0 | 管理文档分类 |
| KB-008 | 向量索引 | P1 | 建立向量索引 |
| KB-009 | 文档预览 | P1 | 预览文档内容 |
| KB-010 | 文档导出 | P2 | 导出文档 |
#### 2.3.2 详细设计
**KB-001: 文档创建**
输入参数:
```json
{
"title": "产品使用手册",
"category_id": 1,
"tags": ["产品", "使用"],
"content": "Markdown内容",
"status": "published"
}
```
处理流程:
1. 验证必填字段
2. 保存文档基本信息
3. 提取纯文本内容
4. 如果启用Embedding,调用向量化API
5. 保存向量索引
6. 返回文档ID
**KB-006: 批量导入**
支持格式:.txt, .md, .html
处理流程:
1. 上传文件到临时目录
2. 解析文件内容
3. 提取标题(文件名或第一行)
4. 提取正文内容
5. 批量插入数据库
6. 批量建立索引
7. 返回导入结果
### 2.4 RAG问答模块
#### 2.4.1 功能列表
| 功能编号 | 功能名称 | 优先级 | 说明 |
|---------|---------|--------|------|
| RAG-001 | 语义检索 | P0 | 检索相关文档 |
| RAG-002 | AI生成回答 | P0 | 调用AI生成答案 |
| RAG-003 | 上下文管理 | P1 | 管理对话上下文 |
| RAG-004 | 置信度评估 | P1 | 评估回答质量 |
| RAG-005 | 引用来源 | P2 | 标注答案来源 |
#### 2.4.2 详细设计
**RAG-001: 语义检索**
输入:用户问题
输出:相关文档列表(Top 5)
处理流程(启用Embedding):
1. 将问题向量化
2. 在向量数据库中检索相似文档
3. 计算相似度得分
4. 返回Top 5文档
处理流程(关键词匹配):
1. 提取问题关键词
2. 在文档标题和内容中搜索
3. 计算匹配度得分
4. 返回Top 5文档
**RAG-002: AI生成回答**
输入:
- 用户问题
- 相关文档(Top 5)
- 历史对话(最近10条)
- 系统提示词
处理流程:
1. 构建提示词
```
系统角色:{system_prompt}
参考资料:
【文档1标题】
文档1内容...
【文档2标题】
文档2内容...
历史对话:
用户:xxx
助手:xxx
当前问题:{question}
请根据参考资料回答问题,如果参考资料中没有相关信息,请如实告知。
```
2. 调用AI API
3. 解析返回结果
4. 返回答案
### 2.5 后台管理模块
#### 2.5.1 功能列表
| 功能编号 | 功能名称 | 优先级 | 说明 |
|---------|---------|--------|------|
| ADMIN-001 | 管理员登录 | P0 | 后台登录 |
| ADMIN-002 | 机器人管理 | P0 | 管理机器人 |
| ADMIN-003 | 知识库管理 | P0 | 管理知识库 |
| ADMIN-004 | 对话记录 | P0 | 查看对话记录 |
| ADMIN-005 | 统计分析 | P1 | 数据统计 |
| ADMIN-006 | 系统配置 | P0 | 系统参数配置 |
| ADMIN-007 | AI配置 | P0 | AI服务配置 |
| ADMIN-008 | 全局配置 | P1 | 企业微信全局配置 |
---
## 3. 数据库设计
### 3.1 数据库表清单
| 表名 | 说明 | 优先级 |
|------|------|--------|
| wework_bot | 企业微信机器人配置 | P0 |
| wework_conversation | 对话记录 | P0 |
| wework_user_history | 用户对话历史 | P1 |
| wework_user_profile | 用户画像 | P1 |
| wework_schedule | 定时任务配置 | P1 |
| wework_global_config | 全局配置 | P1 |
| kb_document | 知识库文档 | P0 |
| kb_category | 文档分类 | P0 |
| kb_embedding | 向量索引 | P1 |
| cms_admin | 管理员 | P0 |
| cms_config | 系统配置 | P0 |
### 3.2 核心表结构
#### 3.2.1 wework_bot(企业微信机器人)
```sql
CREATE TABLE `wework_bot` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL COMMENT '机器人名称',
`identifier` varchar(50) NOT NULL COMMENT '机器人标识',
`corp_id` varchar(100) NOT NULL COMMENT '企业ID',
`agent_id` varchar(50) NOT NULL COMMENT '应用ID',
`secret` varchar(200) NOT NULL COMMENT '应用Secret',
`token` varchar(100) NOT NULL COMMENT 'Token',
`encoding_aes_key` varchar(100) NOT NULL COMMENT '加密密钥',
`knowledge_spaces` text COMMENT '关联知识空间ID(JSON数组)',
`ai_model` varchar(100) DEFAULT NULL COMMENT 'AI模型',
`system_prompt` text COMMENT '系统提示词',
`work_mode` varchar(20) DEFAULT 'smart' COMMENT '工作模式',
`confidence_threshold` decimal(3,2) DEFAULT 0.70 COMMENT '置信度阈值',
`welcome_message` text COMMENT '欢迎语',
`no_answer_message` text COMMENT '无答案回复',
`transfer_message` text COMMENT '转人工提示',
`support_group_chat` tinyint(1) DEFAULT 1 COMMENT '支持群聊',
`enable_user_history` tinyint(1) DEFAULT 1 COMMENT '启用用户历史',
`history_context_length` int(11) DEFAULT 5 COMMENT '上下文长度',
`status` tinyint(1) DEFAULT 1 COMMENT '状态',
`total_conversations` int(11) DEFAULT 0 COMMENT '总对话数',
`last_conversation_at` datetime DEFAULT NULL COMMENT '最后对话时间',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `identifier` (`identifier`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='企业微信机器人';
```
#### 3.2.2 wework_conversation(对话记录)
```sql
CREATE TABLE `wework_conversation` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`bot_id` int(11) NOT NULL COMMENT '机器人ID',
`user_id` varchar(100) NOT NULL COMMENT '用户ID',
`message_type` varchar(20) DEFAULT 'text' COMMENT '消息类型',
`chat_type` varchar(20) DEFAULT 'single' COMMENT '聊天类型',
`room_id` varchar(100) DEFAULT NULL COMMENT '群聊ID',
`question` text NOT NULL COMMENT '用户问题',
`answer` text COMMENT '机器人回答',
`confidence` decimal(5,4) DEFAULT NULL COMMENT '置信度',
`transfer_human` tinyint(1) DEFAULT 0 COMMENT '是否转人工',
`response_time` int(11) DEFAULT NULL COMMENT '响应时间(ms)',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `bot_id` (`bot_id`),
KEY `user_id` (`user_id`),
KEY `created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='对话记录';
```
#### 3.2.3 kb_document(知识库文档)
```sql
CREATE TABLE `kb_document` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(200) NOT NULL COMMENT '标题',
`category_id` int(11) DEFAULT NULL COMMENT '分类ID',
`tags` varchar(500) DEFAULT NULL COMMENT '标签',
`content` longtext NOT NULL COMMENT '内容',
`plain_text` longtext COMMENT '纯文本内容',
`status` varchar(20) DEFAULT 'published' COMMENT '状态',
`view_count` int(11) DEFAULT 0 COMMENT '查看次数',
`use_count` int(11) DEFAULT 0 COMMENT '使用次数',
`created_by` int(11) DEFAULT NULL COMMENT '创建人',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `category_id` (`category_id`),
KEY `status` (`status`),
FULLTEXT KEY `title_content` (`title`,`plain_text`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='知识库文档';
```
#### 3.2.4 kb_embedding(向量索引)
```sql
CREATE TABLE `kb_embedding` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`document_id` int(11) NOT NULL COMMENT '文档ID',
`chunk_index` int(11) DEFAULT 0 COMMENT '分块索引',
`content` text NOT NULL COMMENT '文本内容',
`embedding` json DEFAULT NULL COMMENT '向量数据',
`provider` varchar(50) DEFAULT 'volcano' COMMENT '服务商',
`model` varchar(100) DEFAULT NULL COMMENT '模型',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `document_id` (`document_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='向量索引';
```
---
## 4. 接口设计
### 4.1 企业微信回调接口
#### 4.1.1 接收消息
**接口地址**:`POST /wework/callback/{identifier}`
**请求参数**(Query String):
- msg_signature: 消息签名
- timestamp: 时间戳
- nonce: 随机数
**请求体**:企业微信加密的XML消息
**响应**:
- 成功:HTTP 200
- 失败:HTTP 500
#### 4.1.2 URL验证
**接口地址**:`GET /wework/callback/{identifier}`
**请求参数**:
- msg_signature: 消息签名
- timestamp: 时间戳
- nonce: 随机数
- echostr: 验证字符串
**响应**:返回解密后的echostr
### 4.2 后台管理接口
#### 4.2.1 机器人管理
**创建机器人**
- 接口:`POST /admin/wework/save`
- 参数:见2.2.2节
- 响应:`{code: 0, msg: "创建成功", data: {id: 1}}`
**编辑机器人**
- 接口:`POST /admin/wework/save`
- 参数:包含id字段
- 响应:`{code: 0, msg: "保存成功"}`
**删除机器人**
- 接口:`POST /admin/wework/delete`
- 参数:`{id: 1}`
- 响应:`{code: 0, msg: "删除成功"}`
**机器人列表**
- 接口:`GET /admin/wework`
- 参数:`{page: 1, limit: 20, keyword: ""}`
- 响应:
```json
{
"code": 0,
"data": {
"list": [...],
"total": 10,
"page": 1,
"limit": 20
}
}
```
#### 4.2.2 知识库管理
**创建文档**
- 接口:`POST /admin/knowledge/save`
- 参数:见2.3.2节
- 响应:`{code: 0, msg: "创建成功", data: {id: 1}}`
**批量导入**
- 接口:`POST /admin/import/upload`
- 参数:`multipart/form-data`,files[]
- 响应:
```json
{
"code": 0,
"msg": "导入成功",
"data": {
"success": 10,
"failed": 0,
"total": 10
}
}
```
### 4.3 内部API接口
#### 4.3.1 RAG问答接口
**接口地址**:`POST /openapi/chat`
**请求参数**:
```json
{
"message": "用户问题",
"messages": [
{"role": "user", "content": "历史问题1"},
{"role": "assistant", "content": "历史回答1"}
],
"knowledge_base": true,
"space_ids": [1, 2],
"provider": "tencent",
"model": "hunyuan-lite",
"system_prompt": "你是客服助手"
}
```
**响应**:
```json
{
"code": 0,
"data": {
"content": "AI生成的回答",
"model": "hunyuan-lite",
"usage": {
"prompt_tokens": 100,
"completion_tokens": 50,
"total_tokens": 150
}
}
}
```
---
## 5. 界面设计
### 5.1 后台管理界面
#### 5.1.1 登录页面
- 用户名/密码输入框
- 登录按钮
- 记住密码选项
#### 5.1.2 首页仪表盘
- 今日对话数
- 总对话数
- 活跃机器人数
- 知识库文档数
- 对话趋势图表
- 热门问题排行
#### 5.1.3 机器人管理页面
**列表页**
- 表格显示:名称、标识、状态、对话数、最后对话时间
- 操作按钮:编辑、删除、启用/禁用、查看统计
- 顶部按钮:添加机器人
**编辑页**
- 基本信息:名称、标识、描述
- 企业微信配置:企业ID、应用ID、Secret、Token、EncodingAESKey
- 回调URL显示(只读)
- 知识库配置:选择知识空间、AI模型、系统提示词
- 回复策略:工作模式、置信度阈值、欢迎语等
- 高级功能:群聊支持、用户历史、定时推送
- 保存按钮
#### 5.1.4 知识库管理页面
**文档列表**
- 表格显示:标题、分类、标签、状态、查看数、更新时间
- 操作按钮:编辑、删除、预览
- 顶部按钮:添加文档、批量导入、分类管理
**文档编辑**
- 标题输入框
- 分类选择
- 标签输入
- Markdown编辑器
- 状态选择(草稿/发布)
- 保存按钮
**批量导入**
- 文件上传区域(支持拖拽)
- 支持格式说明
- 导入按钮
- 导入进度显示
- 导入结果列表
#### 5.1.5 对话记录页面
- 筛选条件:机器人、用户、时间范围、关键词
- 表格显示:时间、机器人、用户、问题、回答、响应时间
- 操作按钮:查看详情、导出
- 分页
#### 5.1.6 统计分析页面
- 时间范围选择
- 对话量趋势图
- 机器人使用排行
- 热门问题排行
- 用户活跃度
- 平均响应时间
- 导出报表按钮
#### 5.1.7 系统配置页面
**AI配置**
- 火山方舟配置:API Key、Endpoint ID
- 腾讯云配置:Secret ID、Secret Key、模型选择
- 测试连接按钮
**Embedding配置**
- 服务商选择
- API配置
- 测试按钮
**全局配置**
- 默认AI配置
- 默认工作模式
- 默认回复配置
- 群聊配置
- 用户历史配置
### 5.2 界面风格
- 简洁现代的管理后台风格
- 主色调:蓝色系(#6366F1)
- 响应式布局,支持PC端
- 使用Layui UI框架
- 图标使用Font Awesome
---
## 6. 技术实现方案
### 6.1 技术栈
**后端**
- 框架:CodeIgniter 4.x
- 语言:PHP 7.4+
- 数据库:MySQL 5.7+
- 缓存:文件缓存(可选Redis)
**前端**
- UI框架:Layui 2.x
- JavaScript:jQuery 3.x
- 编辑器:Markdown编辑器
- 图表:ECharts
**第三方服务**
- 企业微信API
- 火山方舟AI API
- 腾讯云混元API
### 6.2 核心技术实现
#### 6.2.1 企业微信消息加解密
使用企业微信官方SDK或自实现:
1. 验证签名
2. AES解密消息
3. 解析XML
4. 处理业务逻辑
5. 构建回复
6. AES加密
7. 返回XML
#### 6.2.2 RAG实现方案
**方案A:使用Embedding(推荐)**
```php
// 1. 问题向量化
$questionVector = $embeddingService->embed($question);
// 2. 向量检索
$docs = $this->searchByVector($questionVector, $limit = 5);
// 3. 构建提示词
$prompt = $this->buildPrompt($docs, $question, $history);
// 4. 调用AI
$answer = $aiService->chat($prompt);
```
**方案B:关键词匹配(备选)**
```php
// 1. 提取关键词
$keywords = $this->extractKeywords($question);
// 2. 全文检索
$docs = $this->searchByKeywords($keywords, $limit = 5);
// 3. 构建提示词
$prompt = $this->buildPrompt($docs, $question, $history);
// 4. 调用AI
$answer = $aiService->chat($prompt);
```
#### 6.2.3 定时任务实现
使用CodeIgniter 4的Commands + Cron:
```php
// app/Commands/WeworkSchedule.php
class WeworkSchedule extends BaseCommand
{
public function run(array $params)
{
// 查询待发送的定时任务
$tasks = $this->getScheduledTasks();
foreach ($tasks as $task) {
// 发送消息
$this->sendScheduledMessage($task);
}
}
}
```
Crontab配置:
```bash
* * * * * cd /path/to/project && php spark wework:schedule
```
### 6.3 性能优化
1. **数据库优化**
- 添加必要索引
- 对话记录分表(按月)
- 定期清理历史数据
2. **缓存策略**
- access_token缓存(2小时)
- 知识库文档缓存
- 向量检索结果缓存
3. **异步处理**
- 向量化异步处理
- 批量导入异步处理
- 统计分析异步计算
### 6.4 安全措施
1. **接口安全**
- 企业微信签名验证
- 后台登录验证
- CSRF防护
- SQL注入防护
2. **数据安全**
- 敏感信息加密存储
- 数据库备份
- 操作日志记录
3. **访问控制**
- 管理员权限控制
- IP白名单(可选)
- 访问频率限制
---
## 7. 开发排期
### 7.1 开发阶段划分
| 阶段 | 工作内容 | 工期 | 负责人 |
|------|---------|------|--------|
| 第1阶段 | 数据库设计、基础框架搭建 | 2天 | 后端 |
| 第2阶段 | 企业微信接入、消息收发 | 3天 | 后端 |
| 第3阶段 | 知识库管理、RAG问答 | 4天 | 后端 |
| 第4阶段 | 后台管理界面 | 4天 | 前端 |
| 第5阶段 | 定时任务、统计分析 | 2天 | 后端 |
| 第6阶段 | 联调测试、Bug修复 | 3天 | 全员 |
| 第7阶段 | 部署上线、文档整理 | 2天 | 全员 |
**总工期**:20个工作日(约4周)
### 7.2 详细任务分解
**第1阶段:基础搭建(2天)**
- Day 1
- 数据库表设计
- 创建数据库和表
- CodeIgniter 4项目初始化
- 基础配置
- Day 2
- BaseController封装
- 通用方法封装
- 后台登录功能
- 权限验证中间件
**第2阶段:企业微信接入(3天)**
- Day 3
- 机器人CRUD接口
- 回调URL生成
- 消息接收接口
- Day 4
- 消息加解密实现
- XML解析
- 消息类型处理
- Day 5
- 消息发送实现
- access_token管理
- 群聊支持
**第3阶段:知识库和RAG(4天)**
- Day 6
- 文档CRUD接口
- 分类管理
- 文档搜索
- Day 7
- 批量导入功能
- 文件解析
- 索引建立
- Day 8
- Embedding服务封装
- 向量化实现
- 向量检索
- Day 9
- RAG问答实现
- AI服务封装
- 提示词构建
**第4阶段:后台界面(4天)**
- Day 10
- 后台布局框架
- 首页仪表盘
- Day 11
- 机器人管理页面
- 机器人编辑页面
- Day 12
- 知识库管理页面
- 文档编辑页面
- 批量导入页面
- Day 13
- 对话记录页面
- 统计分析页面
- 系统配置页面
**第5阶段:高级功能(2天)**
- Day 14
- 定时任务实现
- 用户历史管理
- 上下文记忆
- Day 15
- 统计分析实现
- 数据导出
- 报表生成
**第6阶段:测试(3天)**
- Day 16
- 功能测试
- 接口测试
- Day 17
- 企业微信联调
- AI服务测试
- Day 18
- Bug修复
- 性能优化
**第7阶段:上线(2天)**
- Day 19
- 服务器部署
- 环境配置
- 数据迁移
- Day 20
- 文档整理
- 使用培训
- 正式上线
---
## 8. 验收标准
### 8.1 功能验收
#### 8.1.1 企业微信机器人
- [ ] 能够创建、编辑、删除机器人
- [ ] 能够接收企业微信消息
- [ ] 能够发送回复消息
- [ ] 支持私聊对话
- [ ] 支持群聊@回复
- [ ] 能够记住上下文(最近5-10条)
- [ ] 支持多个机器人同时工作
#### 8.1.2 知识库管理
- [ ] 能够创建、编辑、删除文档
- [ ] 能够管理文档分类
- [ ] 能够批量导入文档(txt/md/html)
- [ ] 能够搜索文档
- [ ] 能够建立向量索引(如启用)
#### 8.1.3 RAG问答
- [ ] 能够检索相关文档
- [ ] 能够调用AI生成回答
- [ ] 回答准确率达到70%以上
- [ ] 响应时间<3秒
#### 8.1.4 后台管理
- [ ] 能够登录后台
- [ ] 能够查看对话记录
- [ ] 能够查看统计数据
- [ ] 能够配置AI服务
- [ ] 能够配置全局参数
#### 8.1.5 定时任务
- [ ] 能够创建定时任务
- [ ] 能够按时发送消息
- [ ] 支持每日、每周、每月定时
### 8.2 性能验收
- [ ] 消息响应时间<3秒
- [ ] 支持100+并发用户
- [ ] 数据库查询优化,无慢查询
- [ ] 页面加载时间<2秒
### 8.3 安全验收
- [ ] 企业微信签名验证正常
- [ ] 后台登录验证正常
- [ ] 无SQL注入漏洞
- [ ] 无XSS漏洞
- [ ] 敏感信息加密存储
### 8.4 兼容性验收
- [ ] 支持Chrome、Firefox、Edge浏览器
- [ ] 支持1920×1080及以上分辨率
- [ ] 企业微信PC端和移动端正常使用
### 8.5 文档验收
- [ ] 部署安装文档
- [ ] 管理员使用手册
- [ ] 企业微信配置指南
- [ ] 故障排查指南
- [ ] API接口文档
---
## 9. 风险评估
### 9.1 技术风险
| 风险 | 影响 | 概率 | 应对措施 |
|------|------|------|---------|
| 企业微信API变更 | 高 | 低 | 关注官方文档,及时更新 |
| AI服务不稳定 | 中 | 中 | 多服务商备选,降级方案 |
| 向量检索性能 | 中 | 中 | 优化算法,增加缓存 |
| 并发性能不足 | 高 | 低 | 压力测试,优化代码 |
### 9.2 业务风险
| 风险 | 影响 | 概率 | 应对措施 |
|------|------|------|---------|
| 需求变更 | 中 | 中 | 预留扩展接口 |
| 知识库质量差 | 高 | 中 | 提供导入模板,培训 |
| 用户不会使用 | 中 | 中 | 详细文档,使用培训 |
---
## 10. 附录
### 10.1 参考文档
- [企业微信API文档](https://developer.work.weixin.qq.com/document/)
- [火山方舟API文档](https://www.volcengine.com/docs/82379)
- [腾讯云混元API文档](https://cloud.tencent.com/document/product/1729)
- [CodeIgniter 4文档](https://codeigniter.com/user_guide/)
### 10.2 术语表
- **RAG**:Retrieval-Augmented Generation,检索增强生成
- **Embedding**:向量化,将文本转换为向量
- **Webhook**:回调接口
- **access_token**:企业微信访问令牌
- **CorpID**:企业ID
- **AgentID**:应用ID
---
**文档结束**
如有疑问,请联系:[您的联系方式]
版本 1 · 约 18,049 字
暂无评论