diff --git a/main.py b/main.py index c7f2070..0b521be 100644 --- a/main.py +++ b/main.py @@ -471,7 +471,7 @@ async def quiz_page(session_id: str, request: Request): cursor = conn.cursor() cursor.execute(''' - SELECT s.*, qs.questions_config, qs.status + SELECT s.*, qs.questions_config, qs.status, qs.total_score, qs.completed_at FROM students s JOIN quiz_sessions qs ON s.id = qs.student_id WHERE qs.id = ? @@ -483,8 +483,13 @@ async def quiz_page(session_id: str, request: Request): if not session_data: raise HTTPException(status_code=404, detail="Session not found") - # 生成答题页面HTML - html_content = generate_quiz_page(session_data, session_id) + # 检查会话状态 + if session_data['status'] in ['completed', 'can_regenerate']: + # 显示完成状态页面 + html_content = generate_completion_page(session_data, session_id) + else: + # 显示答题页面 + html_content = generate_quiz_page(session_data, session_id) return Response(content=html_content, media_type="text/html; charset=utf-8") @@ -1095,6 +1100,263 @@ async def report_callback(request: ReportCallbackRequest): print(f"❌ 回调处理失败: {e}") raise HTTPException(status_code=500, detail=f"回调处理失败: {str(e)}") +def generate_completion_page(session_data: sqlite3.Row, session_id: str) -> str: + """生成答题完成页面HTML""" + student_name = session_data['name'] + school = session_data['school'] + grade = session_data['grade'] + total_score = session_data['total_score'] or 0 + completed_at = session_data['completed_at'] or '未知时间' + + return f''' + +
+ + +