AIdeaText commited on
Commit
62595b2
·
verified ·
1 Parent(s): a73bcf2

Update modules/studentact/student_activities_v2.py

Browse files
modules/studentact/student_activities_v2.py CHANGED
@@ -21,6 +21,7 @@ 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
 
25
  logger = logging.getLogger(__name__)
26
 
@@ -37,11 +38,12 @@ def display_student_activities(username: str, lang_code: str, t: dict):
37
  try:
38
  st.header(t.get('activities_title', 'Mis Actividades'))
39
 
40
- # Tabs para diferentes tipos de análisis
41
  tabs = st.tabs([
42
  t.get('morpho_activities', 'Análisis Morfosintáctico'),
43
  t.get('semantic_activities', 'Análisis Semántico'),
44
  t.get('discourse_activities', 'Análisis del Discurso'),
 
45
  t.get('chat_activities', 'Conversaciones con el Asistente')
46
  ])
47
 
@@ -56,9 +58,13 @@ def display_student_activities(username: str, lang_code: str, t: dict):
56
  # Tab de Análisis del Discurso
57
  with tabs[2]:
58
  display_discourse_activities(username, t)
 
 
 
 
59
 
60
  # Tab de Conversaciones del Chat
61
- with tabs[3]:
62
  display_chat_activities(username, t)
63
 
64
  except Exception as e:
@@ -160,16 +166,6 @@ def display_semantic_activities(username: str, t: dict):
160
  st.error(t.get('error_semantic', 'Error al mostrar análisis semántico'))
161
 
162
 
163
-
164
-
165
-
166
-
167
-
168
-
169
-
170
-
171
-
172
-
173
  ###################################################################################################
174
  def display_discourse_activities(username: str, t: dict):
175
  """Muestra actividades de análisis del discurso"""
@@ -215,6 +211,85 @@ def display_discourse_activities(username: str, t: dict):
215
  logger.error(f"Error mostrando análisis del discurso: {str(e)}")
216
  st.error(t.get('error_discourse', 'Error al mostrar análisis del discurso'))
217
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
218
  #################################################################################
219
  def display_discourse_comparison(analysis: dict, t: dict):
220
  """Muestra la comparación de análisis del discurso"""
@@ -280,3 +355,4 @@ def display_chat_activities(username: str, t: dict):
280
  except Exception as e:
281
  logger.error(f"Error mostrando historial del chat: {str(e)}")
282
  st.error(t.get('error_chat', 'Error al mostrar historial del chat'))
 
 
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 # Nueva importación
25
 
26
  logger = logging.getLogger(__name__)
27
 
 
38
  try:
39
  st.header(t.get('activities_title', 'Mis Actividades'))
40
 
41
+ # Tabs para diferentes tipos de análisis (añadimos la nueva tab)
42
  tabs = st.tabs([
43
  t.get('morpho_activities', 'Análisis Morfosintáctico'),
44
  t.get('semantic_activities', 'Análisis Semántico'),
45
  t.get('discourse_activities', 'Análisis del Discurso'),
46
+ t.get('current_situation_activities', 'Mi Situación Actual'), # Nueva pestaña
47
  t.get('chat_activities', 'Conversaciones con el Asistente')
48
  ])
49
 
 
58
  # Tab de Análisis del Discurso
59
  with tabs[2]:
60
  display_discourse_activities(username, t)
61
+
62
+ # Tab de Situación Actual (nueva)
63
+ with tabs[3]:
64
+ display_current_situation_activities(username, t)
65
 
66
  # Tab de Conversaciones del Chat
67
+ with tabs[4]:
68
  display_chat_activities(username, t)
69
 
70
  except Exception as e:
 
166
  st.error(t.get('error_semantic', 'Error al mostrar análisis semántico'))
167
 
168
 
 
 
 
 
 
 
 
 
 
 
169
  ###################################################################################################
170
  def display_discourse_activities(username: str, t: dict):
171
  """Muestra actividades de análisis del discurso"""
 
211
  logger.error(f"Error mostrando análisis del discurso: {str(e)}")
212
  st.error(t.get('error_discourse', 'Error al mostrar análisis del discurso'))
213
 
214
+
215
+ ###################################################################################
216
+ # Nueva función para mostrar las actividades de Situación Actual
217
+ def display_current_situation_activities(username: str, t: dict):
218
+ """Muestra actividades de análisis de situación actual con recomendaciones de Claude"""
219
+ try:
220
+ logger.info(f"Recuperando análisis de situación actual para {username}")
221
+ analyses = get_current_situation_analysis(username)
222
+
223
+ if not analyses:
224
+ logger.info("No se encontraron análisis de situación actual")
225
+ st.info(t.get('no_current_situation', 'No hay análisis de situación actual registrados'))
226
+ return
227
+
228
+ logger.info(f"Procesando {len(analyses)} análisis de situación actual")
229
+
230
+ for analysis in analyses:
231
+ try:
232
+ # Verificar campos necesarios
233
+ if not all(key in analysis for key in ['timestamp', 'feedback']):
234
+ logger.warning(f"Análisis incompleto: {analysis.keys()}")
235
+ continue
236
+
237
+ # Formatear fecha
238
+ timestamp = datetime.fromisoformat(analysis['timestamp'].replace('Z', '+00:00'))
239
+ formatted_date = timestamp.strftime("%d/%m/%Y %H:%M:%S")
240
+
241
+ # Crear expander con título que incluye información del tipo de texto si está disponible
242
+ title = f"{t.get('analysis_date', 'Fecha')}: {formatted_date}"
243
+ if 'text_type' in analysis:
244
+ text_type_display = {
245
+ 'academic_article': t.get('academic_article', 'Artículo académico'),
246
+ 'university_work': t.get('university_work', 'Trabajo universitario'),
247
+ 'general_communication': t.get('general_communication', 'Comunicación general')
248
+ }.get(analysis['text_type'], analysis['text_type'])
249
+ title += f" - {text_type_display}"
250
+
251
+ with st.expander(title, expanded=False):
252
+ # Mostrar el texto original analizado
253
+ st.subheader(t.get('analyzed_text', 'Texto analizado'))
254
+ st.text_area(
255
+ "",
256
+ value=analysis.get('text', ''),
257
+ height=100,
258
+ disabled=True,
259
+ label_visibility="collapsed"
260
+ )
261
+
262
+ # Mostrar las recomendaciones generadas por Claude
263
+ st.subheader(t.get('recommendations', 'Recomendaciones'))
264
+
265
+ # Dar formato a las recomendaciones en un contenedor estilizado
266
+ st.markdown(f"""
267
+ <div style="padding: 20px; border-radius: 10px;
268
+ background-color: #f8f9fa; margin-bottom: 20px;">
269
+ {analysis['feedback']}
270
+ </div>
271
+ """, unsafe_allow_html=True)
272
+
273
+ # Mostrar métricas adicionales si están disponibles
274
+ if 'metrics' in analysis and analysis['metrics']:
275
+ with st.expander(t.get('metrics_details', 'Detalles de métricas')):
276
+ # Convertir métricas a dataframe para mejor visualización
277
+ metrics_df = pd.DataFrame([
278
+ {"Métrica": k, "Valor": v}
279
+ for k, v in analysis['metrics'].items()
280
+ if k not in ['test_type', 'timestamp'] and not isinstance(v, dict)
281
+ ])
282
+ st.dataframe(metrics_df, use_container_width=True)
283
+
284
+ except Exception as e:
285
+ logger.error(f"Error procesando análisis individual de situación actual: {str(e)}")
286
+ continue
287
+
288
+ except Exception as e:
289
+ logger.error(f"Error mostrando análisis de situación actual: {str(e)}")
290
+ st.error(t.get('error_current_situation', 'Error al mostrar análisis de situación actual'))
291
+
292
+
293
  #################################################################################
294
  def display_discourse_comparison(analysis: dict, t: dict):
295
  """Muestra la comparación de análisis del discurso"""
 
355
  except Exception as e:
356
  logger.error(f"Error mostrando historial del chat: {str(e)}")
357
  st.error(t.get('error_chat', 'Error al mostrar historial del chat'))
358
+