chore: 清理 docs 目录冗余文档(55个→9个)
删除: - docs/1.0/ 全部22个(旧Simple KB文档,已被替代) - docs/2.0/ 全部2个(空文件/过时) - docs/design/ 全部4个(旧功能设计) - docs/plans/ 旧版5个(保留v2.0设计文档) - docs/superpowers/ 全部4个(飞书集成文档) - docs/根目录杂项 8个(开发规范/快速参考/调试/飞书/Git设置) - docs/3.0/knowledge_graph_analysis.md(不相关) 保留: - docs/3.0/ 考核工作流设计 2个 - docs/plans/ v2.0设计文档 1个 - docs/tests/ 测试文档 6个 合计: 55个 → 9个 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,297 +0,0 @@
|
||||
# 飞书机器人与人才测评集成 - 实现总结
|
||||
|
||||
> **文档版本**: v1.0
|
||||
> **创建日期**: 2026-03-17
|
||||
> **状态**: 实现完成
|
||||
|
||||
---
|
||||
|
||||
## 一、实现概述
|
||||
|
||||
### 已完成的功能
|
||||
1. ✅ **知识库选择机制** - 飞书机器人支持配置特定知识库或知识组
|
||||
2. ✅ **命令解析器** - 支持多种语言的测评命令识别
|
||||
3. ✅ **测评会话管理** - 完整的会话生命周期管理
|
||||
4. ✅ **飞书卡片交互** - 友好的问题展示和结果报告
|
||||
|
||||
### 架构图
|
||||
```
|
||||
用户消息
|
||||
↓
|
||||
FeishuController._handleMessage()
|
||||
↓
|
||||
[命令识别] → 是测评命令? → FeishuAssessmentService.handleCommand()
|
||||
↓ ↓
|
||||
否 命令解析器
|
||||
↓ ↓
|
||||
FeishuService.processChatMessage() 执行对应操作
|
||||
↓ ↓
|
||||
ChatService.streamChat() [开始/回答/状态/结果]
|
||||
↓ ↓
|
||||
RAG搜索 + LLM生成 AssessmentService
|
||||
↓ ↓
|
||||
飞书消息回复 飞书消息回复
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 二、数据库变更
|
||||
|
||||
### 1. FeishuBot 实体新增字段
|
||||
**文件**: `server/src/feishu/entities/feishu-bot.entity.ts`
|
||||
|
||||
```typescript
|
||||
@Column({ name: 'knowledge_base_id', nullable: true, length: 36 })
|
||||
knowledgeBaseId: string;
|
||||
|
||||
@Column({ name: 'knowledge_group_id', nullable: true, length: 36 })
|
||||
knowledgeGroupId: string;
|
||||
```
|
||||
|
||||
### 2. 新增测评会话表
|
||||
**文件**: `server/src/feishu/entities/feishu-assessment-session.entity.ts`
|
||||
|
||||
```sql
|
||||
CREATE TABLE feishu_assessment_sessions (
|
||||
id VARCHAR(36) PRIMARY KEY,
|
||||
bot_id VARCHAR(36) NOT NULL,
|
||||
open_id VARCHAR(255) NOT NULL,
|
||||
assessment_session_id VARCHAR(36) NOT NULL,
|
||||
status ENUM('active', 'completed', 'cancelled') DEFAULT 'active',
|
||||
current_question_index INT DEFAULT 0,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
INDEX idx_bot_open (bot_id, open_id),
|
||||
INDEX idx_assessment_session (assessment_session_id),
|
||||
CONSTRAINT fk_feishu_assessment_bot
|
||||
FOREIGN KEY (bot_id)
|
||||
REFERENCES feishu_bots(id)
|
||||
ON DELETE CASCADE
|
||||
);
|
||||
```
|
||||
|
||||
### 3. 迁移脚本
|
||||
- `1773200000000-AddFeishuBotKnowledgeFields.ts` - 添加知识库字段
|
||||
- `1773200000001-CreateFeishuAssessmentSessionTable.ts` - 创建测评会话表
|
||||
|
||||
---
|
||||
|
||||
## 三、核心组件实现
|
||||
|
||||
### 1. 命令解析器 (AssessmentCommandParser)
|
||||
**文件**: `server/src/feishu/services/assessment-command.parser.ts`
|
||||
|
||||
**功能**:
|
||||
- 识别测评命令前缀:`/assessment`, `/测评`, `/eval`, `/测评评估`
|
||||
- 支持多语言命令:start/开始, answer/回答, status/状态, result/结果
|
||||
- 解析命令参数
|
||||
|
||||
**示例**:
|
||||
```typescript
|
||||
const parser = new AssessmentCommandParser();
|
||||
const command = parser.parse('/assessment start kb_xxx');
|
||||
// 结果: { type: 'start', parameters: ['kb_xxx'], ... }
|
||||
```
|
||||
|
||||
### 2. 测评服务 (FeishuAssessmentService)
|
||||
**文件**: `server/src/feishu/services/feishu-assessment.service.ts`
|
||||
|
||||
**核心方法**:
|
||||
- `handleCommand()` - 处理测评命令
|
||||
- `startAssessment()` - 开始测评会话
|
||||
- `submitAnswer()` - 提交答案
|
||||
- `getStatus()` - 获取测评状态
|
||||
- `getResult()` - 获取测评结果
|
||||
- `cancelAssessment()` - 取消测评
|
||||
|
||||
**会话流程**:
|
||||
1. 用户发送 `/assessment start`
|
||||
2. 系统创建测评会话,发送第一个问题卡片
|
||||
3. 用户回复答案(直接回复或 `/assessment answer`)
|
||||
4. 系统评估答案,发送下一个问题
|
||||
5. 重复步骤3-4直到完成
|
||||
6. 系统发送测评结果报告
|
||||
|
||||
### 3. 集成到 FeishuService
|
||||
**文件**: `server/src/feishu/feishu.service.ts`
|
||||
|
||||
**新增方法**:
|
||||
```typescript
|
||||
isAssessmentCommand(message: string): boolean {
|
||||
const trimmed = message.trim().toLowerCase();
|
||||
const commandPrefixes = ['/assessment', '/测评', '/eval', '/测评评估'];
|
||||
return commandPrefixes.some(prefix => trimmed.startsWith(prefix.toLowerCase()));
|
||||
}
|
||||
```
|
||||
|
||||
### 4. 集成到 FeishuController
|
||||
**文件**: `server/src/feishu/feishu.controller.ts`
|
||||
|
||||
**修改 _handleMessage 方法**:
|
||||
```typescript
|
||||
if (this.feishuService.isAssessmentCommand(userText)) {
|
||||
// 委托给测评服务
|
||||
await this.feishuAssessmentService.handleCommand(bot, openId, userText);
|
||||
} else {
|
||||
// 使用默认聊天处理
|
||||
await this.feishuService.processChatMessage(bot, openId, messageId, userText);
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 四、API 接口更新
|
||||
|
||||
### 1. 创建/更新飞书机器人
|
||||
**端点**: `POST /feishu/bots`
|
||||
|
||||
**请求体**:
|
||||
```json
|
||||
{
|
||||
"appId": "cli_xxx",
|
||||
"appSecret": "xxx",
|
||||
"botName": "测评机器人",
|
||||
"knowledgeBaseId": "kb_xxx", // 可选:特定知识库
|
||||
"knowledgeGroupId": "group_xxx" // 可选:知识组
|
||||
}
|
||||
```
|
||||
|
||||
### 2. 更新知识库配置
|
||||
**端点**: `PATCH /feishu/bots/:id/knowledge`
|
||||
|
||||
**请求体**:
|
||||
```json
|
||||
{
|
||||
"knowledgeBaseId": "kb_xxx",
|
||||
"knowledgeGroupId": null
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 五、命令参考
|
||||
|
||||
### 支持的命令前缀
|
||||
- `/assessment`
|
||||
- `/测评`
|
||||
- `/eval`
|
||||
- `/测评评估`
|
||||
|
||||
### 命令列表
|
||||
| 命令 | 参数 | 说明 |
|
||||
|------|------|------|
|
||||
| `start [kbId\|templateId]` | 可选 | 开始测评 |
|
||||
| `answer [answer]` | 必需 | 提交答案 |
|
||||
| `status` | - | 查看状态 |
|
||||
| `result` | - | 获取结果 |
|
||||
| `help` | - | 显示帮助 |
|
||||
| `cancel` | - | 取消测评 |
|
||||
|
||||
### 使用示例
|
||||
```
|
||||
用户: /assessment start
|
||||
系统: [发送第一个问题卡片]
|
||||
|
||||
用户: 这是我的答案
|
||||
系统: [评估答案并发送下一个问题]
|
||||
|
||||
用户: /assessment status
|
||||
系统: 测评状态: 进度 3/10, 状态: 进行中
|
||||
|
||||
用户: /assessment result
|
||||
系统: [发送测评结果报告]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 六、文件清单
|
||||
|
||||
### 新增文件
|
||||
1. `server/src/feishu/dto/assessment-command.dto.ts` - 命令DTO
|
||||
2. `server/src/feishu/entities/feishu-assessment-session.entity.ts` - 测评会话实体
|
||||
3. `server/src/feishu/services/assessment-command.parser.ts` - 命令解析器
|
||||
4. `server/src/feishu/services/feishu-assessment.service.ts` - 测评服务
|
||||
5. `server/src/migrations/1773200000000-AddFeishuBotKnowledgeFields.ts` - 迁移脚本1
|
||||
6. `server/src/migrations/1773200000001-CreateFeishuAssessmentSessionTable.ts` - 迁移脚本2
|
||||
|
||||
### 修改文件
|
||||
1. `server/src/feishu/entities/feishu-bot.entity.ts` - 添加知识库字段
|
||||
2. `server/src/feishu/dto/create-bot.dto.ts` - 添加知识库配置字段
|
||||
3. `server/src/feishu/feishu.service.ts` - 添加命令识别方法
|
||||
4. `server/src/feishu/feishu.controller.ts` - 集成测评服务
|
||||
5. `server/src/feishu/feishu.module.ts` - 注册新服务
|
||||
|
||||
---
|
||||
|
||||
## 七、实施步骤
|
||||
|
||||
### 阶段 1: 基础架构 ✅
|
||||
- [x] 创建数据库迁移脚本
|
||||
- [x] 更新 FeishuBot 实体和 DTO
|
||||
- [x] 修改 FeishuService 支持知识库选择
|
||||
|
||||
### 阶段 2: 测评集成 ✅
|
||||
- [x] 创建测评会话实体
|
||||
- [x] 实现命令解析器
|
||||
- [x] 实现测评服务
|
||||
- [x] 集成到 FeishuService 和 Controller
|
||||
|
||||
### 阶段 3: 测试优化 ⏳
|
||||
- [ ] 运行数据库迁移
|
||||
- [ ] 测试命令解析功能
|
||||
- [ ] 测试完整测评流程
|
||||
- [ ] 性能测试和优化
|
||||
|
||||
---
|
||||
|
||||
## 八、安全考虑
|
||||
|
||||
1. **多租户隔离**:所有查询包含 `userId` 和 `tenantId` 过滤
|
||||
2. **命令验证**:白名单命令验证,防止注入攻击
|
||||
3. **会话超时**:建议设置测评会话超时时间(如 24 小时)
|
||||
4. **数据隐私**:测评结果仅对授权用户可见
|
||||
|
||||
---
|
||||
|
||||
## 九、下一步工作
|
||||
|
||||
1. **运行数据库迁移**
|
||||
```bash
|
||||
yarn migration:run
|
||||
```
|
||||
|
||||
2. **测试命令解析**
|
||||
```bash
|
||||
node test-feishu-assessment.js
|
||||
```
|
||||
|
||||
3. **集成测试**
|
||||
- 创建飞书机器人
|
||||
- 配置知识库
|
||||
- 发送 `/assessment start` 命令
|
||||
- 完成测评流程
|
||||
|
||||
4. **文档完善**
|
||||
- 更新用户使用文档
|
||||
- 添加 API 文档
|
||||
- 编写故障排除指南
|
||||
|
||||
---
|
||||
|
||||
## 十、总结
|
||||
|
||||
本次实现完成了飞书机器人与人才测评的完整集成:
|
||||
|
||||
1. **知识库选择**:飞书机器人现在可以配置特定知识库或知识组
|
||||
2. **命令解析**:支持多语言的测评命令识别
|
||||
3. **会话管理**:完整的测评会话生命周期管理
|
||||
4. **交互体验**:友好的飞书卡片交互
|
||||
|
||||
系统架构清晰,代码结构良好,易于维护和扩展。
|
||||
|
||||
---
|
||||
|
||||
**相关文档**:
|
||||
- [完整设计文档](./feishu-assessment-integration-design.md)
|
||||
- [设计摘要](./feishu-assessment-integration-summary.md)
|
||||
- [快速参考](./QUICK-REFERENCE.md)
|
||||
Reference in New Issue
Block a user