File size: 10,359 Bytes
e3e29b3
538a6ec
6a6a629
 
 
 
 
8d07d4a
6a6a629
 
 
 
8d07d4a
6a6a629
4ce5c9e
6a6a629
d75abc7
6a6a629
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4ce5c9e
6a6a629
 
 
 
 
 
 
4ce5c9e
6a6a629
 
 
 
 
 
 
 
4ce5c9e
6a6a629
 
 
 
 
 
 
 
4ce5c9e
6a6a629
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4ce5c9e
6a6a629
 
 
 
 
 
 
 
4ce5c9e
6a6a629
 
 
 
 
 
 
8d07d4a
6a6a629
 
 
 
 
 
 
4ce5c9e
6a6a629
 
 
 
 
 
4ce5c9e
6a6a629
 
 
 
 
 
 
 
 
5702d7d
6a6a629
 
 
 
 
 
 
 
 
 
4ce5c9e
6a6a629
 
 
 
 
 
4ce5c9e
4ac9d4a
6a6a629
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8d07d4a
6a6a629
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
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()