danielraynaud commited on
Commit
8493c2f
·
verified ·
1 Parent(s): 8ad5fda

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +53 -0
app.py CHANGED
@@ -29,6 +29,59 @@ def main():
29
 
30
  if __name__ == "__main__":
31
  main()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  from performance_system import PerformanceAnalyzer, StudyMaterialGenerator, ProgressTracker
33
 
34
  class MotivationalCoach:
 
29
 
30
  if __name__ == "__main__":
31
  main()
32
+ def buscar_questoes_para_simulado(db: DatabaseManager, usuario_id: str,
33
+ num_questoes: int = 10,
34
+ areas: list = None,
35
+ dificuldade: str = None):
36
+ """Busca questões para gerar simulado personalizado"""
37
+ try:
38
+ conn = db.get_connection()
39
+ cursor = conn.cursor()
40
+
41
+ # Busca áreas fracas do usuário
42
+ user_profile = db.get_user_profile(usuario_id)
43
+ weak_areas = user_profile.get('weak_areas', [])
44
+
45
+ # Monta a query
46
+ query = '''
47
+ SELECT * FROM previous_questions
48
+ WHERE 1=1
49
+ '''
50
+ params = []
51
+
52
+ if areas:
53
+ query += ' AND area IN ({})'.format(','.join(['?']*len(areas)))
54
+ params.extend(areas)
55
+
56
+ if dificuldade:
57
+ query += ' AND difficulty = ?'
58
+ params.append(dificuldade)
59
+
60
+ # Prioriza áreas fracas
61
+ if weak_areas:
62
+ query += f'''
63
+ ORDER BY
64
+ CASE
65
+ WHEN area IN ({','.join(['?']*len(weak_areas))}) THEN 1
66
+ ELSE 2
67
+ END,
68
+ RANDOM()
69
+ '''
70
+ params.extend(weak_areas)
71
+ else:
72
+ query += ' ORDER BY RANDOM()'
73
+
74
+ query += ' LIMIT ?'
75
+ params.append(num_questoes)
76
+
77
+ cursor.execute(query, params)
78
+ questoes = cursor.fetchall()
79
+
80
+ return [dict(q) for q in questoes]
81
+
82
+ except Exception as e:
83
+ logger.error(f"Erro ao buscar questões: {e}")
84
+ return []
85
  from performance_system import PerformanceAnalyzer, StudyMaterialGenerator, ProgressTracker
86
 
87
  class MotivationalCoach: