pull/21891/head
ytqh 1 year ago
parent 83e8721c85
commit 71b67ea839

@ -297,96 +297,106 @@ class GenerateAnalysisReportApi(Resource):
data = request.get_json() data = request.get_json()
summary_analysis = data.get('summary_analysis') summary_analysis = data.get('summary_analysis')
school_name = data.get('school_name', '山东单县一中') # Default value if not provided school_name = data.get('school_name', '山东单县一中') # Default value if not provided
html_template = data.get('html_template')
if not summary_analysis: if not summary_analysis:
return {"error": "summary_analysis is required"}, 400 return {"error": "summary_analysis is required"}, 400
# HTML template for the report if not html_template: # default template
html_template = """ html_template = """
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<style> <style>
body { body {
font-family: "SimHei", "Microsoft YaHei", sans-serif; font-family: "SimHei", "Microsoft YaHei", sans-serif;
padding: 20px; padding: 20px;
} }
.title { .title {
text-align: center; text-align: center;
font-size: 24px; font-size: 24px;
margin-bottom: 20px; margin-bottom: 20px;
} }
.subtitle { .subtitle {
text-align: center; text-align: center;
font-size: 18px; font-size: 18px;
color: #666; color: #666;
margin-bottom: 30px; margin-bottom: 30px;
} }
.summary-section { .summary-section {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
margin-bottom: 30px; margin-bottom: 30px;
} }
.summary-item { .summary-item {
margin: 10px 0; margin: 10px 0;
} }
.analysis-section { .analysis-section {
margin-top: 20px; margin-top: 20px;
} }
.category-bar { .category-bar {
display: flex; display: flex;
align-items: center; align-items: center;
margin: 10px 0; margin: 10px 0;
} }
.bar { .bar {
background-color: #e6f3ff; background-color: #e6f3ff;
height: 20px; height: 20px;
margin-right: 10px; margin-right: 10px;
} }
.stats { .stats {
color: #666; color: #666;
} }
</style> .category-item {
</head> margin-bottom: 20px;
<body> }
<h1 class="title">模拟考分析报告</h1> </style>
<div class="subtitle">Analysis of Examination</div> </head>
<body>
<h2 class="title">{{ school_name }}</h2> <h1 class="title">模拟考分析报告</h1>
<div class="subtitle">Analysis of Examination</div>
<div class="summary-section">
<div class="left-summary"> <h2 class="title">{{ school_name }}</h2>
<div class="summary-item">总参考人数:</div>
<div class="summary-item">总平均分:</div> <div class="summary-section">
<div class="summary-item">省内排名:</div> <div class="left-summary">
</div> <div class="summary-item">总参考人数:</div>
<div class="right-summary"> <div class="summary-item">总平均分:</div>
<div class="summary-item">省内总人数:</div> <div class="summary-item">省内排名:</div>
<div class="summary-item">省内平均分:</div> </div>
<div class="summary-item">全国排名:</div> <div class="right-summary">
<div class="summary-item">省内总人数:</div>
<div class="summary-item">省内平均分:</div>
<div class="summary-item">全国排名:</div>
</div>
</div> </div>
</div>
<div class="analysis-section"> <div class="analysis-section">
<h3>题目分析:</h3> <h3>题目分析:</h3>
{% for category in summary_analysis %} {% for category in summary_analysis %}
<div class="category-item"> <div class="category-item">
<div>{{ category.category }}</div> <div>{{ category.category }}</div>
<div class="category-bar"> <div class="category-bar">
<div class="bar" style="width: {{ category.error_count * 2 }}px;"></div> <div class="bar" style="width: 500px; position: relative; background-color: #e1e9f3;">
<span class="stats"> <div style="position: absolute; left: 0; top: 0; height: 100%; width: {{ (1 - category.correct_rate) * 100 }}%; background-color: #7eb0e3; display: flex; align-items: center; justify-content: center;">
错误数{{ category.error_count }} / 总数{{ category.total_count }} <span style="color: #333; font-size: 14px;">做错{{ category.error_count }}</span>
失分比{{ (1 - category.correct_rate) * 100 }}% </div>
</span> <div style="position: absolute; right: 10px; top: 0; height: 100%; display: flex; align-items: center;">
<span style="color: #666;">总考生数{{ category.total_count }}</span>
</div>
<div style="position: absolute; right: -80px; top: 0; height: 100%; display: flex; align-items: center;">
<span style="color: #666;">失分比{{ ((1 - category.correct_rate) * 100)|round }}%</span>
</div>
</div>
</div>
</div> </div>
{% endfor %}
</div> </div>
{% endfor %} </body>
</div> </html>
</body> """
</html>
"""
# Create the HTML with the template # Create the HTML with the template
template = Template(html_template) template = Template(html_template)

Loading…
Cancel
Save