xinli/z_Project change/进度汇总/20-自定义问卷功能增强开发记录.md

210 lines
6.3 KiB
Markdown
Raw Normal View History

2025-11-12 15:25:47 +08:00
# 自定义问卷功能增强开发记录
## 📋 任务概述
**开发日期**: 2025-01-XX
**模块名称**: 自定义问卷功能增强
**任务类型**: 功能增强与完善
---
## 🎯 需求说明
### 1. 菜单统一
- ✅ 删除"问卷管理"菜单,统一使用"自定义问卷"
### 2. 问卷测评功能
- 自定义问卷要像量表一样可以分配给用户进行测量
- 管理员可以设置对应的得分
- 在解释配置中可以设定对应的分数进行说明测量之后的结果
### 3. 题目类型支持
- 支持多种题目类型:单选、多选、判断、填空、排序、计算、简答、问答、作文
### 4. 主观题评分
- 管理员能汇总主观题进行评分
### 5. 成绩排名
- 管理员能查看所有问卷人员以及对应的分数和排名
- 排名从上往下是第一名往下排队
---
## ✅ 已完成工作
### 1. 菜单统一 ✅
- ✅ 修改SQL脚本将"问卷管理"菜单改为"自定义问卷"
- ✅ 修改前端路由,将"问卷管理"改为"自定义问卷"
- ✅ 更新菜单图标为`edit`
**修改文件**:
- `sql/psychological_system_complete.sql` - 菜单配置SQL
- `ruoyi-ui/src/router/index.js` - 前端路由配置
### 2. 数据库表结构增强 ✅
- ✅ 创建问卷答案详情表 `psy_questionnaire_answer_detail`
- 存储每道题的答案
- 支持客观题和主观题
- 支持管理员评分功能
- ✅ 修改解释配置表 `psy_result_interpretation`
- 添加 `questionnaire_id` 字段,支持问卷解释配置
- 添加索引和外键约束
**新增表结构**:
```sql
-- 问卷答案详情表
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: 评分时间
```
**修改表结构**:
```sql
-- 解释配置表
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和分数范围匹配解释
- 支持多个分数区间配置
---
## ⚠️ 注意事项
1. 问卷测评功能要参考量表测评的实现方式
2. 题目类型要支持所有9种类型
3. 主观题评分要有明确的权限控制
4. 排名计算要考虑相同分数的情况
5. 解释配置要同时支持量表和问卷
---
## 📌 下一步计划
1. 创建问卷答案详情实体类和Mapper
2. 实现问卷测评基础功能(开始、答题、提交)
3. 实现多种题目类型的答题界面
4. 实现主观题评分功能
5. 实现成绩排名功能
6. 完善解释配置功能
---
**创建时间**: 2025-01-XX
**最后更新**: 2025-01-XX