Spaces:
Runtime error
Runtime error
Update app.py
Browse files
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:
|