AIdeaText commited on
Commit
21b6672
·
verified ·
1 Parent(s): b0ab382

Update modules/studentact/current_situation_interface.py

Browse files
modules/studentact/current_situation_interface.py CHANGED
@@ -25,93 +25,97 @@ from .current_situation_analysis import (
25
 
26
  logger = logging.getLogger(__name__)
27
  ####################################
 
28
  def display_current_situation_interface(lang_code, nlp_models, t):
29
  """
30
  Interfaz simplificada para el análisis inicial, enfocada en recomendaciones directas.
31
  """
32
- # Inicializar estados si no existen
33
- if 'text_input' not in st.session_state:
34
- st.session_state.text_input = ""
35
- if 'show_results' not in st.session_state:
36
- st.session_state.show_results = False
37
- if 'current_doc' not in st.session_state:
38
- st.session_state.current_doc = None
39
- if 'current_metrics' not in st.session_state:
40
- st.session_state.current_metrics = None
 
41
 
42
- st.markdown("## Análisis Inicial de Escritura")
43
-
44
- # Container principal con dos columnas
45
- with st.container():
46
- input_col, results_col = st.columns([1,2])
47
 
48
- with input_col:
49
- st.markdown("### Ingresa tu texto")
50
-
51
- # Función para manejar cambios en el texto
52
- def on_text_change():
53
- st.session_state.text_input = st.session_state.text_area
54
- st.session_state.show_results = False # Resetear resultados cuando el texto cambia
55
-
56
- # Text area con manejo de estado
57
- text_input = st.text_area(
58
- t.get('input_prompt', "Escribe o pega tu texto aquí:"),
59
- height=400,
60
- key="text_area",
61
- value=st.session_state.text_input,
62
- on_change=on_text_change,
63
- help="Este texto será analizado para darte recomendaciones personalizadas"
64
- )
65
 
66
- if st.button(
67
- t.get('analyze_button', "Analizar mi escritura"),
68
- type="primary",
69
- disabled=not text_input.strip(),
70
- use_container_width=True,
71
- ):
72
- try:
73
- with st.spinner(t.get('processing', "Analizando...")):
74
- # Procesar texto y obtener métricas
75
- doc = nlp_models[lang_code](text_input)
76
- metrics = analyze_text_dimensions(doc)
77
-
78
- # Guardar en MongoDB
79
- storage_success = store_current_situation_result(
80
- username=st.session_state.username,
81
- text=text_input,
82
- metrics=metrics,
83
- feedback=None # Por ahora sin feedback
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  )
85
 
86
- if not storage_success:
87
- logger.warning("No se pudo guardar el análisis en la base de datos")
88
-
89
- # Actualizar estado
90
- st.session_state.current_doc = doc
91
- st.session_state.current_metrics = metrics
92
- st.session_state.show_results = True
93
- st.session_state.text_input = text_input
94
-
95
- except Exception as e:
96
- logger.error(f"Error en análisis: {str(e)}")
97
- st.error(t.get('analysis_error', "Error al analizar el texto"))
98
-
99
- # Mostrar resultados en la columna derecha
100
- with results_col:
101
- if st.session_state.show_results and st.session_state.current_metrics is not None:
102
- display_recommendations(st.session_state.current_metrics, t)
103
-
104
- # Opción para ver detalles
105
- with st.expander("🔍 Ver análisis detallado", expanded=False):
106
- display_current_situation_visual(
107
- st.session_state.current_doc,
108
- st.session_state.current_metrics
109
- )
110
-
111
  except Exception as e:
112
  logger.error(f"Error en interfaz: {str(e)}")
113
  st.error("Ocurrió un error. Por favor, intente de nuevo.")
114
 
 
 
115
  def display_current_situation_visual(doc, metrics):
116
  """
117
  Muestra visualizaciones detalladas del análisis.
 
25
 
26
  logger = logging.getLogger(__name__)
27
  ####################################
28
+
29
  def display_current_situation_interface(lang_code, nlp_models, t):
30
  """
31
  Interfaz simplificada para el análisis inicial, enfocada en recomendaciones directas.
32
  """
33
+ try:
34
+ # Inicializar estados si no existen
35
+ if 'text_input' not in st.session_state:
36
+ st.session_state.text_input = ""
37
+ if 'show_results' not in st.session_state:
38
+ st.session_state.show_results = False
39
+ if 'current_doc' not in st.session_state:
40
+ st.session_state.current_doc = None
41
+ if 'current_metrics' not in st.session_state:
42
+ st.session_state.current_metrics = None
43
 
44
+ st.markdown("## Análisis Inicial de Escritura")
 
 
 
 
45
 
46
+ # Container principal con dos columnas
47
+ with st.container():
48
+ input_col, results_col = st.columns([1,2])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
 
50
+ with input_col:
51
+ st.markdown("### Ingresa tu texto")
52
+
53
+ # Función para manejar cambios en el texto
54
+ def on_text_change():
55
+ st.session_state.text_input = st.session_state.text_area
56
+ st.session_state.show_results = False # Resetear resultados cuando el texto cambia
57
+
58
+ # Text area con manejo de estado
59
+ text_input = st.text_area(
60
+ t.get('input_prompt', "Escribe o pega tu texto aquí:"),
61
+ height=400,
62
+ key="text_area",
63
+ value=st.session_state.text_input,
64
+ on_change=on_text_change,
65
+ help="Este texto será analizado para darte recomendaciones personalizadas"
66
+ )
67
+
68
+ if st.button(
69
+ t.get('analyze_button', "Analizar mi escritura"),
70
+ type="primary",
71
+ disabled=not text_input.strip(),
72
+ use_container_width=True,
73
+ ):
74
+ try:
75
+ with st.spinner(t.get('processing', "Analizando...")):
76
+ # Procesar texto y obtener métricas
77
+ doc = nlp_models[lang_code](text_input)
78
+ metrics = analyze_text_dimensions(doc)
79
+
80
+ # Guardar en MongoDB
81
+ storage_success = store_current_situation_result(
82
+ username=st.session_state.username,
83
+ text=text_input,
84
+ metrics=metrics,
85
+ feedback=None # Por ahora sin feedback
86
+ )
87
+
88
+ if not storage_success:
89
+ logger.warning("No se pudo guardar el análisis en la base de datos")
90
+
91
+ # Actualizar estado
92
+ st.session_state.current_doc = doc
93
+ st.session_state.current_metrics = metrics
94
+ st.session_state.show_results = True
95
+ st.session_state.text_input = text_input
96
+
97
+ except Exception as e:
98
+ logger.error(f"Error en análisis: {str(e)}")
99
+ st.error(t.get('analysis_error', "Error al analizar el texto"))
100
+
101
+ # Mostrar resultados en la columna derecha
102
+ with results_col:
103
+ if st.session_state.show_results and st.session_state.current_metrics is not None:
104
+ display_recommendations(st.session_state.current_metrics, t)
105
+
106
+ # Opción para ver detalles
107
+ with st.expander("🔍 Ver análisis detallado", expanded=False):
108
+ display_current_situation_visual(
109
+ st.session_state.current_doc,
110
+ st.session_state.current_metrics
111
  )
112
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  except Exception as e:
114
  logger.error(f"Error en interfaz: {str(e)}")
115
  st.error("Ocurrió un error. Por favor, intente de nuevo.")
116
 
117
+
118
+
119
  def display_current_situation_visual(doc, metrics):
120
  """
121
  Muestra visualizaciones detalladas del análisis.