AIdeaText commited on
Commit
5674ea4
·
verified ·
1 Parent(s): 1084ae7

Update modules/studentact/current_situation_interface.py

Browse files
modules/studentact/current_situation_interface.py CHANGED
@@ -94,123 +94,90 @@ ANALYSIS_DIMENSION_MAPPING = {
94
 
95
  def display_current_situation_interface(lang_code, nlp_models, t):
96
  """
97
- Interfaz con línea base y progreso lado a lado.
98
  """
99
- # Inicialización de todos los estados necesarios
100
- if 'baseline_text' not in st.session_state:
101
- st.session_state.baseline_text = ""
 
 
 
 
 
 
 
 
102
 
103
- if 'baseline_metrics' not in st.session_state:
104
- st.session_state.baseline_metrics = None
105
-
106
- if 'iteration_count' not in st.session_state:
107
- st.session_state.iteration_count = 0
108
-
109
- # Intentar recuperar línea base guardada
110
- try:
111
- baseline = get_writing_baseline(st.session_state.username)
112
- if baseline:
113
- st.session_state.baseline_text = baseline['text']
114
- st.session_state.baseline_metrics = baseline['metrics']
115
- except Exception as e:
116
- logger.warning(f"No se pudo recuperar la línea base: {str(e)}")
117
-
118
  try:
119
- # st.title("Análisis de Escritura")
120
 
121
- # Crear dos columnas principales
122
- col1, col2 = st.columns(2)
123
 
124
- # Columna izquierda: Línea Base
125
- with col1:
126
- st.markdown("### Línea Base")
127
- # Text area para línea base
128
- baseline_text = st.text_area(
129
- "Texto base",
130
- value=st.session_state.baseline_text,
131
- height=200,
132
- key="baseline_area",
133
- help="Este texto servirá como punto de referencia"
134
  )
135
 
136
  baseline_button = st.button(
137
- "Establecer Línea Base",
138
  type="primary",
 
139
  use_container_width=True
140
  )
141
 
142
- # Análisis y métricas de línea base
143
- if baseline_button:
 
144
  with st.spinner("Analizando línea base..."):
145
- doc = nlp_models[lang_code](baseline_text)
146
  metrics = analyze_text_dimensions(doc)
147
- success = store_writing_baseline(
148
- username=st.session_state.username,
149
- metrics=metrics,
150
- text=baseline_text
151
- )
152
-
153
- if success:
154
- st.session_state.baseline_text = baseline_text
155
- st.session_state.baseline_metrics = metrics
156
- st.success("Línea base establecida")
157
- # Métricas justo debajo del text area
158
- display_metrics_column(metrics, "Línea Base")
159
-
160
- # Columna derecha: Progreso
161
- with col2:
162
- st.markdown(f"### Iteración #{st.session_state.iteration_count + 1}")
163
- # Text area para iteración
164
- current_text = st.text_area(
165
- "Texto actual",
166
- height=200,
167
- key="current_area",
168
- help="Escribe la nueva versión de tu texto"
169
  )
170
 
171
- progress_button = st.button(
172
- "Analizar Progreso",
173
  type="primary",
 
174
  use_container_width=True
175
  )
176
 
177
- # Análisis y métricas de progreso
178
- if progress_button:
179
- if not st.session_state.baseline_metrics:
180
- st.error("Primero debes establecer una línea base")
181
- return
182
-
183
- with st.spinner("Analizando progreso..."):
184
- doc = nlp_models[lang_code](current_text)
185
- current_metrics = analyze_text_dimensions(doc)
186
- st.session_state.iteration_count += 1
187
-
188
- store_writing_progress(
189
- username=st.session_state.username,
190
- metrics=current_metrics,
191
- text=current_text
192
- )
193
- # Métricas justo debajo del text area
194
- display_metrics_column(current_metrics, f"Iteración #{st.session_state.iteration_count}")
195
 
196
- # Expander con gráfico radar al final
197
  with st.expander("Ver Comparación Visual", expanded=False):
198
- if st.session_state.baseline_metrics and 'current_metrics' in locals():
199
- baseline_config = prepare_metrics_config(st.session_state.baseline_metrics)
200
- current_config = prepare_metrics_config(current_metrics)
201
  display_radar_chart(
202
- metrics_config=current_config,
203
  thresholds=TEXT_TYPES['student_essay']['thresholds'],
204
  baseline_metrics=st.session_state.baseline_metrics
205
  )
206
 
207
  except Exception as e:
208
- logger.error(f"Error en interfaz: {str(e)}")
209
- st.error("Error al cargar la interfaz")
210
-
211
- finally:
212
- # Limpiar recursos si es necesario
213
- plt.close('all')
214
 
215
  ###################################
216
 
 
94
 
95
  def display_current_situation_interface(lang_code, nlp_models, t):
96
  """
97
+ Interfaz simplificada con gráfico de radar para visualizar métricas.
98
  """
99
+ # Inicializar estados si no existen
100
+ if 'text_input' not in st.session_state:
101
+ st.session_state.text_input = ""
102
+ if 'text_area' not in st.session_state:
103
+ st.session_state.text_area = ""
104
+ if 'show_results' not in st.session_state:
105
+ st.session_state.show_results = False
106
+ if 'current_doc' not in st.session_state:
107
+ st.session_state.current_doc = None
108
+ if 'current_metrics' not in st.session_state:
109
+ st.session_state.current_metrics = None
110
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  try:
112
+ st.title("Análisis de Escritura")
113
 
114
+ # Crear cuatro columnas
115
+ text_base_col, results_base_col, text_iter_col, results_iter_col = st.columns(4)
116
 
117
+ # Columna 1: Texto Base
118
+ with text_base_col:
119
+ st.markdown("### Texto Base")
120
+ text_input = st.text_area(
121
+ "Escribe o pega tu texto aquí:",
122
+ height=400,
123
+ key="text_area_base",
124
+ value=st.session_state.text_input,
125
+ help="Este texto servirá como línea base"
 
126
  )
127
 
128
  baseline_button = st.button(
129
+ "Establecer Línea Base",
130
  type="primary",
131
+ disabled=not text_input.strip(),
132
  use_container_width=True
133
  )
134
 
135
+ # Columna 2: Resultados Base
136
+ with results_base_col:
137
+ if baseline_button and text_input:
138
  with st.spinner("Analizando línea base..."):
139
+ doc = nlp_models[lang_code](text_input)
140
  metrics = analyze_text_dimensions(doc)
141
+ display_results(metrics, 'student_essay')
142
+ st.session_state.baseline_metrics = metrics
143
+
144
+ # Columna 3: Texto Iteración
145
+ with text_iter_col:
146
+ st.markdown("### Texto Iterativo")
147
+ iteration_text = st.text_area(
148
+ "Nueva versión del texto:",
149
+ height=400,
150
+ key="text_area_iter",
151
+ help="Escribe la versión mejorada de tu texto"
 
 
 
 
 
 
 
 
 
 
 
152
  )
153
 
154
+ iterate_button = st.button(
155
+ "Analizar Iteración",
156
  type="primary",
157
+ disabled=not iteration_text.strip() or not st.session_state.baseline_metrics,
158
  use_container_width=True
159
  )
160
 
161
+ # Columna 4: Resultados Iteración
162
+ with results_iter_col:
163
+ if iterate_button and iteration_text:
164
+ with st.spinner("Analizando iteración..."):
165
+ doc = nlp_models[lang_code](iteration_text)
166
+ metrics = analyze_text_dimensions(doc)
167
+ display_results(metrics, 'student_essay')
 
 
 
 
 
 
 
 
 
 
 
168
 
169
+ # Gráfico radar en expander debajo de las columnas
170
  with st.expander("Ver Comparación Visual", expanded=False):
171
+ if 'baseline_metrics' in st.session_state and 'metrics' in locals():
 
 
172
  display_radar_chart(
173
+ metrics_config=prepare_metrics_config(metrics),
174
  thresholds=TEXT_TYPES['student_essay']['thresholds'],
175
  baseline_metrics=st.session_state.baseline_metrics
176
  )
177
 
178
  except Exception as e:
179
+ logger.error(f"Error en interfaz principal: {str(e)}")
180
+ st.error("Ocurrió un error al cargar la interfaz")
 
 
 
 
181
 
182
  ###################################
183