Commit Graph

63 Commits

Author SHA1 Message Date
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
406efa6f14 fix: 修复 endpoints 模块导入路径
All checks were successful
continuous-integration/drone/push Build is passing
- progress.py: get_db, get_current_user 从 app.core.deps 导入
- speech.py: 同上
- recommendation.py: 同上
2026-01-30 15:04:01 +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
b1e6ca20fd chore: 触发重新部署
All checks were successful
continuous-integration/drone/push Build is passing
2026-01-30 14:54:00 +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
27b5766694 fix: 修复 Drone CI 脚本中的方括号语法问题
All checks were successful
continuous-integration/drone/push Build is passing
2026-01-30 14:28:29 +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
9793013a56 chore: 添加前端环境配置文件
Some checks failed
continuous-integration/drone/push Build is failing
- 添加 frontend/.env.production (VITE_APP_ENV=production)
- 修改 .gitignore 允许提交环境配置
- 修复生产环境显示"开发环境"标识的问题
2026-01-29 18:55:25 +08:00
yuliang_guo
3f724bc322 refactor: 后端代码按环境隔离部署
All checks were successful
continuous-integration/drone/push Build is passing
- test 分支 -> backend-test/app
- staging 分支 -> backend-staging/app
- main 分支 -> backend-prod/app

各环境后端代码独立,互不影响
2026-01-29 18:25:42 +08:00
yuliang_guo
c531928ec5 fix: 修复生产环境 Drone 部署配置
Some checks failed
continuous-integration/drone/push Build is failing
- 移除 docker compose rebuild,改为直接重启容器
- 后端代码同步到共享目录 /root/aiedu/kaopeilian-backend/app
- 保留多租户选择功能 [all]/[hua]/[cxw,yy,hl]
2026-01-29 18:19:02 +08:00
yuliang_guo
6ddd8a5aae fix: 修复 Drone CI/CD 配置
Some checks failed
continuous-integration/drone/push Build is failing
- 修正远程仓库名: origin -> cicd
- 修正前端目录: kaopeilian-frontend -> frontend
- 后端部署增加代码同步到容器挂载目录
2026-01-29 18:11:58 +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
3ddb1bda2d docs: 更新 CHANGELOG 添加下午的修复内容
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-29 17:38:43 +08:00
yuliang_guo
16ffdfc114 fix: 登录后跳转前检查目标页面权限
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-29 17:29:42 +08:00
yuliang_guo
34789e582e debug: 钉钉环境自动启用 vConsole
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-29 17:22:45 +08:00
yuliang_guo
ad969e39d4 debug: 添加钉钉免密登录调试日志
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-29 17:18:40 +08:00
yuliang_guo
dd20bf2e78 fix: 合并 get_db 和 get_current_user 的导入到 deps
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-29 17:09:54 +08:00
yuliang_guo
054375c36c fix: 修复 certificate/dashboard API 的 get_db 导入路径
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-29 17:08:44 +08:00
yuliang_guo
a9b1f4afb7 fix: 修复 certificate.py 的 Base 导入路径
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-29 17:07: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
7998b32080 fix: 保留首页需要的 getUserStatistics 和 getRecentExams 函数
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-29 16:56:55 +08:00
yuliang_guo
e419e7fad0 fix: 修复 API 文件的 request 导入路径
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-29 16:55:32 +08:00
yuliang_guo
598be1078d fix: 修复 data-dashboard.vue 多余的 template 标签
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-29 16:54:24 +08:00
yuliang_guo
f118cebca1 fix: 修复 my-certificates.vue 多余的 template 标签
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-29 16:53:48 +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
813ba2c295 fix: 所有等级奖章模型使用 Base 而非 BaseModel
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-29 16:29:45 +08:00
yuliang_guo
9abce87f97 fix: LevelConfig 模型不继承 updated_at
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-29 16:28:10 +08:00
yuliang_guo
ce8ded26f1 fix: 移除不存在的 Crown 图标
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-29 16:21:03 +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
5dfe23831d fix: 修复新用户等级经验值显示为硬编码假数据的问题
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-29 15:52:21 +08:00
yuliang_guo
8484f0f250 fix: 修复钉钉登录后跳转权限检查失败问题
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-29 15:46:22 +08:00
yuliang_guo
9f6d2844bc fix: 修复钉钉登录SDK就绪超时问题,添加调试日志
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-29 15:38:15 +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
c97a09de35 feat: 添加通讯录自动同步功能
Some checks failed
continuous-integration/drone/push Build is failing
- 添加 APScheduler 依赖
- 创建定时任务调度模块 scheduler.py
- 增量同步:每30分钟执行
- 完整同步:每天凌晨2点执行
- 添加定时任务管理 API
- 支持环境变量配置同步参数
2026-01-29 15:19:20 +08:00
yuliang_guo
174929d599 fix: 添加系统设置菜单项到侧边栏
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-29 15:10:07 +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
c27ad55e95 fix: 添加双人对练菜单到侧边栏
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-28 15:33:24 +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
fc299ed7b7 fix(exam): 改进多选题答案换行逻辑,避免误分割内容
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-28 14:40:49 +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
ccf6af6a4a style(exam): 优化多选题正确答案显示为换行格式
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-28 14:32:36 +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
yuliang_guo
fce8e780ef fix(exam): 优化答案弹窗自适应高度,减少不必要滚动
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-28 14:22:01 +08:00
yuliang_guo
f53b40c6c7 feat(exam): 优化答案解析弹窗和判断题/填空题样式
Some checks failed
continuous-integration/drone/push Build is failing
- 答案解析弹窗限制最大高度45vh,超出可滚动
- 判断题改为卡片式按钮,带图标和状态反馈
- 填空题增大输入框,添加图标和提示
2026-01-28 14:16:43 +08:00
yuliang_guo
12fd2fc0a1 fix(exam): 扩展选项字母支持范围从A-D到A-Z
Some checks failed
continuous-integration/drone/push Build is failing
- 修复E选项及更多选项显示带前缀问题
- 更新所有选项相关正则表达式
2026-01-28 14:09:46 +08:00
yuliang_guo
55438b85c6 fix(exam): 修复多选题带内容格式答案解析问题
Some checks failed
continuous-integration/drone/push Build is failing
- 增加对 'A:内容,B:内容,C:内容' 格式的支持
- 使用正则 /[A-Da-d](?=[::])/g 提取所有选项字母
2026-01-28 14:04:36 +08:00
yuliang_guo
22d8534fdf fix(exam): 增强动态考题答案解析逻辑和调试日志
Some checks failed
continuous-integration/drone/push Build is failing
- 修复正确答案字母解析的正则表达式
- 支持更多冒号格式(中英文冒号、带空格)
- 添加详细的调试日志帮助定位问题
- 当无法解析时尝试内容匹配
2026-01-28 13:19:31 +08:00