histlearn commited on
Commit
9048432
·
verified ·
1 Parent(s): 65122e9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +8 -23
app.py CHANGED
@@ -148,11 +148,6 @@ class ReportGenerator:
148
  ].values.tolist()
149
  basic_stats['top_performers'] = top_students
150
 
151
- efficient_students = self.data.nlargest(3, 'Eficiência')[
152
- ['Nome do Aluno', 'Eficiência', 'Acertos Absolutos']
153
- ].values.tolist()
154
- basic_stats['most_efficient'] = efficient_students
155
-
156
  return basic_stats
157
 
158
  def generate_graphs(self) -> List[plt.Figure]:
@@ -163,7 +158,7 @@ class ReportGenerator:
163
  plt.rcParams['font.size'] = 10
164
  plt.rcParams['axes.titlesize'] = 12
165
 
166
- # 1. Distribuição por nível (mantido como está)
167
  plt.figure()
168
  nivel_counts = self.data['Nível'].value_counts()
169
  colors = {'Avançado': '#2ecc71', 'Intermediário': '#f1c40f', 'Necessita Atenção': '#e74c3c'}
@@ -281,9 +276,6 @@ class ReportGenerator:
281
  - Avançado: 10 ou mais acertos - Excelente domínio do conteúdo
282
  - Intermediário: 5 a 9 acertos - Bom entendimento, com espaço para melhorias
283
  - Necessita Atenção: Menos de 5 acertos - Requer suporte adicional
284
-
285
- A eficiência é medida em acertos por hora, permitindo identificar alunos que
286
- conseguem bons resultados com uso eficiente do tempo.
287
  """
288
  pdf.multi_cell(0, 7, intro_text)
289
 
@@ -322,11 +314,6 @@ class ReportGenerator:
322
  for aluno, acertos in self.stats['top_performers']:
323
  pdf.cell(0, 7, f"- {aluno}: {acertos:.0f} acertos", 0, 1)
324
 
325
- pdf.ln(3)
326
- pdf.cell(0, 7, "Maior Eficiência:", 0, 1)
327
- for aluno, eficiencia, acertos in self.stats['most_efficient']:
328
- pdf.cell(0, 7, f"- {aluno}: {eficiencia:.1f} acertos/hora ({acertos:.0f} acertos totais)", 0, 1)
329
-
330
  # Gráficos e Análises
331
  for i, graph in enumerate(graphs):
332
  pdf.add_page()
@@ -350,14 +337,14 @@ class ReportGenerator:
350
  """)
351
 
352
  elif i == 1:
353
- pdf.cell(0, 10, 'Top 10 Alunos por Acertos', 0, 1, 'L', True)
354
  pdf.set_font('Arial', '', 11)
355
  pdf.multi_cell(0, 6, """
356
- Destaca os dez alunos com maior número de acertos absolutos.
357
  Este ranking permite:
358
- - Identificar exemplos de sucesso na turma
359
- - Reconhecer diferentes níveis de excelência
360
- - Estabelecer metas realistas para os demais alunos
361
  """)
362
 
363
  elif i == 2:
@@ -397,8 +384,7 @@ class ReportGenerator:
397
  ('Nome do Aluno', 80),
398
  ('Acertos', 25),
399
  ('Tarefas', 25),
400
- ('Tempo Total', 35),
401
- ('Eficiência', 25)
402
  ]
403
 
404
  # Cabeçalho da tabela
@@ -418,7 +404,6 @@ class ReportGenerator:
418
  pdf.cell(25, 7, f"{row['Acertos Absolutos']:.0f}", 1, 0, 'C')
419
  pdf.cell(25, 7, str(row['Tarefas Completadas']), 1, 0, 'C')
420
  pdf.cell(35, 7, tempo_str, 1, 0, 'C')
421
- pdf.cell(25, 7, f"{float(row['Eficiência']):.1f}", 1, 0, 'C')
422
  pdf.ln()
423
 
424
  # Recomendações Finais
@@ -441,7 +426,7 @@ class ReportGenerator:
441
  2. Melhorias no Processo:
442
  - Acompanhamento individualizado dos alunos com baixo desempenho
443
  - Feedback regular sobre o progresso
444
- - Atividades extras para alunos com alta eficiência
445
 
446
  3. Próximos Passos:
447
  - Compartilhar resultados individuais
 
148
  ].values.tolist()
149
  basic_stats['top_performers'] = top_students
150
 
 
 
 
 
 
151
  return basic_stats
152
 
153
  def generate_graphs(self) -> List[plt.Figure]:
 
158
  plt.rcParams['font.size'] = 10
159
  plt.rcParams['axes.titlesize'] = 12
160
 
161
+ # 1. Distribuição por nível
162
  plt.figure()
163
  nivel_counts = self.data['Nível'].value_counts()
164
  colors = {'Avançado': '#2ecc71', 'Intermediário': '#f1c40f', 'Necessita Atenção': '#e74c3c'}
 
276
  - Avançado: 10 ou mais acertos - Excelente domínio do conteúdo
277
  - Intermediário: 5 a 9 acertos - Bom entendimento, com espaço para melhorias
278
  - Necessita Atenção: Menos de 5 acertos - Requer suporte adicional
 
 
 
279
  """
280
  pdf.multi_cell(0, 7, intro_text)
281
 
 
314
  for aluno, acertos in self.stats['top_performers']:
315
  pdf.cell(0, 7, f"- {aluno}: {acertos:.0f} acertos", 0, 1)
316
 
 
 
 
 
 
317
  # Gráficos e Análises
318
  for i, graph in enumerate(graphs):
319
  pdf.add_page()
 
337
  """)
338
 
339
  elif i == 1:
340
+ pdf.cell(0, 10, 'Ranking Completo dos Alunos', 0, 1, 'L', True)
341
  pdf.set_font('Arial', '', 11)
342
  pdf.multi_cell(0, 6, """
343
+ Apresenta o ranking completo dos alunos por número de acertos.
344
  Este ranking permite:
345
+ - Visualizar o desempenho individual de cada aluno
346
+ - Identificar diferentes níveis de aproveitamento
347
+ - Estabelecer metas realistas para melhorias
348
  """)
349
 
350
  elif i == 2:
 
384
  ('Nome do Aluno', 80),
385
  ('Acertos', 25),
386
  ('Tarefas', 25),
387
+ ('Tempo Total', 35)
 
388
  ]
389
 
390
  # Cabeçalho da tabela
 
404
  pdf.cell(25, 7, f"{row['Acertos Absolutos']:.0f}", 1, 0, 'C')
405
  pdf.cell(25, 7, str(row['Tarefas Completadas']), 1, 0, 'C')
406
  pdf.cell(35, 7, tempo_str, 1, 0, 'C')
 
407
  pdf.ln()
408
 
409
  # Recomendações Finais
 
426
  2. Melhorias no Processo:
427
  - Acompanhamento individualizado dos alunos com baixo desempenho
428
  - Feedback regular sobre o progresso
429
+ - Atividades extras para alunos com bom desempenho
430
 
431
  3. Próximos Passos:
432
  - Compartilhar resultados individuais