Files
012-kaopeilian/docs/规划/全链路联调/言迹智能工牌/智能工牌能力分析-配置完成与使用指南.md
111 998211c483 feat: 初始化考培练系统项目
- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

技术栈: Vue3 + TypeScript + FastAPI + MySQL
2026-01-24 19:33:28 +08:00

341 lines
7.9 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.
# 智能工牌能力分析功能 - 配置完成与使用指南
## ✅ 配置完成状态
### 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
**状态**: ✅ 生产就绪