|
|
62281b5047
|
重构试卷分享系统:修复类型不匹配问题
本次提交重构了试卷分享功能,从"副本模式"改为"关联表模式",并修复了关键的类型不匹配问题。
## 主要更新
### 后端架构重构
- 新增 ExamShare 关联表模型,替代原有的试卷副本方式
- 修复 User.ID (int64) 与 ExamShare 外键的类型不匹配问题
- 更新所有相关 API 以使用新的关联表架构
- 添加 IsAccessibleBy 和 GetAccessibleExams 权限检查方法
### 类型系统修复
- ExamShare.SharedByID/SharedToID: uint → int64
- IsAccessibleBy/GetAccessibleExams 参数: uint → int64
- 修复所有涉及用户ID类型转换的代码
### 新增工具
- cmd/migrate_exam_shares.go: 数据迁移脚本(旧数据迁移)
- cmd/cleanup/main.go: 数据库表清理工具
### API 更新
- ShareExam: 创建分享关联记录而非复制试卷
- GetExamList: 返回分享人信息和参与人数统计
- GetExamRecord: 支持查看共享试卷的其他用户记录
- GetExamRecordList: 按试卷ID查询所有用户的考试记录
### 前端更新
- 更新 TypeScript 类型定义以匹配新的 API 响应
- 添加分享人标签显示("来自 XXX")
- 考试记录列表显示所有参与者信息
## 技术细节
- 使用 GORM 外键关联和 Preload 优化查询
- 添加唯一索引防止重复分享
- 事务保护数据一致性
- 软删除支持数据恢复
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-01 22:32:54 +08:00 |
|
|
|
ccc77beef8
|
实现共享试卷考试记录查看功能
功能说明:
- 查看共享试卷的考试记录时,显示所有参与用户的成绩
- 按分数从高到低排序,方便查看排行
- 显示每个用户的头像、昵称和考试详情
实现细节:
1. 后端:修改 GetExamRecordList 接口
- 指定试卷ID时自动识别共享关系
- 查询原始试卷+所有分享副本的考试记录
- 返回用户信息(username, nickname, avatar)
- 按分数降序排序
2. 前端:更新考试记录展示
- 显示用户头像和昵称
- 保持原有的考试详情信息
- 适配共享和非共享两种场景
修改文件:
- internal/handlers/exam_handler.go: 重构GetExamRecordList逻辑
- web/src/types/exam.ts: ExamRecord添加user字段
- web/src/pages/ExamManagement.tsx: 显示用户信息
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-01 21:34:20 +08:00 |
|
|
|
03f3e14f6e
|
添加共享试卷参与人数统计功能
功能说明:
- 后端:GetExamList 接口新增 participant_count 字段
- 前端:试卷卡片显示"X 人参与"标签
- 统计逻辑:计算原始试卷和所有分享副本的不同用户数
实现细节:
- 自动识别原始试卷和分享副本
- 统计所有已完成考试的不同用户
- 使用团队图标(TeamOutlined)展示参与人数
修改文件:
- internal/handlers/exam_handler.go: 添加参与人数统计逻辑
- web/src/types/exam.ts: 更新类型定义
- web/src/pages/ExamManagement.tsx: 显示参与人数标签
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-01 21:27:03 +08:00 |
|
|
|
3704d52a26
|
调整模拟考试试卷结构和评分规则
修改试卷组成为:
- 填空题:20道(40分,每题2分)
- 判断题:10道(10分,每题1分)
- 单选题:10道(10分,每题1分)
- 多选题:10道(20分,每题2分)
- 简答题:1道(10分)
- 论述题:2道供选择,根据职位类型作答1道(10分)
总分:100分(包含两道论述题但用户只需选答其中一道)
主要变更:
- exam_handler.go: 更新试卷创建时的题型配置
- exam_grading.go: 更新阅卷时的分值映射表
- 确保创建和评分逻辑一致
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-01 21:18:18 +08:00 |
|
|
|
1107d5d81c
|
优化考试管理页面UI和移动端响应式设计
主要改进:
- 重新设计试卷卡片布局,使用蓝色渐变头部
- 优化操作按钮样式,简化为初版设计
- 调整按钮顺序,将考试按钮放在第一位
- 优化统计数据显示,使用垂直标签布局
- 修复移动端布局问题,确保按钮在一行显示
- 调整按钮尺寸,适配不同屏幕大小
- 完善试卷分享功能的UI集成
- 修复打印页面移动端按钮布局问题
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-18 21:58:34 +08:00 |
|
|
|
43680cce22
|
优化试卷打印功能并移除打印答案功能
1. 移除打印答案按钮及相关功能,简化界面
2. 优化填空题打印效果,使用答案长度计算下划线宽度
3. 改进试卷头部布局,添加日期和成绩栏
4. 更新考试说明,调整考试时间为60分钟
5. 优化打印样式,使用宋体字并减小间距
6. 完善论述题显示,添加用户类型提示
7. 后端支持同时返回两种论述题题目
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-18 02:39:48 +08:00 |
|
|
|
c4a8b28abe
|
优化模拟考试答案查看页面的显示效果
主要改进:
1. 新增ExamAnswerView页面和样式文件
2. 优化填空题间距,减少过大的垂直边距
3. 紧凑化题型之间的间距,提升页面密度
4. 去掉题型标题的背景色和左侧竖线
5. 为题型标题添加汉字序号(一、二、三等)
6. 去掉选择题表格的边框,简化界面
7. 解决打印时显示"试卷答案"标题的问题
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-18 01:23:10 +08:00 |
|
|
|
e651910e74
|
refactor: 数据库模型优化和答题逻辑重构
主要变更:
- 数据库ID字段统一从 uint 改为 int64,提升数据容量和兼容性
- 重构答题检查逻辑,采用策略模式替代 switch-case
- 新增 PracticeProgress 模型,支持练习进度持久化
- 优化错题本系统,自动记录答题进度和错误历史
- 添加 lib/pq PostgreSQL 驱动依赖
- 移除错题标签管理 API(待后续迁移)
- 前端类型定义同步更新,适配后端模型变更
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-13 03:28:39 +08:00 |
|
|
|
4c06a8acd5
|
feat: 实现完整的考试系统
实现了包含试卷管理、考试答题、AI智能阅卷的完整考试流程。
**后端新增功能**:
- 试卷管理: 创建试卷、获取试卷列表和详情
- 考试流程: 开始考试、提交答案、查询结果
- AI阅卷: 异步阅卷系统,支持简答题和论述题AI评分
- 实时答题: 题目级别的答案保存和加载
- 数据模型: ExamRecord(考试记录)、ExamUserAnswer(用户答案)
**前端新增页面**:
- 考试管理页面: 试卷列表展示,支持开始/继续考试
- 答题页面: 左侧题目列表、右侧答题区,支持实时保存
- 成绩查看页面: 展示详细评分结果和AI评语
**技术亮点**:
- 按题型固定分值配置(总分100分)
- 异步阅卷机制,提交后立即返回
- 答案实时保存,支持断点续答
- AI评分集成,智能评判主观题
- 响应式设计,适配移动端和PC端
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-11 03:55:24 +08:00 |
|
|
|
a62c5b3e62
|
fix: 修复考试题目选项数据缺失问题
- 在GetExam API中使用convertToDTO函数转换题目数据
- 确保选项数据(options)正确解析并返回给前端
- 修复前端ExamOnline渲染选择题时的undefined错误
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-08 21:20:34 +08:00 |
|
|
|
52fff11f07
|
feat: 实现模拟考试功能
## 后端实现
- 添加考试数据模型 (Exam)
- 实现考试生成API (/api/exam/generate)
- 实现获取考试详情API (/api/exam/:id)
- 实现提交考试API (/api/exam/:id/submit)
- 支持按题型随机抽取题目
- AI智能评分(简答题和论述题)
- 自动计算总分和详细评分
## 前端实现
- 首页添加"模拟考试"入口
- 考试准备页:显示考试说明,选择在线/打印模式
- 在线答题页:按题型分组显示,支持论述题二选一
- 试卷打印页:A4排版,支持打印试卷/答案
- 成绩报告页:显示总分、详细评分、错题分析
## 核心特性
- 随机组卷:填空10题、判断10题、单选10题、多选10题、简答2题、论述题2选1
- 智能评分:使用AI评分论述题,给出分数、评语和建议
- 答题进度保存:使用localStorage防止刷新丢失
- 打印优化:A4纸张、黑白打印、合理排版
- 响应式设计:适配移动端、平板和PC端
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-08 20:45:30 +08:00 |
|