AIdeaText commited on
Commit
7e2c4e9
·
verified ·
1 Parent(s): ab86700

Update modules/studentact/student_activities_v2.py

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