xinli/z_Project change/进度汇总/20-自定义问卷功能增强开发记录.md
2025-11-12 15:25:47 +08:00

210 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 自定义问卷功能增强开发记录
## 📋 任务概述
**开发日期**: 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