Commit Graph

37 Commits

Author SHA1 Message Date
yuliang_guo
8bfd5aa3de fix: 修复TrainingSession状态比较大小写问题
All checks were successful
continuous-integration/drone/push Build is passing
- COMPLETED -> completed (枚举值是小写)
2026-02-02 13:02:19 +08:00
yuliang_guo
cf71fabef0 fix: 修复企业看板API 500错误
All checks were successful
continuous-integration/drone/push Build is passing
- 修复 get_realtime_activities() 中字段名错误 (exp_amount -> exp_change)
- 添加 get_enterprise_overview() 的异常处理,防止单个查询失败导致整体失败
- 满分人数查询添加 NULL 值检查
2026-02-02 12:57:31 +08:00
yuliang_guo
fc9775e61f fix: 修复任务服务SQLAlchemy异步加载错误
All checks were successful
continuous-integration/drone/push Build is passing
- create_task 和 get_tasks 现在使用 selectinload 预加载关联关系
- 避免懒加载导致的 MissingGreenlet 错误
2026-01-31 18:31:07 +08:00
yuliang_guo
506e9ea2e2 feat: 员工同步增加离职处理功能
Some checks failed
continuous-integration/drone/push Build is failing
- 全量同步 (sync_employees) 现在会检测并软删除离职员工
- 增量同步改为软删除而非物理删除,更安全
- 离职处理:设置 is_active=False, is_deleted=True
- 前端显示离职处理数量统计
2026-01-31 18:10:45 +08:00
yuliang_guo
e5dd6f3acb fix: 修复员工同步统计错误
Some checks failed
continuous-integration/drone/push Build is failing
- create_user 现在返回 (user, status) 元组,区分 created/existing/restored/skipped
- sync_employees 正确统计新增、已存在、恢复、跳过的用户数
- 前端显示更准确的同步结果信息
2026-01-31 18:04:27 +08:00
yuliang_guo
41a2f7944a fix: 修复flake8 lint检查错误
All checks were successful
continuous-integration/drone/push Build is passing
- 删除废弃的 admin_positions_backup.py 备份文件
- 修复 courses.py 缺失的 select 导入
- 修复 coze_gateway.py 异常变量作用域问题
- 修复 scheduler_service.py 无用的 global 声明
- 添加 TYPE_CHECKING 导入解决模型前向引用警告
2026-01-31 17:43:39 +08:00
yuliang_guo
18d6d5aff3 refactor: 员工同步复用钉钉免密登录配置
Some checks failed
continuous-integration/drone/push Build is failing
- 移除员工同步独立的 API 凭证配置
- 复用 dingtalk 配置组的 CorpId、AppKey、AppSecret
- 简化前端界面,只保留开关和测试连接
2026-01-31 17:29:10 +08:00
yuliang_guo
7be1ac1787 feat: 员工同步改为钉钉开放API方式
All checks were successful
continuous-integration/drone/push Build is passing
- 新增 dingtalk_service.py 调用钉钉开放API
- 支持获取 Access Token、部门列表、员工列表
- employee_sync_service 改为从钉钉API获取员工
- 前端配置界面支持配置 CorpId、ClientId、ClientSecret
- 移除外部数据库表依赖
2026-01-31 17:25:44 +08:00
yuliang_guo
07638152fc refactor: 员工同步数据库配置改为环境变量
All checks were successful
continuous-integration/drone/push Build is passing
- 前端隐藏数据库连接配置输入
- 只保留"启用开关"和"表名"配置
- 数据库连接从 EMPLOYEE_SYNC_DB_URL 环境变量读取
- 显示数据源配置状态
- 保留默认值用于向后兼容
2026-01-31 17:07:55 +08:00
yuliang_guo
78e1bb3dc3 feat: 员工同步配置支持多租户
All checks were successful
continuous-integration/drone/push Build is passing
- 后端新增员工同步配置API(获取/保存/测试连接)
- employee_sync_service 从数据库读取配置
- 前端系统设置页面添加"员工同步"Tab
- 支持配置:数据库主机、端口、库名、用户名、密码、表名
- 保留默认配置用于向后兼容
2026-01-31 17:01:30 +08:00
yuliang_guo
c3aa4e85e7 feat: 添加PPT/PPTX文件类型支持
All checks were successful
continuous-integration/drone/push Build is passing
1. upload.py: 添加ppt/pptx到允许上传的文件类型
2. knowledge_analysis_v2.py: 添加PPT内容提取方法_extract_ppt_content
3. requirements.txt: 添加python-pptx依赖
2026-01-31 11:49:10 +08:00
yuliang_guo
4e817f6eef fix: 修复exam_service解析questions JSON格式
All checks were successful
continuous-integration/drone/push Build is passing
questions可能是{"questions":[...]}或直接是列表,需要兼容处理
2026-01-31 11:28:00 +08:00
yuliang_guo
e1d10605c9 fix: ExamService.start_exam返回ID避免懒加载
All checks were successful
continuous-integration/drone/push Build is passing
修改start_exam返回exam.id而不是整个Exam对象,
彻底避免SQLAlchemy异步会话的懒加载问题
2026-01-31 11:21:39 +08:00
yuliang_guo
2334a2544c fix: 修复exam_service异常类导入错误
All checks were successful
continuous-integration/drone/push Build is passing
将不存在的BusinessException/ErrorCode替换为现有的NotFoundError/ValidationError
2026-01-31 11:15:52 +08:00
yuliang_guo
0b7c07eb7f feat: 添加请求验证错误详细日志
All checks were successful
continuous-integration/drone/push Build is passing
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-31 10:03:54 +08:00
yuliang_guo
67b3c28d33 debug: 添加成长路径返回数据日志
All checks were successful
continuous-integration/drone/push Build is passing
2026-01-30 18:28:58 +08:00
yuliang_guo
1f60012a97 fix: 修复学员端成长路径按用户岗位匹配的逻辑,支持多岗位
All checks were successful
continuous-integration/drone/push Build is passing
2026-01-30 18:20:18 +08:00
yuliang_guo
920c6a64c8 feat: 成长路径支持多岗位关联 + 增强拖拽功能
All checks were successful
continuous-integration/drone/push Build is passing
前端:
- 岗位选择改为多选模式
- 增强拖拽视觉反馈(高亮、动画提示)
- 列表显示多个岗位标签

后端:
- 添加 position_ids 字段支持多岗位
- 兼容旧版 position_id 单选数据
- 返回 position_names 数组
2026-01-30 16:19:40 +08:00
yuliang_guo
b4906c543b feat: 实现成长路径功能
All checks were successful
continuous-integration/drone/push Build is passing
- 新增数据库表: growth_path_nodes, user_growth_path_progress, user_node_completions
- 新增 Model: GrowthPathNode, UserGrowthPathProgress, UserNodeCompletion
- 新增 Service: GrowthPathService(管理端CRUD、学员端进度追踪)
- 新增 API: 学员端获取成长路径、管理端CRUD
- 前端学员端从API动态加载成长路径数据
- 更新管理端API接口定义
2026-01-30 15:37:14 +08:00
yuliang_guo
ef7a41ba01 fix: 修复 SQLAlchemy case() 语法
All checks were successful
continuous-integration/drone/push Build is passing
- admin.py: 使用 case() 替代 func.case()
- task_service.py: 同上
- 已在服务器执行数据库迁移创建 user_course_progress 表
2026-01-30 15:11:57 +08:00
yuliang_guo
a2429329df fix: 修复 notification_service 导入错误
All checks were successful
continuous-integration/drone/push Build is passing
添加 NotificationServiceAdapter 适配器类,兼容 API 层调用方式
导出 notification_service 单例实例
2026-01-30 15:02:09 +08:00
yuliang_guo
e3b7bdcfd8 feat: 实现考试分数智能分配
All checks were successful
continuous-integration/drone/push Build is passing
解决题目数量无法整除总分时出现无限小数的问题

后端:
- 新增 ScoreDistributor 分数分配工具类
- 支持整数分配和小数分配两种模式
- 更新 exam_service.py 使用智能分配
- 考试总分固定100分,按题目数量智能分配

前端:
- 新增 scoreFormatter.ts 分数格式化工具
- 提供分数显示、等级判断等辅助函数

示例:100分/6题 = [17,17,17,17,16,16] 总和=100
2026-01-30 14:50:41 +08:00
yuliang_guo
64f5d567fa feat: 实现 KPL 系统功能改进计划
Some checks failed
continuous-integration/drone/push Build is failing
1. 课程学习进度追踪
   - 新增 UserCourseProgress 和 UserMaterialProgress 模型
   - 新增 /api/v1/progress/* 进度追踪 API
   - 更新 admin.py 使用真实课程完成率数据

2. 路由权限检查完善
   - 新增前端 permissionChecker.ts 权限检查工具
   - 更新 router/guard.ts 实现团队和课程权限验证
   - 新增后端 permission_service.py

3. AI 陪练音频转文本
   - 新增 speech_recognition.py 语音识别服务
   - 新增 /api/v1/speech/* API
   - 更新 ai-practice-coze.vue 支持语音输入

4. 双人对练报告生成
   - 更新 practice_room_service.py 添加报告生成功能
   - 新增 /rooms/{room_code}/report API
   - 更新 duo-practice-report.vue 调用真实 API

5. 学习提醒推送
   - 新增 notification_service.py 通知服务
   - 新增 scheduler_service.py 定时任务服务
   - 支持钉钉、企微、站内消息推送

6. 智能学习推荐
   - 新增 recommendation_service.py 推荐服务
   - 新增 /api/v1/recommendations/* API
   - 支持错题、能力、进度、热门多维度推荐

7. 安全问题修复
   - DEBUG 默认值改为 False
   - 添加 SECRET_KEY 安全警告
   - 新增 check_security_settings() 检查函数

8. 证书 PDF 生成
   - 更新 certificate_service.py 添加 PDF 生成
   - 添加 weasyprint、Pillow、qrcode 依赖
   - 更新下载 API 支持 PDF 和 PNG 格式
2026-01-30 14:22:35 +08:00
yuliang_guo
37b8d6be1a feat: 新增Excel内容提取支持 & 修复成绩查询课程筛选
Some checks failed
continuous-integration/drone/push Build is failing
- 后端 knowledge_analysis_v2.py: 新增 _extract_excel_content 方法支持xlsx/xls文件
- 前端 student-scores.vue: 课程筛选改为动态加载,修复筛选参数传递
2026-01-29 18:06:38 +08:00
yuliang_guo
696b48e97a fix: 优化资源重复的错误提示
Some checks failed
continuous-integration/drone/push Build is failing
1. 后端 course_service.py:
   - 课程名重复时返回 existing_id 和 existing_name
   - 成长路径名重复时返回详细信息

2. 前端 edit-course.vue:
   - 处理409冲突错误,提供跳转到已存在课程的选项

3. 前端 errorHandler.ts:
   - 添加409错误的处理逻辑
   - 添加冲突错误工具函数

4. 前端 position-management.vue, user-management.vue:
   - 改进错误消息提取,显示更详细的错误信息
2026-01-29 17:04:15 +08:00
yuliang_guo
6f0f2e6363 feat: KPL v1.5.0 功能迭代
Some checks failed
continuous-integration/drone/push Build is failing
1. 奖章条件优化
- 修复统计查询 SQL 语法
- 添加按类别检查奖章方法

2. 移动端适配
- 登录页、课程中心、课程详情
- 考试页面、成长路径、排行榜

3. 证书系统
- 数据库模型和迁移脚本
- 证书颁发/列表/下载/验证 API
- 前端证书列表页面

4. 数据大屏
- 企业级/团队级数据 API
- ECharts 可视化大屏页面
2026-01-29 16:51:17 +08:00
yuliang_guo
0933b936f9 feat: 新增等级与奖章系统
Some checks failed
continuous-integration/drone/push Build is failing
- 后端: 新增 user_levels, exp_history, badge_definitions, user_badges, level_configs 表
- 后端: 新增 LevelService 和 BadgeService 服务
- 后端: 新增等级/奖章/签到/排行榜 API 端点
- 后端: 考试/练习/陪练完成时触发经验值和奖章检查
- 前端: 新增 LevelBadge, ExpProgress, BadgeCard, LevelUpDialog 组件
- 前端: 新增排行榜页面
- 前端: 成长路径页面集成真实等级数据
- 数据库: 包含迁移脚本和初始数据
2026-01-29 16:19:22 +08:00
yuliang_guo
774d62c1ab debug: 添加钉钉登录调试日志
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-29 15:33:28 +08:00
yuliang_guo
1e189e79b5 fix: 修复重复岗位/团队导致的同步失败问题
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-29 15:30:31 +08:00
yuliang_guo
9701bd4fd9 fix: 修复增量同步时软删除用户导致的重复username错误
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-29 15:27:49 +08:00
yuliang_guo
662947cd06 feat: 添加钉钉扫码登录功能
Some checks failed
continuous-integration/drone/push Build is failing
- 后端:钉钉 OAuth 认证服务
- 后端:系统设置 API(钉钉配置)
- 前端:登录页钉钉扫码入口
- 前端:系统设置页面
- 数据库迁移脚本
2026-01-29 14:40:00 +08:00
yuliang_guo
c5d460b413 feat: 添加双人对练语音通话功能
Some checks failed
continuous-integration/drone/push Build is failing
- 后端:扩展 SSE 支持 WebRTC 信令消息转发
- 前端:创建 WebRTC 连接管理模块 (webrtc.ts)
- 前端:创建 useVoiceCall 组合式函数
- 前端:在对练房间添加语音通话 UI
- 集成 Web Speech API 实现语音转文字
2026-01-28 15:45:47 +08:00
yuliang_guo
b6aea2e23d feat: 添加双人对练功能
Some checks failed
continuous-integration/drone/push Build is failing
- 新增数据库迁移脚本 (practice_rooms, practice_room_messages)
- 新增后端 API: 房间创建/加入/消息同步/报告生成
- 新增前端页面: 入口页/对练房间/报告页
- 新增 AI 双人评估服务和提示词
2026-01-28 15:20:03 +08:00
yuliang_guo
973023c1d8 fix(ai): 修复答案判断模型名称,改用gemini-3-flash
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-28 14:35:40 +08:00
yuliang_guo
29ada2eb93 perf(ai): 答案判断改用gemini-2.5-flash提升速度
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-28 14:30:53 +08:00
111
442ac78b56 sync: 同步服务器最新代码 (2026-01-27)
Some checks failed
continuous-integration/drone/push Build is failing
更新内容:
- 后端 AI 服务优化(能力分析、知识点解析等)
- 前端考试和陪练界面更新
- 修复多个 prompt 和 JSON 解析问题
- 更新 Coze 语音客户端
2026-01-27 10:03:28 +08:00
111
998211c483 feat: 初始化考培练系统项目
- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

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