# modules/studentact/current_situation_interface.py import streamlit as st import logging from ..utils.widget_utils import generate_unique_key from .current_situation_analysis import ( analyze_text_dimensions, analyze_clarity, analyze_reference_clarity, analyze_vocabulary_diversity, analyze_cohesion, analyze_structure, get_dependency_depths, normalize_score, generate_sentence_graphs, generate_word_connections, generate_connection_paths, create_vocabulary_network, create_syntax_complexity_graph, create_cohesion_heatmap, ) logger = logging.getLogger(__name__) #################################### def display_current_situation_visual(doc, metrics): """ Muestra visualizaciones detalladas del an谩lisis. """ try: st.markdown("### 馃搳 Visualizaciones Detalladas") # 1. Visualizaci贸n de vocabulario with st.expander("An谩lisis de Vocabulario", expanded=True): vocab_graph = create_vocabulary_network(doc) if vocab_graph: st.pyplot(vocab_graph) plt.close(vocab_graph) # 2. Visualizaci贸n de estructura with st.expander("An谩lisis de Estructura", expanded=True): syntax_graph = create_syntax_complexity_graph(doc) if syntax_graph: st.pyplot(syntax_graph) plt.close(syntax_graph) # 3. Visualizaci贸n de cohesi贸n with st.expander("An谩lisis de Cohesi贸n", expanded=True): cohesion_graph = create_cohesion_heatmap(doc) if cohesion_graph: st.pyplot(cohesion_graph) plt.close(cohesion_graph) except Exception as e: logger.error(f"Error en visualizaci贸n: {str(e)}") st.error("Error al generar las visualizaciones") #################################### def display_recommendations(metrics, t): """ Muestra recomendaciones basadas en las m茅tricas del texto. """ # 1. Resumen Visual con Explicaci贸n st.markdown("### 馃搳 Resumen de tu An谩lisis") # Explicaci贸n del sistema de medici贸n st.markdown(""" **驴C贸mo interpretar los resultados?** Cada m茅trica se mide en una escala de 0.0 a 1.0, donde: - 0.0 - 0.4: Necesita atenci贸n prioritaria - 0.4 - 0.6: En desarrollo - 0.6 - 0.8: Buen nivel - 0.8 - 1.0: Nivel avanzado """) # M茅tricas con explicaciones detalladas col1, col2, col3, col4 = st.columns(4) with col1: st.metric( "Vocabulario", f"{metrics['vocabulary']['normalized_score']:.2f}", help="Mide la variedad y riqueza de tu vocabulario. Un valor alto indica un uso diverso de palabras sin repeticiones excesivas." ) with st.expander("鈩癸笍 Detalles"): st.write(""" **Vocabulario** - Eval煤a la diversidad l茅xica - Considera palabras 煤nicas vs. totales - Detecta repeticiones innecesarias - Valor 贸ptimo: > 0.7 """) with col2: st.metric( "Estructura", f"{metrics['structure']['normalized_score']:.2f}", help="Eval煤a la complejidad y variedad de las estructuras sint谩cticas en tus oraciones." ) with st.expander("鈩癸笍 Detalles"): st.write(""" **Estructura** - Analiza la complejidad sint谩ctica - Mide variaci贸n en construcciones - Eval煤a longitud de oraciones - Valor 贸ptimo: > 0.6 """) with col3: st.metric( "Cohesi贸n", f"{metrics['cohesion']['normalized_score']:.2f}", help="Indica qu茅 tan bien conectadas est谩n tus ideas y p谩rrafos entre s铆." ) with st.expander("鈩癸笍 Detalles"): st.write(""" **Cohesi贸n** - Mide conexiones entre ideas - Eval煤a uso de conectores - Analiza progresi贸n tem谩tica - Valor 贸ptimo: > 0.65 """) with col4: st.metric( "Claridad", f"{metrics['clarity']['normalized_score']:.2f}", help="Eval煤a la facilidad de comprensi贸n general de tu texto." ) with st.expander("鈩癸笍 Detalles"): st.write(""" **Claridad** - Eval煤a comprensibilidad - Considera estructura l贸gica - Mide precisi贸n expresiva - Valor 贸ptimo: > 0.7 """) st.markdown("---") # 2. Recomendaciones basadas en puntuaciones st.markdown("### 馃挕 Recomendaciones Personalizadas") # Recomendaciones morfosint谩cticas if metrics['structure']['normalized_score'] < 0.6: st.warning(""" #### 馃摑 An谩lisis Morfosint谩ctico Recomendado **Tu nivel actual sugiere que ser铆a beneficioso:** 1. Realizar el an谩lisis morfosint谩ctico de 3 p谩rrafos diferentes 2. Practicar la combinaci贸n de oraciones simples en compuestas 3. Identificar y clasificar tipos de oraciones en textos acad茅micos 4. Ejercitar la variaci贸n sint谩ctica *Hacer clic en "Comenzar ejercicios" para acceder al m贸dulo morfosint谩ctico* """) # Recomendaciones sem谩nticas if metrics['vocabulary']['normalized_score'] < 0.7: st.warning(""" #### 馃摎 An谩lisis Sem谩ntico Recomendado **Para mejorar tu vocabulario y expresi贸n:** A. Realiza el an谩lisis sem谩ntico de un texto acad茅mico B. Identifica y agrupa campos sem谩nticos relacionados C. Practica la sustituci贸n l茅xica en tus p谩rrafos D. Construye redes de conceptos sobre tu tema E. Analiza las relaciones entre ideas principales *Hacer clic en "Comenzar ejercicios" para acceder al m贸dulo sem谩ntico* """) # Recomendaciones de cohesi贸n if metrics['cohesion']['normalized_score'] < 0.65: st.warning(""" #### 馃攧 An谩lisis del Discurso Recomendado **Para mejorar la conexi贸n entre ideas:** 1. Realizar el an谩lisis del discurso de un texto modelo 2. Practicar el uso de diferentes conectores textuales 3. Identificar cadenas de referencia en textos acad茅micos 4. Ejercitar la progresi贸n tem谩tica en tus escritos *Hacer clic en "Comenzar ejercicios" para acceder al m贸dulo de an谩lisis del discurso* """) # Bot贸n de acci贸n st.markdown("---") col1, col2, col3 = st.columns([1,2,1]) with col2: st.button( "馃幆 Comenzar ejercicios recomendados", type="primary", use_container_width=True, key="start_exercises" )