Update modules/database/semantic_mongo_db.py
Browse files
modules/database/semantic_mongo_db.py
CHANGED
@@ -14,35 +14,52 @@ def store_student_semantic_result(username, text, analysis_result):
|
|
14 |
Args:
|
15 |
username: Nombre del usuario
|
16 |
text: Texto analizado
|
17 |
-
analysis_result: Resultado del análisis
|
18 |
-
- key_concepts: Lista de conceptos clave y sus frecuencias
|
19 |
-
- concept_graph: Gráfico de relaciones conceptuales en bytes
|
20 |
-
- entities: Diccionario de entidades identificadas
|
21 |
-
- entity_graph: Gráfico de relaciones entre entidades en bytes
|
22 |
"""
|
23 |
try:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
analysis_document = {
|
25 |
'username': username,
|
26 |
'timestamp': datetime.now(timezone.utc).isoformat(),
|
27 |
'text': text,
|
28 |
'analysis_type': 'semantic',
|
29 |
-
'key_concepts': analysis_result
|
30 |
-
'concept_graph':
|
31 |
-
'entities': analysis_result
|
32 |
-
'entity_graph':
|
33 |
}
|
34 |
-
|
|
|
35 |
result = insert_document(COLLECTION_NAME, analysis_document)
|
36 |
-
|
37 |
if result:
|
38 |
logger.info(f"Análisis semántico guardado con ID: {result} para el usuario: {username}")
|
39 |
return True
|
40 |
-
return False
|
41 |
|
|
|
|
|
|
|
42 |
except Exception as e:
|
43 |
logger.error(f"Error al guardar el análisis semántico: {str(e)}")
|
44 |
return False
|
45 |
|
|
|
|
|
|
|
46 |
def get_student_semantic_analysis(username, limit=10):
|
47 |
"""
|
48 |
Recupera los análisis semánticos de un estudiante.
|
|
|
14 |
Args:
|
15 |
username: Nombre del usuario
|
16 |
text: Texto analizado
|
17 |
+
analysis_result: Resultado del análisis
|
|
|
|
|
|
|
|
|
18 |
"""
|
19 |
try:
|
20 |
+
# Convertir gráfico a formato base64
|
21 |
+
concept_graph_data = None
|
22 |
+
if 'concept_graph' in analysis_result:
|
23 |
+
buf = io.BytesIO()
|
24 |
+
analysis_result['concept_graph'].savefig(buf, format='png')
|
25 |
+
buf.seek(0)
|
26 |
+
concept_graph_data = base64.b64encode(buf.getvalue()).decode('utf-8')
|
27 |
+
|
28 |
+
entity_graph_data = None
|
29 |
+
if 'entity_graph' in analysis_result:
|
30 |
+
buf = io.BytesIO()
|
31 |
+
analysis_result['entity_graph'].savefig(buf, format='png')
|
32 |
+
buf.seek(0)
|
33 |
+
entity_graph_data = base64.b64encode(buf.getvalue()).decode('utf-8')
|
34 |
+
|
35 |
+
# Crear documento para MongoDB
|
36 |
analysis_document = {
|
37 |
'username': username,
|
38 |
'timestamp': datetime.now(timezone.utc).isoformat(),
|
39 |
'text': text,
|
40 |
'analysis_type': 'semantic',
|
41 |
+
'key_concepts': analysis_result.get('key_concepts', []),
|
42 |
+
'concept_graph': concept_graph_data,
|
43 |
+
'entities': analysis_result.get('entities', {}),
|
44 |
+
'entity_graph': entity_graph_data
|
45 |
}
|
46 |
+
|
47 |
+
# Insertar en MongoDB
|
48 |
result = insert_document(COLLECTION_NAME, analysis_document)
|
|
|
49 |
if result:
|
50 |
logger.info(f"Análisis semántico guardado con ID: {result} para el usuario: {username}")
|
51 |
return True
|
|
|
52 |
|
53 |
+
logger.error("No se pudo insertar el documento en MongoDB")
|
54 |
+
return False
|
55 |
+
|
56 |
except Exception as e:
|
57 |
logger.error(f"Error al guardar el análisis semántico: {str(e)}")
|
58 |
return False
|
59 |
|
60 |
+
|
61 |
+
|
62 |
+
|
63 |
def get_student_semantic_analysis(username, limit=10):
|
64 |
"""
|
65 |
Recupera los análisis semánticos de un estudiante.
|