# 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, create_vocabulary_network, create_syntax_complexity_graph, create_cohesion_heatmap ) logger = logging.getLogger(__name__) def display_current_situation_interface(lang_code, nlp_models, t): """ Interfaz simplificada para el análisis inicial, enfocada en recomendaciones directas. """ st.markdown("## Análisis Inicial de Escritura") # Container principal con dos columnas with st.container(): # Columnas para entrada y resultados input_col, results_col = st.columns([1,2]) with input_col: st.markdown("### Ingresa tu texto") text_input = st.text_area( t.get('input_prompt', "Escribe o pega tu texto aquí:"), height=400, key=generate_unique_key("initial_analysis", "input"), help="Este texto será analizado para darte recomendaciones personalizadas" ) if st.button( t.get('analyze_button', "Analizar mi escritura"), type="primary", disabled=not text_input, use_container_width=True ): try: with st.spinner(t.get('processing', "Analizando...")): # Procesar texto y obtener métricas doc = nlp_models[lang_code](text_input) metrics = analyze_text_dimensions(doc) # Mostrar resultados en la columna derecha with results_col: display_recommendations(metrics, t) # Opción para ver detalles with st.expander("🔍 Ver análisis detallado", expanded=False): display_current_situation_visual(doc, metrics) except Exception as e: logger.error(f"Error en análisis: {str(e)}") st.error(t.get('analysis_error', "Error al analizar el texto")) def display_recommendations(metrics, t): """ Muestra recomendaciones basadas en las métricas del texto. """ st.markdown("### Recomendaciones Personalizadas") # Definir umbrales THRESHOLDS = { 'vocabulary': 0.7, 'structure': 0.6, 'cohesion': 0.65 } # Evaluar métricas y mostrar recomendaciones recommendations = [] # 1. Recomendaciones morfosintácticas st.markdown("#### Ejercicios de Análisis Morfosintáctico") if metrics['structural_complexity'] < THRESHOLDS['structure']: st.markdown(""" 📝 **Para mejorar la estructura de tus textos:** 1. Analiza la estructura de 3 párrafos usando diagramas de arco 2. Practica combinando oraciones simples en compuestas 3. Identifica y clasifica tipos de oraciones en un texto académico 4. Realiza ejercicios de variación sintáctica """) else: st.success("✨ ¡Buen manejo de estructuras! Continúa practicando para mantener el nivel.") # 2. Recomendaciones semánticas st.markdown("#### Ejercicios de Análisis Semántico") if metrics['vocabulary_richness'] < THRESHOLDS['vocabulary']: st.markdown(""" 📚 **Para enriquecer tu vocabulario:** A. Crea mapas conceptuales de tus lecturas B. Identifica campos semánticos en textos académicos C. Practica la sustitución léxica en párrafos D. Desarrolla glosarios temáticos E. Analiza relaciones semánticas entre conceptos """) else: st.success("📖 ¡Excelente riqueza léxica! Sigue expandiendo tu vocabulario.") # 3. Recomendaciones de cohesión if metrics['cohesion_score'] < THRESHOLDS['cohesion']: st.warning(""" 🔄 **Para mejorar la cohesión de tus textos:** - Practica el uso de conectores textuales - Identifica cadenas léxicas en textos modelo - Realiza ejercicios de referencia y correferencia """) # Botón para comenzar ejercicios 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" )