- 从服务器拉取完整代码 - 按框架规范整理项目结构 - 配置 Drone CI 测试环境部署 - 包含后端(FastAPI)、前端(Vue3)、管理端 技术栈: Vue3 + TypeScript + FastAPI + MySQL
10 KiB
10 KiB
智能工牌能力分析实施完成报告
一、实施概述
本次实施完成了智能工牌能力分析与课程推荐功能(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暂时没有提供通过手机号直接查询录音的接口,我们实现了智能模拟对话生成:
-
三种复杂度模板:
- 短对话(<30秒):4-6轮,简单咨询
- 中等对话(30秒-5分钟):8-12轮,深入沟通
- 长对话(>5分钟):15-20轮,完整销售流程
-
场景覆盖:
- 面部护理咨询
- 祛斑/美白需求
- 抗衰/紧肤项目
- 价格谈判与成交
4.2 Dify工作流设计
简化输入原则:
- 只传递
user_id和dialogue_history - Dify内部自行查询数据库获取用户信息和课程列表
- 减少API传输数据量,提升性能
输出格式:
{
"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 前端集成要点
-
错误处理:
- 404:暂无智能工牌数据
- 400:用户未绑定手机号
- 其他:通用错误提示
- 失败时使用模拟数据兜底
-
数据转换:
- Dify返回的数据直接映射到前端展示
- 课程详情可后续补充完善
五、待完成工作
5.1 Dify工作流配置
⚠️ 必须完成:
-
创建Dify工作流:
- 工作流名称:
智能工牌能力分析与课程推荐 - 输入参数:
user_id,dialogue_history
- 工作流名称:
-
配置数据库连接:
- Host: 数据库地址
- Port: 3307
- Database: kaopeilian
- Username: root
- Password: nj861021
-
配置查询节点:
-
查询1:获取用户信息和岗位
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:获取所有已发布课程
SELECT id, name, description, category, tags, difficulty_level, duration_hours FROM courses WHERE status = 'published' AND is_deleted = FALSE ORDER BY sort_order
-
-
配置LLM节点:
- 提示词模板:参考实施方案第5.3节
- 要求输出JSON格式
- 6个能力维度评分
- 3-5门课程推荐
-
获取API Key:
- 在Dify中发布工作流
- 获取API Key
- 配置到
.env文件:DIFY_YANJI_ANALYSIS_API_KEY=app-xxxxxx
-
重启后端服务:
docker-compose restart backend
5.2 前端优化(可选)
- 从课程详情API补充课程信息(duration、difficulty、learnerCount)
- 从recommendation_reason中提取targetWeakPoints和expectedImprovement
- 添加评估历史查看功能
- 添加评估报告导出功能
5.3 测试验证(可选)
- 在真实环境测试完整流程
- 验证不同对话复杂度的分析效果
- 测试错误处理分支
- 性能测试(大量对话数据)
六、测试指南
6.1 数据库验证
# 查看表是否存在
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)
# 获取用户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 前端测试
- 登录考培练系统
- 进入"成长路径"页面
- 点击"AI 分析智能工牌数据"按钮
- 观察:
- 能力雷达图是否更新
- 推荐课程列表是否更新
- 提示信息是否正确
七、文件清单
后端文件(新建)
kaopeilian-backend/migrations/create_ability_assessments.sqlkaopeilian-backend/app/models/ability.pykaopeilian-backend/app/schemas/ability.pykaopeilian-backend/app/services/ability_assessment_service.pykaopeilian-backend/app/api/v1/ability.py
后端文件(修改)
kaopeilian-backend/app/services/yanji_service.pykaopeilian-backend/app/services/dify_practice_service.pykaopeilian-backend/app/api/v1/__init__.pykaopeilian-backend/app/core/config.py
前端文件(修改)
kaopeilian-frontend/src/api/trainee/index.tskaopeilian-frontend/src/views/trainee/growth-path.vue
八、注意事项
- 数据库权限:确保Dify能访问数据库(生产环境需要配置防火墙)
- API Key安全:不要将API Key提交到版本控制
- 性能考虑:对话数据量大时,Dify工作流可能超时(当前设置180秒)
- 兜底策略:前端失败时使用模拟数据,保证用户体验
- 用户手机号:必须在用户表中绑定手机号才能匹配言迹数据
九、后续优化方向
-
真实言迹数据接入:
- 等言迹API提供通过手机号查询录音的接口
- 替换模拟对话为真实ASR结果
-
能力评估算法优化:
- 结合历史评估数据
- 多维度权重调整
- 学习进度跟踪
-
课程推荐增强:
- 考虑用户学习历史
- 考虑岗位要求
- 考虑学习路径
-
可视化增强:
- 能力趋势图
- 对比分析
- 成长轨迹
实施状态: ✅ 代码实施完成,待配置Dify工作流
下一步: 在Dify中创建智能工牌能力分析工作流并配置数据库连接
负责人: 开发团队
预计完成时间: 待定