Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -476,33 +476,41 @@ class ReportGenerator:
|
|
476 |
raise
|
477 |
|
478 |
def _add_insights_section(self, pdf: FPDF) -> None:
|
479 |
-
"""Adiciona uma nova seção de insights principais."""
|
480 |
pdf.set_font('Arial', 'B', 14)
|
481 |
pdf.set_fill_color(240, 240, 240)
|
482 |
pdf.cell(0, 10, 'Insights Principais', 0, 1, 'L', True)
|
483 |
pdf.ln(5)
|
484 |
-
|
485 |
pdf.set_font('Arial', '', 11)
|
486 |
-
|
487 |
# Calcular métricas avançadas
|
488 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
489 |
alunos_eficientes = self.data[
|
490 |
-
(self.data['Acertos Absolutos'] / self.data['Tarefas Completadas'] > taxa_aproveitamento) &
|
491 |
-
(pd.to_timedelta(self.data['Total Tempo']).dt.total_seconds() <
|
492 |
-
pd.to_timedelta(self.data['Total Tempo']).dt.total_seconds().mean())
|
493 |
]
|
494 |
-
|
495 |
insights_text = f"""
|
496 |
Análise de Eficiência:
|
497 |
-
- Taxa média de aproveitamento da turma: {taxa_aproveitamento:.
|
498 |
- {len(alunos_eficientes)} alunos demonstram alta eficiência (acertos acima da média e tempo abaixo da média)
|
499 |
- {len(self.data[self.data['Acertos Absolutos'] == 0])} alunos não registraram acertos
|
500 |
-
|
501 |
Padrões Identificados:
|
502 |
- Alunos que completaram mais tarefas tendem a ter melhor desempenho
|
503 |
- Tempo dedicado não mostra correlação forte com número de acertos
|
504 |
- {(len(self.data[self.data['Tarefas Completadas'] < 5]) / len(self.data) * 100):.1f}% dos alunos completaram menos de 5 tarefas
|
505 |
-
|
506 |
Recomendações Baseadas em Dados:
|
507 |
- Focar em aumentar o número de tarefas completadas
|
508 |
- Identificar motivos para baixa participação em alguns alunos
|
|
|
476 |
raise
|
477 |
|
478 |
def _add_insights_section(self, pdf: FPDF) -> None:
|
479 |
+
"""Adiciona uma nova seção de insights principais com taxa de aproveitamento corrigida."""
|
480 |
pdf.set_font('Arial', 'B', 14)
|
481 |
pdf.set_fill_color(240, 240, 240)
|
482 |
pdf.cell(0, 10, 'Insights Principais', 0, 1, 'L', True)
|
483 |
pdf.ln(5)
|
484 |
+
|
485 |
pdf.set_font('Arial', '', 11)
|
486 |
+
|
487 |
# Calcular métricas avançadas
|
488 |
+
questoes_por_tarefa = 4 # Média de questões por tarefa
|
489 |
+
total_questoes = self.data['Tarefas Completadas'].sum() * questoes_por_tarefa
|
490 |
+
total_acertos = self.data['Acertos Absolutos'].sum()
|
491 |
+
|
492 |
+
# Calcular taxa de aproveitamento correta
|
493 |
+
taxa_aproveitamento = (total_acertos / total_questoes * 100) if total_questoes > 0 else 0
|
494 |
+
taxa_aproveitamento = min(taxa_aproveitamento, 100) # Limitar a 100%
|
495 |
+
|
496 |
+
# Identificar alunos eficientes
|
497 |
+
tempo_medio = pd.to_timedelta(self.data['Total Tempo']).dt.total_seconds().mean()
|
498 |
alunos_eficientes = self.data[
|
499 |
+
(self.data['Acertos Absolutos'] / (self.data['Tarefas Completadas'] * questoes_por_tarefa) > taxa_aproveitamento/100) &
|
500 |
+
(pd.to_timedelta(self.data['Total Tempo']).dt.total_seconds() < tempo_medio)
|
|
|
501 |
]
|
502 |
+
|
503 |
insights_text = f"""
|
504 |
Análise de Eficiência:
|
505 |
+
- Taxa média de aproveitamento da turma: {taxa_aproveitamento:.1f}%
|
506 |
- {len(alunos_eficientes)} alunos demonstram alta eficiência (acertos acima da média e tempo abaixo da média)
|
507 |
- {len(self.data[self.data['Acertos Absolutos'] == 0])} alunos não registraram acertos
|
508 |
+
|
509 |
Padrões Identificados:
|
510 |
- Alunos que completaram mais tarefas tendem a ter melhor desempenho
|
511 |
- Tempo dedicado não mostra correlação forte com número de acertos
|
512 |
- {(len(self.data[self.data['Tarefas Completadas'] < 5]) / len(self.data) * 100):.1f}% dos alunos completaram menos de 5 tarefas
|
513 |
+
|
514 |
Recomendações Baseadas em Dados:
|
515 |
- Focar em aumentar o número de tarefas completadas
|
516 |
- Identificar motivos para baixa participação em alguns alunos
|