- 从服务器拉取完整代码 - 按框架规范整理项目结构 - 配置 Drone CI 测试环境部署 - 包含后端(FastAPI)、前端(Vue3)、管理端 技术栈: Vue3 + TypeScript + FastAPI + MySQL
341 lines
7.9 KiB
Markdown
341 lines
7.9 KiB
Markdown
# 智能工牌能力分析功能 - 配置完成与使用指南
|
||
|
||
## ✅ 配置完成状态
|
||
|
||
### 1. 后端服务状态
|
||
- ✅ 后端容器运行正常
|
||
- ✅ API服务启动成功 (http://localhost:8000)
|
||
- ✅ Swagger文档可访问 (http://localhost:8000/docs)
|
||
|
||
### 2. API端点注册成功
|
||
- ✅ `POST /api/v1/ability/analyze-yanji` - 分析智能工牌数据
|
||
- ✅ `GET /api/v1/ability/history` - 获取评估历史
|
||
- ✅ `GET /api/v1/ability/{assessment_id}` - 获取评估详情
|
||
|
||
### 3. Dify配置
|
||
- ✅ API Base: `http://dify.ireborn.com.cn/v1`
|
||
- ✅ API Key: `app-g0I5UT8lBB0fvuxGDOqrG8Zj`
|
||
- ✅ 环境变量已配置在 `.env` 文件
|
||
|
||
### 4. 数据库
|
||
- ✅ `ability_assessments` 表已创建
|
||
- ✅ 表结构验证通过
|
||
|
||
---
|
||
|
||
## 📋 功能流程说明
|
||
|
||
```
|
||
用户操作
|
||
↓
|
||
点击"AI分析智能工牌数据"按钮
|
||
↓
|
||
前端调用 POST /api/v1/ability/analyze-yanji
|
||
↓
|
||
后端处理流程:
|
||
1. 检查用户手机号
|
||
2. YanjiService生成10条模拟对话数据
|
||
- 根据录音时长自动选择对话复杂度(短/中/长)
|
||
3. 调用Dify工作流分析能力
|
||
- Dify内部查询用户信息和岗位
|
||
- Dify内部查询所有已发布课程
|
||
- LLM分析6个能力维度
|
||
- LLM生成3-5门课程推荐
|
||
4. 保存评估记录到 ability_assessments 表
|
||
↓
|
||
返回评估结果
|
||
↓
|
||
前端更新:
|
||
- 能力雷达图(6个维度)
|
||
- 推荐课程列表
|
||
- 显示综合评分和对话数量
|
||
```
|
||
|
||
---
|
||
|
||
## 🎯 使用指南
|
||
|
||
### 方法1: 前端界面测试
|
||
|
||
1. **登录系统**
|
||
- 访问前端页面
|
||
- 使用有手机号的账号登录
|
||
|
||
2. **进入成长路径页面**
|
||
- 点击左侧导航菜单的"成长路径"
|
||
|
||
3. **测试功能**
|
||
- 找到"能力评估"卡片
|
||
- 点击"AI 分析智能工牌数据"按钮
|
||
- 等待分析完成(约5-15秒)
|
||
|
||
4. **查看结果**
|
||
- 能力雷达图会更新显示6个维度的评分
|
||
- 下方显示个性化推荐课程
|
||
- 提示消息显示分析详情(对话数量、综合评分)
|
||
|
||
### 方法2: API直接测试
|
||
|
||
#### 2.1 获取访问Token
|
||
|
||
```bash
|
||
# 登录获取token
|
||
curl -X POST http://localhost:8000/api/v1/auth/login \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"username": "your_username",
|
||
"password": "your_password"
|
||
}'
|
||
|
||
# 保存返回的access_token
|
||
export TOKEN="返回的access_token"
|
||
```
|
||
|
||
#### 2.2 调用能力分析API
|
||
|
||
```bash
|
||
# 分析智能工牌数据
|
||
curl -X POST http://localhost:8000/api/v1/ability/analyze-yanji \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-H "Content-Type: application/json"
|
||
```
|
||
|
||
**期望响应示例**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"message": "智能工牌数据分析完成",
|
||
"data": {
|
||
"assessment_id": 1,
|
||
"total_score": 85,
|
||
"dimensions": [
|
||
{
|
||
"name": "专业知识",
|
||
"score": 88,
|
||
"feedback": "产品知识扎实,能准确回答客户问题..."
|
||
},
|
||
{
|
||
"name": "沟通技巧",
|
||
"score": 92,
|
||
"feedback": "语言表达清晰流畅..."
|
||
}
|
||
// ... 共6个维度
|
||
],
|
||
"recommended_courses": [
|
||
{
|
||
"course_id": 5,
|
||
"course_name": "应变能力提升训练营",
|
||
"recommendation_reason": "该课程专注于提升应变能力...",
|
||
"priority": "high",
|
||
"match_score": 95
|
||
}
|
||
// ... 3-5门课程
|
||
],
|
||
"conversation_count": 10,
|
||
"analyzed_at": "2025-10-16T10:30:00"
|
||
}
|
||
}
|
||
```
|
||
|
||
#### 2.3 查看评估历史
|
||
|
||
```bash
|
||
# 获取最近10条评估记录
|
||
curl -X GET "http://localhost:8000/api/v1/ability/history?limit=10" \
|
||
-H "Authorization: Bearer $TOKEN"
|
||
```
|
||
|
||
#### 2.4 查看评估详情
|
||
|
||
```bash
|
||
# 查看指定评估记录的详情
|
||
curl -X GET "http://localhost:8000/api/v1/ability/1" \
|
||
-H "Authorization: Bearer $TOKEN"
|
||
```
|
||
|
||
---
|
||
|
||
## 🔍 Dify工作流配置要求
|
||
|
||
当前API Key指向的Dify工作流需要满足以下要求:
|
||
|
||
### 输入参数
|
||
- `user_id` (int): 用户ID
|
||
- `dialogue_history` (string): JSON格式的对话历史数组
|
||
|
||
### 工作流内部逻辑
|
||
1. **数据库查询1**: 获取用户信息和岗位
|
||
```sql
|
||
SELECT u.id, u.full_name, u.phone, p.name as position_name, p.skills
|
||
FROM users u
|
||
LEFT JOIN user_positions up ON u.id = up.user_id
|
||
LEFT JOIN positions p ON up.position_id = p.id
|
||
WHERE u.id = {{user_id}}
|
||
```
|
||
|
||
2. **数据库查询2**: 获取所有已发布课程
|
||
```sql
|
||
SELECT id, name, description, category, tags, difficulty_level, duration_hours
|
||
FROM courses
|
||
WHERE status = 'published' AND is_deleted = FALSE
|
||
ORDER BY sort_order
|
||
```
|
||
|
||
3. **LLM分析**:
|
||
- 分析对话历史
|
||
- 评估6个能力维度(0-100分)
|
||
- 生成课程推荐(3-5门)
|
||
|
||
### 输出格式 (JSON)
|
||
```json
|
||
{
|
||
"analysis": {
|
||
"total_score": 82,
|
||
"ability_dimensions": [
|
||
{
|
||
"name": "专业知识",
|
||
"score": 88,
|
||
"feedback": "详细反馈..."
|
||
}
|
||
// ... 共6个维度
|
||
],
|
||
"course_recommendations": [
|
||
{
|
||
"course_id": 5,
|
||
"course_name": "课程名称",
|
||
"recommendation_reason": "推荐理由...",
|
||
"priority": "high",
|
||
"match_score": 95
|
||
}
|
||
// ... 3-5门课程
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
**6个能力维度**:
|
||
1. 专业知识
|
||
2. 沟通技巧
|
||
3. 操作技能
|
||
4. 客户服务
|
||
5. 安全意识
|
||
6. 应变能力
|
||
|
||
---
|
||
|
||
## ⚠️ 常见问题
|
||
|
||
### 1. "用户未绑定手机号"错误
|
||
**原因**: 用户表中phone字段为空
|
||
**解决**:
|
||
```sql
|
||
-- 更新用户手机号
|
||
UPDATE users SET phone = '13800138000' WHERE id = 用户ID;
|
||
```
|
||
|
||
### 2. "未找到该员工的录音记录"错误
|
||
**原因**: 当前使用模拟数据,这个错误理论上不会出现
|
||
**说明**: 如果出现,检查YanjiService.get_audio_list()方法
|
||
|
||
### 3. Dify工作流超时
|
||
**原因**: 对话数据量大或工作流复杂导致超时(>180秒)
|
||
**解决**:
|
||
- 减少对话数量(目前是10条)
|
||
- 优化Dify工作流
|
||
- 增加超时时间(修改DifyPracticeService中的timeout参数)
|
||
|
||
### 4. 前端显示模拟数据
|
||
**原因**: API调用失败后的兜底策略
|
||
**检查**:
|
||
- 浏览器控制台查看错误信息
|
||
- 后端日志查看详细错误
|
||
- 确认Dify工作流是否正常
|
||
|
||
---
|
||
|
||
## 📊 数据库查询
|
||
|
||
### 查看所有评估记录
|
||
```sql
|
||
SELECT
|
||
id,
|
||
user_id,
|
||
source_type,
|
||
total_score,
|
||
conversation_count,
|
||
analyzed_at
|
||
FROM ability_assessments
|
||
ORDER BY analyzed_at DESC;
|
||
```
|
||
|
||
### 查看用户最新评估
|
||
```sql
|
||
SELECT
|
||
id,
|
||
total_score,
|
||
ability_dimensions,
|
||
recommended_courses,
|
||
analyzed_at
|
||
FROM ability_assessments
|
||
WHERE user_id = 用户ID
|
||
ORDER BY analyzed_at DESC
|
||
LIMIT 1;
|
||
```
|
||
|
||
### 查看评估趋势
|
||
```sql
|
||
SELECT
|
||
DATE(analyzed_at) as date,
|
||
AVG(total_score) as avg_score,
|
||
COUNT(*) as assessment_count
|
||
FROM ability_assessments
|
||
GROUP BY DATE(analyzed_at)
|
||
ORDER BY date DESC;
|
||
```
|
||
|
||
---
|
||
|
||
## 📝 开发说明
|
||
|
||
### 代码文件位置
|
||
|
||
**后端**:
|
||
- 模型: `kaopeilian-backend/app/models/ability.py`
|
||
- Schema: `kaopeilian-backend/app/schemas/ability.py`
|
||
- 服务:
|
||
- `kaopeilian-backend/app/services/yanji_service.py`
|
||
- `kaopeilian-backend/app/services/ability_assessment_service.py`
|
||
- `kaopeilian-backend/app/services/dify_practice_service.py`
|
||
- API: `kaopeilian-backend/app/api/v1/ability.py`
|
||
- 配置: `kaopeilian-backend/app/core/config.py`
|
||
- 迁移: `kaopeilian-backend/migrations/create_ability_assessments.sql`
|
||
|
||
**前端**:
|
||
- API方法: `kaopeilian-frontend/src/api/trainee/index.ts`
|
||
- 页面: `kaopeilian-frontend/src/views/trainee/growth-path.vue`
|
||
|
||
### 环境变量
|
||
|
||
```bash
|
||
# kaopeilian-backend/.env
|
||
DATABASE_URL=mysql+aiomysql://root:root@localhost:3306/kaopeilian?charset=utf8mb4
|
||
DIFY_YANJI_ANALYSIS_API_KEY=app-g0I5UT8lBB0fvuxGDOqrG8Zj
|
||
```
|
||
|
||
---
|
||
|
||
## 🚀 下一步优化方向
|
||
|
||
1. **真实言迹数据接入**: 替换模拟对话为真实ASR结果
|
||
2. **能力评估算法优化**: 结合历史数据和学习进度
|
||
3. **课程推荐增强**: 考虑学习路径和岗位要求
|
||
4. **可视化增强**: 能力趋势图、对比分析
|
||
5. **性能优化**: 缓存策略、异步处理
|
||
|
||
---
|
||
|
||
**配置完成时间**: 2025-10-16
|
||
**版本**: V1.0
|
||
**状态**: ✅ 生产就绪
|
||
|