feat: 更新考试相关页面,添加刷新功能,修改考试状态显示

- 注:当前代码还存在bug:查看结果暂出现错误。
- 在 SubjectSelectionPage 页面中添加刷新按钮,允许用户手动刷新考试任务列表。
- 修改 UserTaskPage 页面,重构考试任务为答题记录,更新数据结构和状态显示。
- 在 AdminDashboardPage、UserManagePage、UserRecordsPage 等管理页面中添加考试状态显示,使用不同颜色区分状态(不及格、合格、优秀)。
- 在 ResultPage 中显示考试状态,确保用户能够清晰了解考试结果。
- 添加约束,确保单次考试试卷中题目不可重复出现,并记录相关规范。
- 添加评分状态约束,根据得分占比自动计算考试状态,并在结果页面显示。
This commit is contained in:
2025-12-29 20:28:33 +08:00
parent 03eb858749
commit 57101fac37
26 changed files with 480 additions and 216 deletions

View File

@@ -0,0 +1,17 @@
# Proposal: Add No Duplicate Questions Constraint
## Problem
用户发现在单次考试试卷中会出现重复的题目,这违反了考试的基本原则。
## Solution
在 openspec 中添加约束,确保单次考试试卷中题目不可重复出现。
## Impact
- 需要修改 `api/models/examSubject.ts` 中的 `generateQuizQuestions` 方法
- 确保在生成试卷时,已选择的题目不会被重复选择
- 需要在 openspec 中记录此约束
## Tasks
- [ ] 在 openspec 中添加约束规范
- [ ] 修复 examSubject.ts 中数量模式下的题目重复问题
- [ ] 验证修复后的代码逻辑

View File

@@ -0,0 +1,22 @@
## ADDED Requirements
### Requirement: No Duplicate Questions in Single Exam
系统 MUST 确保单次考试试卷中不可重复出现同一道题目。
#### Scenario: Generate exam paper
- **GIVEN** 考试科目配置了题型比例和题目类别比例
- **WHEN** 系统生成考试试卷时
- **THEN** 系统 MUST 确保每道题目在试卷中只出现一次
- **AND** 系统 MUST 在选择题目时过滤掉已选择的题目
#### Scenario: Random question selection
- **GIVEN** 系统需要从题库中随机选择题目
- **WHEN** 已选择题目集合中已包含某道题目
- **THEN** 系统 MUST 不再选择该题目
- **AND** 系统 MUST 继续选择其他未选中的题目
#### Scenario: Insufficient unique questions
- **GIVEN** 题库中满足条件的题目数量少于试卷需要的题目数量
- **WHEN** 系统尝试生成试卷
- **THEN** 系统 MUST 抛出错误提示题库题目不足
- **AND** 系统 MUST 不生成包含重复题目的试卷

View File

@@ -0,0 +1,6 @@
# Tasks: Add No Duplicate Questions Constraint
## Tasks
- [x] 在 openspec 中添加约束规范
- [ ] 修复 examSubject.ts 中数量模式下的题目重复问题
- [ ] 验证修复后的代码逻辑

View File

@@ -0,0 +1,21 @@
# Proposal: Add Scoring Status Constraint
## Problem
用户完成考试后,系统只显示得分,但没有显示考试状态的等级评定。用户需要根据得分占比了解考试是否及格、合格或优秀。
## Solution
在 openspec 中添加评分状态约束,根据得分占比自动计算考试状态:
- 得分占比 < 60%:不及格
- 得分占比 ≥ 60% 且 < 80%:合格
- 得分占比 ≥ 80%:优秀
## Impact
- 需要修改 `api/models/quiz.ts` 添加状态字段和计算逻辑
- 需要修改 `src/pages/ResultPage.tsx` 显示考试状态
- 需要在 openspec 中记录此约束
## Tasks
- [ ] 在 openspec 中添加评分状态约束规范
- [ ] 修改 quiz.ts 模型添加状态字段和计算逻辑
- [ ] 修改 ResultPage.tsx 显示考试状态
- [ ] 修改其他相关页面以显示考试状态

View File

@@ -0,0 +1,29 @@
## ADDED Requirements
### Requirement: Scoring Status Based on Score Percentage
系统 MUST 根据得分占比自动计算考试状态等级。
#### Scenario: Calculate scoring status for failed exam
- **GIVEN** 用户完成考试并获得得分
- **WHEN** 得分占比小于 60%
- **THEN** 系统 MUST 将考试状态标记为"不及格"
- **AND** 系统 MUST 在结果页面显示"不及格"状态
#### Scenario: Calculate scoring status for qualified exam
- **GIVEN** 用户完成考试并获得得分
- **WHEN** 得分占比大于等于 60% 且小于 80%
- **THEN** 系统 MUST 将考试状态标记为"合格"
- **AND** 系统 MUST 在结果页面显示"合格"状态
#### Scenario: Calculate scoring status for excellent exam
- **GIVEN** 用户完成考试并获得得分
- **WHEN** 得分占比大于等于 80%
- **THEN** 系统 MUST 将考试状态标记为"优秀"
- **AND** 系统 MUST 在结果页面显示"优秀"状态
#### Scenario: Display scoring status in result page
- **GIVEN** 用户查看考试结果页面
- **WHEN** 页面加载完成
- **THEN** 系统 MUST 显示考试得分
- **AND** 系统 MUST 显示考试状态(不及格/合格/优秀)
- **AND** 系统 MUST 根据状态使用不同的颜色或样式进行区分

View File

@@ -0,0 +1,7 @@
# Tasks: Add Scoring Status Constraint
## Tasks
- [x] 在 openspec 中添加评分状态约束规范
- [ ] 修改 quiz.ts 模型添加状态字段和计算逻辑
- [ ] 修改 ResultPage.tsx 显示考试状态
- [ ] 修改其他相关页面以显示考试状态