yuliang_guo
|
4a273e627a
|
fix: 成长路径管理API添加权限控制
continuous-integration/drone/push Build is passing
管理端所有成长路径API现在需要管理员或经理权限才能访问:
- GET/POST /manager/growth-paths
- GET/PUT/DELETE /manager/growth-paths/{path_id}
|
2026-01-31 11:06:02 +08:00 |
|
yuliang_guo
|
bdb91aabea
|
fix: SQL执行器仅允许管理员访问
continuous-integration/drone/push Build is passing
- 所有SQL执行器端点改用 require_admin 权限校验
- /sql/execute - 执行SQL
- /sql/validate - 验证SQL
- /sql/tables - 获取表列表
- /sql/table/{name}/schema - 获取表结构
|
2026-01-31 11:01:35 +08:00 |
|
yuliang_guo
|
79b55cfd12
|
fix: 修复权限提升漏洞和添加安全头
continuous-integration/drone/push Build is passing
安全修复:
- 创建 UserSelfUpdate schema,禁止用户修改自己的 role 和 is_active
- /users/me 端点现在使用 UserSelfUpdate 而非 UserUpdate
安全增强:
- 添加 SecurityHeadersMiddleware 中间件
- X-Content-Type-Options: nosniff
- X-Frame-Options: DENY
- X-XSS-Protection: 1; mode=block
- Referrer-Policy: strict-origin-when-cross-origin
- Permissions-Policy: 禁用敏感功能
- Cache-Control: API响应不缓存
|
2026-01-31 10:57:41 +08:00 |
|
yuliang_guo
|
52dccaab79
|
feat: 添加API限流和优化错误处理
continuous-integration/drone/push Build is failing
- 添加 RateLimitMiddleware 限流中间件 (200请求/分钟)
- 优化 Content-Type 错误返回 400 而非 500
- 添加 JSON 解析错误处理
- 统一 HTTP 异常处理格式
|
2026-01-31 10:50:27 +08:00 |
|
yuliang_guo
|
d59a4355a5
|
fix: 修复安全问题 - 登录失败返回401 + XSS过滤
continuous-integration/drone/push Build is passing
- 登录失败返回 HTTP 401 而非 200
- 添加 XSS 输入过滤工具函数
- 课程名称和描述字段添加 XSS 过滤验证器
|
2026-01-31 10:39:07 +08:00 |
|
yuliang_guo
|
0b7c07eb7f
|
feat: 添加请求验证错误详细日志
continuous-integration/drone/push Build is passing
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-01-31 10:03:54 +08:00 |
|
yuliang_guo
|
fadeaadd65
|
fix: 修复学员端成长路径数据解析,兼容直接返回数据格式
continuous-integration/drone/push Build is passing
|
2026-01-30 18:32:51 +08:00 |
|
yuliang_guo
|
67b3c28d33
|
debug: 添加成长路径返回数据日志
continuous-integration/drone/push Build is passing
|
2026-01-30 18:28:58 +08:00 |
|
yuliang_guo
|
1f60012a97
|
fix: 修复学员端成长路径按用户岗位匹配的逻辑,支持多岗位
continuous-integration/drone/push Build is passing
|
2026-01-30 18:20:18 +08:00 |
|
yuliang_guo
|
3dcaaaaa35
|
feat: 成长路径页面增加岗位全选按钮,调整下方区域高度
continuous-integration/drone/push Build is passing
|
2026-01-30 18:12:08 +08:00 |
|
yuliang_guo
|
ceb0ae966b
|
fix: 修复模板结构错误
continuous-integration/drone/push Build is passing
|
2026-01-30 17:56:12 +08:00 |
|
yuliang_guo
|
52236ff2a8
|
feat: 重构成长路径编辑页面布局 - 上方基本信息/阶段/统计,下方左右分栏课程配置
continuous-integration/drone/push Build is failing
|
2026-01-30 17:55:06 +08:00 |
|
yuliang_guo
|
ebcc0da4c7
|
fix: 修复课程加载 size 参数超过后端限制的问题
continuous-integration/drone/push Build is passing
|
2026-01-30 17:47:55 +08:00 |
|
yuliang_guo
|
a6a87e2d41
|
fix: 修复课程列表API路径和数据结构
continuous-integration/drone/push Build is passing
|
2026-01-30 17:39:40 +08:00 |
|
yuliang_guo
|
14e2e948f5
|
feat: 优化课程列表显示,双列布局展示更多课程
continuous-integration/drone/push Build is passing
|
2026-01-30 16:34:40 +08:00 |
|
yuliang_guo
|
b2e1ed02d1
|
feat: 增强课程搜索功能,添加分类筛选
continuous-integration/drone/push Build is passing
|
2026-01-30 16:27:34 +08:00 |
|
yuliang_guo
|
920c6a64c8
|
feat: 成长路径支持多岗位关联 + 增强拖拽功能
continuous-integration/drone/push Build is passing
前端:
- 岗位选择改为多选模式
- 增强拖拽视觉反馈(高亮、动画提示)
- 列表显示多个岗位标签
后端:
- 添加 position_ids 字段支持多岗位
- 兼容旧版 position_id 单选数据
- 返回 position_names 数组
|
2026-01-30 16:19:40 +08:00 |
|
yuliang_guo
|
a92bfa2b0f
|
fix: 修复考试题目分数显示为小数的问题
continuous-integration/drone/push Build is passing
- 使用 distributeScores 智能整数分配题目分数
- 格式化分数显示,避免显示长小数
- 总分100分,根据题目数量智能分配整数分数
例如:11道题 = [10,10,10,10,10,10,10,10,10,5,5] 而不是 [9.09...,9.09...]
|
2026-01-30 16:09:14 +08:00 |
|
yuliang_guo
|
925576d38e
|
feat: 重构成长路径管理页面
continuous-integration/drone/push Build is passing
- 改为列表+编辑双视图模式
- 岗位列表从后端 API 动态获取
- 课程库从后端 API 动态获取
- 支持按岗位/状态筛选路径
- 支持动态添加/删除学习阶段
- 支持拖拽或点击添加课程节点
|
2026-01-30 15:53:47 +08:00 |
|
yuliang_guo
|
b4906c543b
|
feat: 实现成长路径功能
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
|
d44111e712
|
fix: 修复 duo-practice-report.vue 语法错误
continuous-integration/drone/push Build is passing
移除多余的 try-catch 块
|
2026-01-30 15:20:18 +08:00 |
|
yuliang_guo
|
c0d0331422
|
fix: 修复多选题提交后页面崩溃
continuous-integration/drone/push Build is passing
- formatCorrectAnswer: 增加空值保护和 try-catch
- checkObjectiveAnswer: 增加 options 数组校验
- recordWrongAnswer: 使用 dialogQuestion 快照,增加错误处理
|
2026-01-30 15:16:12 +08:00 |
|
yuliang_guo
|
ef7a41ba01
|
fix: 修复 SQLAlchemy case() 语法
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 模块导入路径
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 导入错误
continuous-integration/drone/push Build is passing
添加 NotificationServiceAdapter 适配器类,兼容 API 层调用方式
导出 notification_service 单例实例
|
2026-01-30 15:02:09 +08:00 |
|
yuliang_guo
|
b1e6ca20fd
|
chore: 触发重新部署
continuous-integration/drone/push Build is passing
|
2026-01-30 14:54:00 +08:00 |
|
yuliang_guo
|
e3b7bdcfd8
|
feat: 实现考试分数智能分配
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 脚本中的方括号语法问题
continuous-integration/drone/push Build is passing
|
2026-01-30 14:28:29 +08:00 |
|
yuliang_guo
|
64f5d567fa
|
feat: 实现 KPL 系统功能改进计划
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: 添加前端环境配置文件
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: 后端代码按环境隔离部署
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 部署配置
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 配置
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内容提取支持 & 修复成绩查询课程筛选
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 添加下午的修复内容
continuous-integration/drone/push Build is failing
|
2026-01-29 17:38:43 +08:00 |
|
yuliang_guo
|
16ffdfc114
|
fix: 登录后跳转前检查目标页面权限
continuous-integration/drone/push Build is failing
|
2026-01-29 17:29:42 +08:00 |
|
yuliang_guo
|
34789e582e
|
debug: 钉钉环境自动启用 vConsole
continuous-integration/drone/push Build is failing
|
2026-01-29 17:22:45 +08:00 |
|
yuliang_guo
|
ad969e39d4
|
debug: 添加钉钉免密登录调试日志
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
continuous-integration/drone/push Build is failing
|
2026-01-29 17:09:54 +08:00 |
|
yuliang_guo
|
054375c36c
|
fix: 修复 certificate/dashboard API 的 get_db 导入路径
continuous-integration/drone/push Build is failing
|
2026-01-29 17:08:44 +08:00 |
|
yuliang_guo
|
a9b1f4afb7
|
fix: 修复 certificate.py 的 Base 导入路径
continuous-integration/drone/push Build is failing
|
2026-01-29 17:07:38 +08:00 |
|
yuliang_guo
|
696b48e97a
|
fix: 优化资源重复的错误提示
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 函数
continuous-integration/drone/push Build is failing
|
2026-01-29 16:56:55 +08:00 |
|
yuliang_guo
|
e419e7fad0
|
fix: 修复 API 文件的 request 导入路径
continuous-integration/drone/push Build is failing
|
2026-01-29 16:55:32 +08:00 |
|
yuliang_guo
|
598be1078d
|
fix: 修复 data-dashboard.vue 多余的 template 标签
continuous-integration/drone/push Build is failing
|
2026-01-29 16:54:24 +08:00 |
|
yuliang_guo
|
f118cebca1
|
fix: 修复 my-certificates.vue 多余的 template 标签
continuous-integration/drone/push Build is failing
|
2026-01-29 16:53:48 +08:00 |
|
yuliang_guo
|
6f0f2e6363
|
feat: KPL v1.5.0 功能迭代
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
continuous-integration/drone/push Build is failing
|
2026-01-29 16:29:45 +08:00 |
|
yuliang_guo
|
9abce87f97
|
fix: LevelConfig 模型不继承 updated_at
continuous-integration/drone/push Build is failing
|
2026-01-29 16:28:10 +08:00 |
|
yuliang_guo
|
ce8ded26f1
|
fix: 移除不存在的 Crown 图标
continuous-integration/drone/push Build is failing
|
2026-01-29 16:21:03 +08:00 |
|