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''' + + + + + {student_name} - 测评已完成 + + + +
+
+

测评已完成!

+ +
+
+ 姓名: + {student_name} +
+
+ 学校: + {school} +
+
+ 年级: + {grade} +
+
+ 完成时间: + {completed_at} +
+
+ +
+
{total_score} 分
+
本次测评得分
+
+ +
+ 恭喜您完成了本次学科能力测评!
+ 系统正在为您生成详细的个性化报告,请稍后查看。 +
+ +
+ 返回首页 + +
+ + + + +
+ +''' + if __name__ == "__main__": import uvicorn uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True) \ No newline at end of file