P2全部完成: 尝试限制/预约时段/题目回顾/随机排序

后端:
- assessment-template entity: attemptLimit/scheduledStart/End/reviewMode/shuffleQuestions
- DTO 更新: 新增 P2 字段验证
- startSession: 尝试次数检查、预约时段检查、题目随机排序
- getSessionState: reviewMode 控制答案可见性
- 新增 GET /assessment/:id/review 回顾端点

前端:
- AssessmentTemplateManager: 新增尝试次数/答题回顾/题目排序/预约时段配置
- AssessmentView: 答题回顾按钮(完成页)+提交确认弹窗+标记回头功能
- types.ts: 新增 P2 字段类型
- assessmentService: 新增 getReview 方法
- 进度导航点: 可视化题序+标记状态

测试 20项全部通过 + 系统测试 142项全部通过 

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Developer
2026-06-09 14:57:32 +08:00
parent 9fd503b42b
commit 46a10ba091
8 changed files with 450 additions and 5 deletions
@@ -119,6 +119,14 @@ export class AssessmentController {
return this.assessmentService.getSessionState(sessionId, userId);
}
@Get(':id/review')
@ApiOperation({ summary: 'Get review data for a completed assessment (shows correct answers)' })
async getReview(@Request() req: any, @Param('id') sessionId: string) {
const { id: userId } = req.user;
this.logger.log(`getReview: user=${userId}, session=${sessionId}`);
return this.assessmentService.getSessionReview(sessionId, userId);
}
@Delete(':id')
@ApiOperation({ summary: 'Delete an assessment session' })
async deleteSession(@Request() req: any, @Param('id') sessionId: string) {