AIdeaText commited on
Commit
4386042
·
verified ·
1 Parent(s): 3657e14

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
- #t.get('current_situation_activities', 'Registros de la función: Mi Situación Actual'),
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[1]:
70
  display_discourse_activities(username, t)
71
 
72
  # Tab de Conversaciones del Chat
73
- with tabs[2]:
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: