forked from hangshuo652/aurak
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:
@@ -1004,6 +1004,26 @@ export const AssessmentView: React.FC<AssessmentViewProps> = ({
|
||||
>
|
||||
{t('exportExcel')}
|
||||
</button>
|
||||
{/* P2: Review button (visible when reviewMode enabled) */}
|
||||
{state?.templateJson?.reviewMode && state.templateJson.reviewMode !== 'none' && (
|
||||
<button
|
||||
onClick={async () => {
|
||||
if (!session) return;
|
||||
try {
|
||||
const reviewData = await assessmentService.getReview(session.id);
|
||||
const reviewText = (reviewData.questions || []).map((q: any, i: number) =>
|
||||
`第${i + 1}题: ${(q.questionText || '').substring(0, 80)}\n 正确答案: ${q.correctAnswer || '见解析'}\n 解析: ${q.judgment || '无'}`
|
||||
).join('\n\n');
|
||||
alert(`📋 答题回顾\n\n${reviewText || '暂无回顾数据'}`);
|
||||
} catch (err: any) {
|
||||
setError(err.message || '获取回顾失败');
|
||||
}
|
||||
}}
|
||||
className="px-6 py-4 bg-emerald-50 border-2 border-emerald-200 text-emerald-700 rounded-2xl font-bold hover:bg-emerald-100 transition-all active:scale-[0.98]"
|
||||
>
|
||||
📋 答题回顾
|
||||
</button>
|
||||
)}
|
||||
<button
|
||||
onClick={async () => {
|
||||
if (!session) return;
|
||||
|
||||
Reference in New Issue
Block a user