AIdeaText commited on
Commit
ce4440d
·
verified ·
1 Parent(s): 611d4d3

Update modules/studentact/student_activities_v2.py

Browse files
modules/studentact/student_activities_v2.py CHANGED
@@ -369,25 +369,98 @@ def display_current_situation_activities(username: str, t: dict):
369
  ###############################################################################################
370
 
371
  def display_morphosyntax_activities(username: str, t: dict):
372
- """Muestra actividades de análisis morfosintáctico"""
 
 
 
373
  try:
374
- analyses = get_student_morphosyntax_analysis(username)
375
- if not analyses:
 
 
 
 
 
 
 
 
 
376
  st.info(t.get('no_morpho_analyses', 'No hay análisis morfosintácticos registrados'))
377
  return
378
 
379
- for analysis in analyses:
380
- with st.expander(
381
- f"{t.get('analysis_date', 'Fecha')}: {analysis['timestamp']}",
382
- expanded=False
383
- ):
384
- st.text(f"{t.get('analyzed_text', 'Texto analizado')}:")
385
- st.write(analysis['text'])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
386
 
387
- if 'arc_diagrams' in analysis:
388
- st.subheader(t.get('syntactic_diagrams', 'Diagramas sintácticos'))
389
- for diagram in analysis['arc_diagrams']:
390
- st.write(diagram, unsafe_allow_html=True)
391
 
392
  except Exception as e:
393
  logger.error(f"Error mostrando análisis morfosintáctico: {str(e)}")
 
369
  ###############################################################################################
370
 
371
  def display_morphosyntax_activities(username: str, t: dict):
372
+ """
373
+ Muestra actividades de análisis morfosintáctico, incluyendo base e iteraciones
374
+ desde las nuevas colecciones: student_morphosyntax_analysis_base y student_morphosyntax_iterations
375
+ """
376
  try:
377
+ # Importación inline para evitar problemas de circularidad
378
+ # Utilizamos la función de la nueva estructura de DB iterativa
379
+ from ..database.morphosyntax_iterative_mongo_db import get_student_morphosyntax_analysis
380
+
381
+ logger.info(f"Recuperando análisis morfosintáctico para {username}")
382
+
383
+ # Esta función ahora trae tanto las bases como sus iteraciones
384
+ base_analyses = get_student_morphosyntax_analysis(username)
385
+
386
+ if not base_analyses:
387
+ logger.info("No se encontraron análisis morfosintácticos")
388
  st.info(t.get('no_morpho_analyses', 'No hay análisis morfosintácticos registrados'))
389
  return
390
 
391
+ logger.info(f"Procesando {len(base_analyses)} análisis morfosintácticos base")
392
+
393
+ # Procesar cada análisis base con sus iteraciones
394
+ for base_analysis in base_analyses:
395
+ try:
396
+ # Formatear fecha
397
+ timestamp = datetime.fromisoformat(base_analysis['timestamp'].replace('Z', '+00:00'))
398
+ formatted_date = timestamp.strftime("%d/%m/%Y %H:%M:%S")
399
+
400
+ # Título del expander: incluir información de si tiene iteraciones
401
+ expander_title = f"{t.get('analysis_date', 'Fecha')}: {formatted_date}"
402
+ if base_analysis.get('has_iterations', False):
403
+ expander_title += f" ({t.get('has_iterations', 'Con iteraciones')})"
404
+
405
+ with st.expander(expander_title, expanded=False):
406
+ # Mostrar texto base
407
+ st.subheader(t.get('base_text', 'Texto original'))
408
+ st.text_area(
409
+ "Base Text Content",
410
+ value=base_analysis.get('text', ''),
411
+ height=100,
412
+ disabled=True,
413
+ label_visibility="collapsed",
414
+ key=f"base_text_{str(base_analysis['_id'])}"
415
+ )
416
+
417
+ # Mostrar diagrama de arco base si existe
418
+ if 'arc_diagrams' in base_analysis and base_analysis['arc_diagrams']:
419
+ st.subheader(t.get('syntactic_diagrams', 'Diagrama sintáctico (original)'))
420
+ # Mostrar cada diagrama (normalmente solo uno por oración)
421
+ for diagram in base_analysis['arc_diagrams']:
422
+ st.write(diagram, unsafe_allow_html=True)
423
+
424
+ # Procesar iteraciones si existen
425
+ if 'iterations' in base_analysis and base_analysis['iterations']:
426
+ st.markdown("---") # Línea divisoria
427
+ st.subheader(t.get('iterations', 'Versiones mejoradas'))
428
+
429
+ # Crear tabs para cada iteración
430
+ iteration_tabs = st.tabs([
431
+ f"{t.get('iteration', 'Versión')} {i+1}"
432
+ for i in range(len(base_analysis['iterations']))
433
+ ])
434
+
435
+ # Mostrar cada iteración en su propia pestaña
436
+ for i, (tab, iteration) in enumerate(zip(iteration_tabs, base_analysis['iterations'])):
437
+ with tab:
438
+ # Timestamp de la iteración
439
+ iter_timestamp = datetime.fromisoformat(
440
+ iteration['timestamp'].replace('Z', '+00:00'))
441
+ iter_formatted_date = iter_timestamp.strftime("%d/%m/%Y %H:%M:%S")
442
+ st.caption(f"{t.get('iteration_date', 'Fecha de versión')}: {iter_formatted_date}")
443
+
444
+ # Texto de la iteración
445
+ st.text_area(
446
+ f"Iteration Text {i+1}",
447
+ value=iteration.get('iteration_text', ''),
448
+ height=100,
449
+ disabled=True,
450
+ label_visibility="collapsed",
451
+ key=f"iter_text_{str(iteration['_id'])}"
452
+ )
453
+
454
+ # Diagrama de arco de la iteración
455
+ if 'arc_diagrams' in iteration and iteration['arc_diagrams']:
456
+ st.subheader(t.get('iteration_diagram', 'Diagrama sintáctico (mejorado)'))
457
+ for diagram in iteration['arc_diagrams']:
458
+ st.write(diagram, unsafe_allow_html=True)
459
 
460
+ except Exception as e:
461
+ logger.error(f"Error procesando análisis morfosintáctico: {str(e)}")
462
+ st.error(t.get('error_processing_analysis', 'Error procesando este análisis'))
463
+ continue
464
 
465
  except Exception as e:
466
  logger.error(f"Error mostrando análisis morfosintáctico: {str(e)}")