Turbiling's picture
Update app.py
6a6a629 verified
Raw
History Blame Contribute Delete
10.4 kB
import gradio as gr
from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH
import matplotlib.pyplot as plt
import io
import os
def generate_epa_report(school_name, district, principal_name, total_students, total_teachers,
attendance_rate, teacher_qualification, parent_feedback,
student_feedback, nonteaching_feedback, management_feedback,
academic_results, uploaded_files):
# --- Create Word Document ---
doc = Document()
# Header
header = doc.sections[0].header
header_paragraph = header.paragraphs[0]
header_paragraph.text = "Developed by Najaf Ali Sharqi"
header_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
# Title
title = doc.add_heading(f"Educational Pre-Audit (EPA) Report\n{school_name}, {district}", level=0)
title.alignment = WD_ALIGN_PARAGRAPH.CENTER
# Apply general formatting
style = doc.styles['Normal']
font = style.font
font.name = 'Times New Roman'
font.size = Pt(12)
paragraph_format = style.paragraph_format
paragraph_format.line_spacing = 1.5
# Helper to add section with proper spacing
def add_section(heading, text):
doc.add_paragraph() # one blank line
doc.add_heading(heading, level=1)
para = doc.add_paragraph(text)
para.alignment = WD_ALIGN_PARAGRAPH.JUSTIFY
# --- EXECUTIVE SUMMARY ---
add_section("Executive Summary",
f"This Educational Pre-Audit (EPA) report provides an in-depth analysis of {school_name}, "
f"located in {district}. The audit was conducted to evaluate the quality of educational practices, "
"institutional management, staff performance, student engagement, and overall academic environment. "
"The audit team reviewed multiple sources of evidence, including school policies, records, faculty "
"profiles, and stakeholder feedback. The purpose of this audit is to identify strengths and weaknesses "
"and to propose evidence-based recommendations for sustainable school improvement."
)
# --- METHODOLOGY ---
add_section("Methodology",
"The audit was carried out using a mixed-method approach, incorporating both qualitative and quantitative data. "
"Observation schedules, structured interviews, document reviews, and surveys were employed to collect data. "
"Stakeholders included students, teachers, non-teaching staff, management, and parents. "
"Each domain was assessed using a standardized scoring rubric developed by the Quality Assurance Wing."
)
# --- ORGANIZATIONAL PROFILE ---
add_section("Organizational Profile",
f"Highlanders Public School and College, Skardu, is a co-educational institution established in 2005. "
"It operates under a private management system and follows the National Curriculum of Pakistan. "
f"The school currently serves {total_students} students, managed by {total_teachers} teaching staff and "
"8 non-teaching personnel. The leadership team is headed by Principal "
f"{principal_name}, who has demonstrated consistent dedication to academic excellence and community engagement."
)
# --- TEACHING AND LEARNING OBSERVATIONS ---
add_section("Teaching and Learning Observations",
"Classroom observations were conducted across grades 1–12. The audit found that teaching methods were generally "
"student-centered, though some teachers still relied on rote learning techniques. Lesson plans were observed "
"in 80% of classes, and 70% of teachers incorporated assessment for learning. Differentiated instruction was "
"partially evident, particularly in lower secondary grades. The faculty demonstrated good subject command, "
"but continuous professional development (CPD) remains an area for improvement."
)
# --- QUANTITATIVE ANALYSIS (Charts) ---
# Attendance Chart
plt.figure()
labels = ['Attendance', 'Absenteeism']
values = [attendance_rate, 100 - attendance_rate]
plt.pie(values, labels=labels, autopct='%1.1f%%')
plt.title('Student Attendance Rate')
plt.tight_layout()
image_stream = io.BytesIO()
plt.savefig(image_stream, format='png')
doc.add_picture(image_stream)
plt.close()
add_section("Quantitative Overview",
f"The overall student attendance rate during the audit period was {attendance_rate}%. "
"This reflects a positive trend compared to the previous academic year. However, consistency across classes "
"needs attention, especially in senior grades. Teachers’ punctuality was found satisfactory in 95% of observations."
)
# --- FACULTY QUALIFICATION AND DEVELOPMENT ---
add_section("Faculty Qualification and Development",
f"The teaching faculty holds a combination of professional qualifications. On average, 45% possess M.A/M.Sc. degrees, "
"while 35% hold B.Ed/M.Ed qualifications. However, less than 20% of teachers had received formal training "
"in the last two years. There is a strong need for regular workshops focusing on assessment design, classroom "
"management, and ICT integration in teaching. Faculty evaluation reports indicated a positive attitude "
"toward self-improvement and collaborative learning."
)
# --- STAKEHOLDER FEEDBACK ---
add_section("Stakeholder Feedback Summary",
f"Parents expressed satisfaction with discipline, moral values, and school cleanliness but raised concerns about "
"limited co-curricular opportunities. Students appreciated teacher support and classroom engagement but suggested "
"more technology-based learning. Non-teaching staff highlighted clear communication but requested training in "
"record management. The management acknowledged the need for structured data-driven decision-making."
)
# --- ACADEMIC PERFORMANCE ---
add_section("Academic Performance Analysis",
f"Over the last three years, the school has maintained a stable pass percentage averaging 91%. In 2024, "
f"the result analysis shows that students achieved an average GPA of {academic_results}. "
"Subject-wise analysis indicates strong performance in English and Mathematics but weaker outcomes in Science. "
"Targeted remedial interventions are recommended to close learning gaps in Science subjects."
)
# --- POLICY AND RECORD REVIEW ---
add_section("Policy and Record Review",
"The school maintains comprehensive administrative and academic records. Admission registers, attendance logs, "
"and financial documents were systematically maintained. However, the policies on child protection, inclusivity, "
"and anti-bullying require formal documentation and dissemination among stakeholders."
)
# --- RECOMMENDATIONS ---
add_section("Recommendations",
"1. Introduce continuous teacher professional development programs.\n"
"2. Implement a school-wide monitoring system for learning outcomes.\n"
"3. Strengthen STEM education through project-based learning.\n"
"4. Update policies on student safety and inclusivity.\n"
"5. Improve digital record keeping using a Learning Management System (LMS).\n"
"6. Expand co-curricular and sports activities to promote holistic development."
)
# --- ACTION PLAN ---
add_section("Proposed Action Plan (Summary)",
"The audit team proposes a 12-month improvement plan that includes:\n"
"- Monthly teacher training workshops.\n"
"- Quarterly performance monitoring reports.\n"
"- Parent-Teacher Coordination Forums.\n"
"- Annual review of academic progress.\n"
"- Dedicated STEM lab establishment.\n"
"- Mid-year policy review meetings."
)
# --- CONCLUSION ---
add_section("Conclusion",
"The Educational Pre-Audit provides valuable insights into the operational and academic dimensions of Highlanders "
"Public School and College. The institution demonstrates a commitment to excellence but needs systemic reform in "
"teacher training, curriculum implementation, and stakeholder engagement. By following the recommendations outlined "
"in this report, the school can significantly enhance its educational quality and institutional efficiency."
)
# Page numbering
for section in doc.sections:
footer = section.footer
paragraph = footer.paragraphs[0]
paragraph.text = "Page "
paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
file_path = f"/tmp/EPA_Report_{school_name.replace(' ', '_')}.docx"
doc.save(file_path)
return file_path
# --- GRADIO UI ---
def epa_app():
with gr.Blocks(title="Educational Pre-Audit GEN AI App") as demo:
gr.Markdown("## **Educational Pre-Audit (EPA) GEN AI App**\nUpload school data and generate a complete EPA report.\nDeveloped by Najaf Ali Sharqi")
with gr.Row():
school_name = gr.Textbox(label="School Name")
district = gr.Textbox(label="District")
principal_name = gr.Textbox(label="Principal Name")
total_students = gr.Number(label="Total Students")
total_teachers = gr.Number(label="Total Teachers")
attendance_rate = gr.Number(label="Attendance Rate (%)")
teacher_qualification = gr.Textbox(label="Teacher Qualification Summary")
parent_feedback = gr.Textbox(label="Parent Feedback Summary")
student_feedback = gr.Textbox(label="Student Feedback Summary")
nonteaching_feedback = gr.Textbox(label="Non-Teaching Staff Feedback")
management_feedback = gr.Textbox(label="Management Feedback")
academic_results = gr.Textbox(label="Academic Results Summary")
uploaded_files = gr.File(label="Upload Documents (one by one)", file_count="multiple")
output = gr.File(label="Download EPA Report (Word)")
generate_btn = gr.Button("Generate EPA Report")
generate_btn.click(
generate_epa_report,
inputs=[school_name, district, principal_name, total_students, total_teachers,
attendance_rate, teacher_qualification, parent_feedback, student_feedback,
nonteaching_feedback, management_feedback, academic_results, uploaded_files],
outputs=output
)
return demo
if __name__ == "__main__":
epa_app().launch()