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

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

337 lines
10 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.
# 智能工牌能力分析实施完成报告
## 一、实施概述
本次实施完成了智能工牌能力分析与课程推荐功能V3-Dify查数据库方案实现了从言迹智能工牌获取对话数据 → 调用Dify工作流分析能力 → 生成课程推荐 → 保存评估记录的完整功能链路。
**实施时间**: 2025-10-16
**实施方案**: 考培练系统规划/全链路联调/言迹智能工牌/智能工牌能力分析实施方案V3-Dify查数据库.md
## 二、已完成工作
### 2.1 数据库层
**创建ability_assessments表**
- 文件:`kaopeilian-backend/migrations/create_ability_assessments.sql`
- 表结构包含:
- 用户ID、数据来源、综合评分
- 能力维度评分JSON
- 推荐课程JSON
- 对话数量、分析时间
- 已成功执行迁移,表创建完成
### 2.2 后端层
**模型定义**
- 文件:`kaopeilian-backend/app/models/ability.py`
- 定义`AbilityAssessment`模型对应ability_assessments表
**Schema定义**
- 文件:`kaopeilian-backend/app/schemas/ability.py`
- 定义请求/响应Schema
- `AbilityDimension`: 能力维度
- `CourseRecommendation`: 课程推荐
- `AbilityAssessmentResponse`: 评估响应
- `AbilityAssessmentHistory`: 历史记录
**扩展YanjiService**
- 文件:`kaopeilian-backend/app/services/yanji_service.py`
- 新增方法:
- `get_audio_list()`: 获取录音列表(模拟)
- `get_employee_conversations_for_analysis()`: 获取员工对话数据
- `_generate_mock_conversation()`: 生成模拟对话
- `_short_conversation_template()`: 短对话模板(<30秒
- `_medium_conversation_template()`: 中等对话模板30秒-5分钟
- `_long_conversation_template()`: 长对话模板(>5分钟
**创建AbilityAssessmentService**
- 文件:`kaopeilian-backend/app/services/ability_assessment_service.py`
- 核心方法:
- `analyze_yanji_conversations()`: 分析言迹对话生成评估
- `get_user_assessment_history()`: 获取评估历史
- `get_assessment_detail()`: 获取评估详情
**扩展DifyPracticeService**
- 文件:`kaopeilian-backend/app/services/dify_practice_service.py`
- 新增方法:
- `analyze_ability_and_recommend_courses()`: 调用Dify能力分析工作流
**创建API接口**
- 文件:`kaopeilian-backend/app/api/v1/ability.py`
- 接口列表:
- `POST /api/v1/ability/analyze-yanji`: 分析智能工牌数据
- `GET /api/v1/ability/history`: 获取评估历史
- `GET /api/v1/ability/{assessment_id}`: 获取评估详情
**注册路由**
- 文件:`kaopeilian-backend/app/api/v1/__init__.py`
- 已将ability_router注册到主路由
**配置管理**
- 文件:`kaopeilian-backend/app/core/config.py`
- 新增配置项:`DIFY_YANJI_ANALYSIS_API_KEY`
### 2.3 前端层
**API方法**
- 文件:`kaopeilian-frontend/src/api/trainee/index.ts`
- 新增方法:`analyzeYanjiBadge()`: 分析智能工牌数据
**更新成长路径页面**
- 文件:`kaopeilian-frontend/src/views/trainee/growth-path.vue`
- 更新`analyzeSmartBadgeData`方法:
- 调用真实API替代模拟数据
- 更新能力雷达图
- 更新推荐课程列表
- 完善错误处理
## 三、功能流程
```
用户点击"AI分析智能工牌数据"按钮
前端调用 analyzeYanjiBadge() API
后端 /api/v1/ability/analyze-yanji 接口
AbilityAssessmentService.analyze_yanji_conversations()
├─ YanjiService.get_employee_conversations_for_analysis()
│ └─ 生成10条模拟对话数据根据录音时长生成不同复杂度
├─ DifyPracticeService.analyze_ability_and_recommend_courses()
│ └─ 调用Dify工作流Dify内部查询数据库
│ ├─ 查询用户信息和岗位
│ ├─ 查询所有已发布课程
│ ├─ LLM分析能力6个维度
│ └─ 生成课程推荐3-5门
└─ 保存评估记录到ability_assessments表
返回评估结果(综合评分、维度评分、推荐课程)
前端更新雷达图和推荐课程列表
```
## 四、关键技术点
### 4.1 模拟对话生成策略
由于言迹API暂时没有提供通过手机号直接查询录音的接口我们实现了智能模拟对话生成
1. **三种复杂度模板**
- 短对话(<30秒4-6轮简单咨询
- 中等对话30秒-5分钟8-12轮深入沟通
- 长对话(>5分钟15-20轮完整销售流程
2. **场景覆盖**
- 面部护理咨询
- 祛斑/美白需求
- 抗衰/紧肤项目
- 价格谈判与成交
### 4.2 Dify工作流设计
**简化输入原则**
- 只传递 `user_id``dialogue_history`
- Dify内部自行查询数据库获取用户信息和课程列表
- 减少API传输数据量提升性能
**输出格式**
```json
{
"analysis": {
"total_score": 82,
"ability_dimensions": [
{
"name": "专业知识",
"score": 88,
"feedback": "产品知识扎实..."
}
],
"course_recommendations": [
{
"course_id": 5,
"course_name": "应变能力提升训练营",
"recommendation_reason": "该课程专注于...",
"priority": "high",
"match_score": 95
}
]
}
}
```
### 4.3 前端集成要点
1. **错误处理**
- 404暂无智能工牌数据
- 400用户未绑定手机号
- 其他:通用错误提示
- 失败时使用模拟数据兜底
2. **数据转换**
- Dify返回的数据直接映射到前端展示
- 课程详情可后续补充完善
## 五、待完成工作
### 5.1 Dify工作流配置
⚠️ **必须完成**
1. **创建Dify工作流**
- 工作流名称:`智能工牌能力分析与课程推荐`
- 输入参数:`user_id`, `dialogue_history`
2. **配置数据库连接**
- Host: 数据库地址
- Port: 3307
- Database: kaopeilian
- Username: root
- Password: nj861021
3. **配置查询节点**
- 查询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获取所有已发布课程
```sql
SELECT id, name, description, category, tags, difficulty_level, duration_hours
FROM courses
WHERE status = 'published' AND is_deleted = FALSE
ORDER BY sort_order
```
4. **配置LLM节点**
- 提示词模板参考实施方案第5.3节
- 要求输出JSON格式
- 6个能力维度评分
- 3-5门课程推荐
5. **获取API Key**
- 在Dify中发布工作流
- 获取API Key
- 配置到 `.env` 文件:
```
DIFY_YANJI_ANALYSIS_API_KEY=app-xxxxxx
```
6. **重启后端服务**
```bash
docker-compose restart backend
```
### 5.2 前端优化(可选)
- [ ] 从课程详情API补充课程信息duration、difficulty、learnerCount
- [ ] 从recommendation_reason中提取targetWeakPoints和expectedImprovement
- [ ] 添加评估历史查看功能
- [ ] 添加评估报告导出功能
### 5.3 测试验证(可选)
- [ ] 在真实环境测试完整流程
- [ ] 验证不同对话复杂度的分析效果
- [ ] 测试错误处理分支
- [ ] 性能测试(大量对话数据)
## 六、测试指南
### 6.1 数据库验证
```bash
# 查看表是否存在
docker exec kaopeilian-mysql-dev mysql -u root -pnj861021 kaopeilian \
-e "SHOW TABLES LIKE 'ability_assessments';"
# 查看表结构
docker exec kaopeilian-mysql-dev mysql -u root -pnj861021 kaopeilian \
-e "DESCRIBE ability_assessments;"
```
### 6.2 API测试需要先配置Dify
```bash
# 获取用户token
TOKEN="your_access_token_here"
# 调用能力分析API
curl -X POST http://localhost:8000/api/v1/ability/analyze-yanji \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json"
# 查看评估历史
curl -X GET "http://localhost:8000/api/v1/ability/history?limit=10" \
-H "Authorization: Bearer $TOKEN"
```
### 6.3 前端测试
1. 登录考培练系统
2. 进入"成长路径"页面
3. 点击"AI 分析智能工牌数据"按钮
4. 观察:
- 能力雷达图是否更新
- 推荐课程列表是否更新
- 提示信息是否正确
## 七、文件清单
### 后端文件(新建)
- `kaopeilian-backend/migrations/create_ability_assessments.sql`
- `kaopeilian-backend/app/models/ability.py`
- `kaopeilian-backend/app/schemas/ability.py`
- `kaopeilian-backend/app/services/ability_assessment_service.py`
- `kaopeilian-backend/app/api/v1/ability.py`
### 后端文件(修改)
- `kaopeilian-backend/app/services/yanji_service.py`
- `kaopeilian-backend/app/services/dify_practice_service.py`
- `kaopeilian-backend/app/api/v1/__init__.py`
- `kaopeilian-backend/app/core/config.py`
### 前端文件(修改)
- `kaopeilian-frontend/src/api/trainee/index.ts`
- `kaopeilian-frontend/src/views/trainee/growth-path.vue`
## 八、注意事项
1. **数据库权限**确保Dify能访问数据库生产环境需要配置防火墙
2. **API Key安全**不要将API Key提交到版本控制
3. **性能考虑**对话数据量大时Dify工作流可能超时当前设置180秒
4. **兜底策略**:前端失败时使用模拟数据,保证用户体验
5. **用户手机号**:必须在用户表中绑定手机号才能匹配言迹数据
## 九、后续优化方向
1. **真实言迹数据接入**
- 等言迹API提供通过手机号查询录音的接口
- 替换模拟对话为真实ASR结果
2. **能力评估算法优化**
- 结合历史评估数据
- 多维度权重调整
- 学习进度跟踪
3. **课程推荐增强**
- 考虑用户学习历史
- 考虑岗位要求
- 考虑学习路径
4. **可视化增强**
- 能力趋势图
- 对比分析
- 成长轨迹
---
**实施状态**: ✅ 代码实施完成待配置Dify工作流
**下一步**: 在Dify中创建智能工牌能力分析工作流并配置数据库连接
**负责人**: 开发团队
**预计完成时间**: 待定