Update modules/studentact/student_activities_v2.py
Browse files
modules/studentact/student_activities_v2.py
CHANGED
@@ -23,6 +23,7 @@ from ..database.discourse_mongo_db import get_student_discourse_analysis
|
|
23 |
from ..database.chat_mongo_db import get_chat_history
|
24 |
from ..database.current_situation_mongo_db import get_current_situation_analysis
|
25 |
from ..database.claude_recommendations_mongo_db import get_claude_recommendations
|
|
|
26 |
|
27 |
# Importar la función generate_unique_key
|
28 |
from ..utils.widget_utils import generate_unique_key
|
@@ -46,31 +47,25 @@ def display_student_activities(username: str, lang_code: str, t: dict):
|
|
46 |
# Tabs para diferentes tipos de análisis
|
47 |
# Cambiado "Análisis del Discurso" a "Análisis comparado de textos"
|
48 |
tabs = st.tabs([
|
49 |
-
|
50 |
-
#t.get('morpho_activities', 'Registros de mis análisis morfosintácticos'),
|
51 |
t.get('semantic_activities', 'Registros de mis análisis semánticos'),
|
52 |
t.get('discourse_activities', 'Registros de mis análisis comparado de textos'),
|
53 |
t.get('chat_activities', 'Registros de mis conversaciones con el tutor virtual')
|
54 |
])
|
55 |
|
56 |
-
# Tab de Situación Actual
|
57 |
-
#with tabs[0]:
|
58 |
-
# display_current_situation_activities(username, t)
|
59 |
-
|
60 |
-
# Tab de Análisis Morfosintáctico
|
61 |
-
#with tabs[1]:
|
62 |
-
# display_morphosyntax_activities(username, t)
|
63 |
-
|
64 |
# Tab de Análisis Semántico
|
65 |
with tabs[0]:
|
|
|
|
|
|
|
66 |
display_semantic_activities(username, t)
|
67 |
|
68 |
# Tab de Análisis del Discurso (mantiene nombre interno pero UI muestra "Análisis comparado de textos")
|
69 |
-
with tabs[
|
70 |
display_discourse_activities(username, t)
|
71 |
|
72 |
# Tab de Conversaciones del Chat
|
73 |
-
with tabs[
|
74 |
display_chat_activities(username, t)
|
75 |
|
76 |
except Exception as e:
|
@@ -80,6 +75,53 @@ def display_student_activities(username: str, lang_code: str, t: dict):
|
|
80 |
|
81 |
###############################################################################################
|
82 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
83 |
def display_semantic_activities(username: str, t: dict):
|
84 |
"""Muestra actividades de análisis semántico"""
|
85 |
try:
|
|
|
23 |
from ..database.chat_mongo_db import get_chat_history
|
24 |
from ..database.current_situation_mongo_db import get_current_situation_analysis
|
25 |
from ..database.claude_recommendations_mongo_db import get_claude_recommendations
|
26 |
+
from ..database.semantic_mongo_live_db import get_student_semantic_live_analysis #7-7-2025
|
27 |
|
28 |
# Importar la función generate_unique_key
|
29 |
from ..utils.widget_utils import generate_unique_key
|
|
|
47 |
# Tabs para diferentes tipos de análisis
|
48 |
# Cambiado "Análisis del Discurso" a "Análisis comparado de textos"
|
49 |
tabs = st.tabs([
|
50 |
+
t.get('semantic_live_activities', 'Registros de análisis en vivo'),
|
|
|
51 |
t.get('semantic_activities', 'Registros de mis análisis semánticos'),
|
52 |
t.get('discourse_activities', 'Registros de mis análisis comparado de textos'),
|
53 |
t.get('chat_activities', 'Registros de mis conversaciones con el tutor virtual')
|
54 |
])
|
55 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
# Tab de Análisis Semántico
|
57 |
with tabs[0]:
|
58 |
+
display_semantic_live_activities(username, t)
|
59 |
+
|
60 |
+
with tabs[1]:
|
61 |
display_semantic_activities(username, t)
|
62 |
|
63 |
# Tab de Análisis del Discurso (mantiene nombre interno pero UI muestra "Análisis comparado de textos")
|
64 |
+
with tabs[2]:
|
65 |
display_discourse_activities(username, t)
|
66 |
|
67 |
# Tab de Conversaciones del Chat
|
68 |
+
with tabs[3]:
|
69 |
display_chat_activities(username, t)
|
70 |
|
71 |
except Exception as e:
|
|
|
75 |
|
76 |
###############################################################################################
|
77 |
|
78 |
+
def display_semantic_live_activities(username: str, t: dict):
|
79 |
+
"""Muestra actividades de análisis semántico en vivo"""
|
80 |
+
try:
|
81 |
+
analyses = get_student_semantic_live_analysis(username)
|
82 |
+
|
83 |
+
if not analyses:
|
84 |
+
st.info(t.get('no_semantic_live_analyses', 'No hay análisis semánticos en vivo registrados'))
|
85 |
+
return
|
86 |
+
|
87 |
+
for analysis in analyses:
|
88 |
+
try:
|
89 |
+
timestamp = datetime.fromisoformat(analysis['timestamp'].replace('Z', '+00:00'))
|
90 |
+
formatted_date = timestamp.strftime("%d/%m/%Y %H:%M:%S")
|
91 |
+
|
92 |
+
with st.expander(f"{t.get('analysis_date', 'Fecha')}: {formatted_date}", expanded=False):
|
93 |
+
# Mostrar texto (primeros 200 caracteres)
|
94 |
+
st.text_area(
|
95 |
+
"Texto analizado",
|
96 |
+
value=analysis.get('text', '')[:200] + ("..." if len(analysis.get('text', '')) > 200 else ""),
|
97 |
+
height=100,
|
98 |
+
disabled=True
|
99 |
+
)
|
100 |
+
|
101 |
+
# Mostrar gráfico si existe
|
102 |
+
if analysis.get('concept_graph'):
|
103 |
+
try:
|
104 |
+
image_data = analysis['concept_graph']
|
105 |
+
image_bytes = base64.b64decode(image_data) if isinstance(image_data, str) else image_data
|
106 |
+
|
107 |
+
st.image(
|
108 |
+
image_bytes,
|
109 |
+
caption=t.get('concept_network', 'Red de Conceptos'),
|
110 |
+
use_container_width=True
|
111 |
+
)
|
112 |
+
except Exception as img_error:
|
113 |
+
logger.error(f"Error procesando gráfico: {str(img_error)}")
|
114 |
+
st.error(t.get('error_loading_graph', 'Error al cargar el gráfico'))
|
115 |
+
|
116 |
+
except Exception as e:
|
117 |
+
logger.error(f"Error procesando análisis individual: {str(e)}")
|
118 |
+
continue
|
119 |
+
|
120 |
+
except Exception as e:
|
121 |
+
logger.error(f"Error mostrando análisis semántico en vivo: {str(e)}")
|
122 |
+
st.error(t.get('error_semantic_live', 'Error al mostrar análisis semántico en vivo'))
|
123 |
+
|
124 |
+
###############################################################################################
|
125 |
def display_semantic_activities(username: str, t: dict):
|
126 |
"""Muestra actividades de análisis semántico"""
|
127 |
try:
|