6.3 KiB
6.3 KiB
自定义问卷功能增强开发记录
📋 任务概述
开发日期: 2025-01-XX
模块名称: 自定义问卷功能增强
任务类型: 功能增强与完善
🎯 需求说明
1. 菜单统一
- ✅ 删除"问卷管理"菜单,统一使用"自定义问卷"
2. 问卷测评功能
- 自定义问卷要像量表一样可以分配给用户进行测量
- 管理员可以设置对应的得分
- 在解释配置中可以设定对应的分数进行说明测量之后的结果
3. 题目类型支持
- 支持多种题目类型:单选、多选、判断、填空、排序、计算、简答、问答、作文
4. 主观题评分
- 管理员能汇总主观题进行评分
5. 成绩排名
- 管理员能查看所有问卷人员以及对应的分数和排名
- 排名从上往下是第一名往下排队
✅ 已完成工作
1. 菜单统一 ✅
- ✅ 修改SQL脚本,将"问卷管理"菜单改为"自定义问卷"
- ✅ 修改前端路由,将"问卷管理"改为"自定义问卷"
- ✅ 更新菜单图标为
edit
修改文件:
sql/psychological_system_complete.sql- 菜单配置SQLruoyi-ui/src/router/index.js- 前端路由配置
2. 数据库表结构增强 ✅
- ✅ 创建问卷答案详情表
psy_questionnaire_answer_detail- 存储每道题的答案
- 支持客观题和主观题
- 支持管理员评分功能
- ✅ 修改解释配置表
psy_result_interpretation- 添加
questionnaire_id字段,支持问卷解释配置 - 添加索引和外键约束
- 添加
新增表结构:
-- 问卷答案详情表
psy_questionnaire_answer_detail
- detail_id: 详情ID
- answer_id: 答案ID(关联问卷答题记录)
- item_id: 题目ID
- option_id: 选项ID(单选/判断)
- option_ids: 选项ID列表(多选)
- answer_text: 文本答案(填空、简答、问答、作文)
- answer_score: 答案得分
- is_subjective: 是否主观题
- is_scored: 是否已评分
- scored_by: 评分人
- scored_time: 评分时间
修改表结构:
-- 解释配置表
psy_result_interpretation
- questionnaire_id: 问卷ID(新增)
🚧 待完成工作
1. 问卷测评功能(类似量表测评)
- 创建问卷测评实体类
PsyQuestionnaireAnswerDetail - 创建问卷测评Mapper和Service
- 创建问卷测评Controller
- 开始问卷测评接口
- 获取问卷题目接口
- 保存答案接口
- 提交问卷接口
- 自动计分服务(客观题)
- 创建问卷测评前端页面
- 问卷列表页面
- 开始问卷页面
- 答题页面(支持多种题型)
- 提交问卷页面
2. 多种题目类型支持
- 题目类型枚举定义
- radio: 单选
- checkbox: 多选
- boolean: 判断
- input: 填空
- sort: 排序
- calculate: 计算
- text: 简答
- textarea: 问答
- essay: 作文
- 题目管理页面增强
- 题目类型选择器
- 不同题型的编辑界面
- 选项配置(单选、多选、判断)
- 文本答案配置(填空、简答、问答、作文)
3. 主观题评分功能
- 主观题评分管理页面
- 待评分题目列表
- 评分界面
- 批量评分功能
- 主观题评分接口
- 获取待评分题目接口
- 提交评分接口
- 批量评分接口
4. 成绩排名功能
- 成绩排名查询接口
- 按问卷ID查询排名
- 按用户ID查询排名
- 排名计算逻辑(从高到低)
- 成绩排名展示页面
- 排名列表(表格)
- 排名统计图表
- 导出排名数据
5. 解释配置增强
- 解释配置页面增强
- 支持选择问卷
- 问卷解释配置界面
- 解释配置查询接口
- 按问卷ID查询解释
- 按分数范围匹配解释
📁 涉及文件
后端文件
ry-news-system/src/main/java/com/ddnai/system/domain/psychology/PsyQuestionnaireAnswerDetail.java(待创建)ry-news-system/src/main/java/com/ddnai/system/mapper/psychology/PsyQuestionnaireAnswerDetailMapper.java(待创建)ry-news-system/src/main/java/com/ddnai/system/service/psychology/IPsyQuestionnaireAnswerDetailService.java(待创建)ry-news-system/src/main/java/com/ddnai/system/service/impl/psychology/PsyQuestionnaireAnswerDetailServiceImpl.java(待创建)ry-news-admin/src/main/java/com/ddnai/web/controller/psychology/PsyQuestionnaireAnswerController.java(待创建)ry-news-system/src/main/java/com/ddnai/system/domain/psychology/PsyResultInterpretation.java(待修改)ry-news-system/src/main/resources/mapper/system/psychology/PsyQuestionnaireAnswerDetailMapper.xml(待创建)
前端文件
ruoyi-ui/src/views/psychology/questionnaire/answer/index.vue(待创建)ruoyi-ui/src/views/psychology/questionnaire/answer/taking.vue(待创建)ruoyi-ui/src/views/psychology/questionnaire/score/index.vue(待创建)ruoyi-ui/src/views/psychology/questionnaire/rank/index.vue(待创建)ruoyi-ui/src/api/psychology/questionnaire.js(待修改)
数据库文件
sql/psychological_system_complete.sql(已修改)
📝 技术要点
1. 题目类型判断
- 客观题:radio、checkbox、boolean、input(有标准答案)、sort、calculate
- 主观题:text、textarea、essay、input(无标准答案)
2. 自动计分逻辑
- 客观题:提交时自动计算得分
- 主观题:需要管理员手动评分
3. 排名计算
- 按总分从高到低排序
- 相同分数按提交时间排序(先提交的排名靠前)
4. 解释配置匹配
- 根据问卷ID和分数范围匹配解释
- 支持多个分数区间配置
⚠️ 注意事项
- 问卷测评功能要参考量表测评的实现方式
- 题目类型要支持所有9种类型
- 主观题评分要有明确的权限控制
- 排名计算要考虑相同分数的情况
- 解释配置要同时支持量表和问卷
📌 下一步计划
- 创建问卷答案详情实体类和Mapper
- 实现问卷测评基础功能(开始、答题、提交)
- 实现多种题目类型的答题界面
- 实现主观题评分功能
- 实现成绩排名功能
- 完善解释配置功能
创建时间: 2025-01-XX
最后更新: 2025-01-XX