AIdeaText commited on
Commit
782e95c
·
verified ·
1 Parent(s): 3fa9631

Update modules/studentact/current_situation_interface.py

Browse files
modules/studentact/current_situation_interface.py CHANGED
@@ -201,48 +201,101 @@ def display_current_situation_interface(lang_code, nlp_models, t):
201
 
202
  def display_baseline_interface(lang_code, nlp_models, t):
203
  """Interfaz para establecer línea base"""
204
- # ... código existente de entrada de texto ...
205
-
206
- if st.button("Establecer como línea base"):
207
- metrics = analyze_text_dimensions(doc)
208
- store_baseline_metrics(
209
- username=st.session_state.username,
210
- metrics=metrics,
211
- text=text_input,
212
- timestamp=datetime.now()
213
  )
214
- st.success("Línea base establecida")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
215
 
216
  def display_comparison_interface(lang_code, nlp_models, t):
217
  """Interfaz para comparar progreso"""
218
- # Obtener línea base
219
- baseline = get_baseline_metrics(st.session_state.username)
220
-
221
- if not baseline:
222
- st.warning("Primero debes establecer una línea base")
223
- return
224
-
225
- # Mostrar entrada de texto actual
226
- current_text = st.text_area("Nuevo texto")
227
-
228
- if st.button("Analizar progreso"):
229
- current_metrics = analyze_text_dimensions(nlp_models[lang_code](current_text))
230
 
231
- # Mostrar comparación
232
- display_comparison_results(
233
- baseline_metrics=baseline['metrics'],
234
- current_metrics=current_metrics
235
- )
 
236
 
237
- # Opción para guardar progreso
238
- if st.button("Guardar este progreso"):
239
- store_progress_metrics(
240
- username=st.session_state.username,
241
- metrics=current_metrics,
242
- text=current_text,
243
- timestamp=datetime.now()
 
 
 
 
 
 
 
244
  )
245
- st.success("Progreso guardado")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
246
 
247
  ###################################
248
 
@@ -275,6 +328,7 @@ def display_comparison_results(baseline_metrics, current_metrics):
275
  current_metrics
276
  )
277
 
 
278
  def suggest_improvement_tools(dimension):
279
  """Sugiere herramientas basadas en la dimensión"""
280
  suggestions = []
@@ -288,6 +342,52 @@ def suggest_improvement_tools(dimension):
288
 
289
  ###################################
290
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
291
  def display_results(metrics, text_type=None):
292
  """
293
  Muestra los resultados del análisis: métricas verticalmente y gráfico radar.
 
201
 
202
  def display_baseline_interface(lang_code, nlp_models, t):
203
  """Interfaz para establecer línea base"""
204
+ try:
205
+ st.markdown("### Establecer Línea Base")
206
+
207
+ text_input = st.text_area(
208
+ "Texto para línea base",
209
+ height=300,
210
+ help="Este texto servirá como punto de referencia para medir tu progreso"
 
 
211
  )
212
+
213
+ if st.button("Establecer como línea base", type="primary"):
214
+ with st.spinner("Analizando texto base..."):
215
+ # Analizar el texto
216
+ doc = nlp_models[lang_code](text_input)
217
+ metrics = analyze_text_dimensions(doc)
218
+
219
+ # Guardar como línea base
220
+ success = store_writing_baseline(
221
+ username=st.session_state.username,
222
+ metrics=metrics,
223
+ text=text_input
224
+ )
225
+
226
+ if success:
227
+ st.success("Línea base establecida con éxito")
228
+ # Mostrar el gráfico radar inicial
229
+ metrics_config = prepare_metrics_config(metrics)
230
+ display_radar_chart(metrics_config, TEXT_TYPES['student_essay']['thresholds'])
231
+ else:
232
+ st.error("Error al guardar la línea base")
233
+
234
+ except Exception as e:
235
+ logger.error(f"Error en interfaz de línea base: {str(e)}")
236
+ st.error("Error al establecer línea base")
237
+
238
+
239
+
240
+ ###################################
241
 
242
  def display_comparison_interface(lang_code, nlp_models, t):
243
  """Interfaz para comparar progreso"""
244
+ try:
245
+ # Obtener línea base
246
+ baseline = get_writing_baseline(st.session_state.username)
 
 
 
 
 
 
 
 
 
247
 
248
+ if not baseline:
249
+ st.warning("Primero debes establecer una línea base")
250
+ return
251
+
252
+ # Crear dos columnas
253
+ col1, col2 = st.columns(2)
254
 
255
+ with col1:
256
+ st.markdown("### Línea Base")
257
+ st.text_area(
258
+ "Texto original",
259
+ value=baseline['text'],
260
+ disabled=True,
261
+ height=200
262
+ )
263
+
264
+ with col2:
265
+ st.markdown("### Nuevo Texto")
266
+ current_text = st.text_area(
267
+ "Ingresa el nuevo texto a comparar",
268
+ height=200
269
  )
270
+
271
+ if st.button("Analizar progreso", type="primary"):
272
+ with st.spinner("Analizando progreso..."):
273
+ # Analizar texto actual
274
+ doc = nlp_models[lang_code](current_text)
275
+ current_metrics = analyze_text_dimensions(doc)
276
+
277
+ # Mostrar comparación
278
+ display_comparison_results(
279
+ baseline_metrics=baseline['metrics'],
280
+ current_metrics=current_metrics
281
+ )
282
+
283
+ # Opción para guardar progreso
284
+ if st.button("Guardar este progreso"):
285
+ success = store_writing_progress(
286
+ username=st.session_state.username,
287
+ metrics=current_metrics,
288
+ text=current_text
289
+ )
290
+
291
+ if success:
292
+ st.success("Progreso guardado exitosamente")
293
+ else:
294
+ st.error("Error al guardar el progreso")
295
+
296
+ except Exception as e:
297
+ logger.error(f"Error en interfaz de comparación: {str(e)}")
298
+ st.error("Error al mostrar comparación")
299
 
300
  ###################################
301
 
 
328
  current_metrics
329
  )
330
 
331
+ ###################################
332
  def suggest_improvement_tools(dimension):
333
  """Sugiere herramientas basadas en la dimensión"""
334
  suggestions = []
 
342
 
343
  ###################################
344
 
345
+ def prepare_metrics_config(metrics, text_type='student_essay'):
346
+ """
347
+ Prepara la configuración de métricas en el mismo formato que display_results.
348
+ Args:
349
+ metrics: Diccionario con las métricas analizadas
350
+ text_type: Tipo de texto para los umbrales
351
+ Returns:
352
+ list: Lista de configuraciones de métricas
353
+ """
354
+ # Obtener umbrales según el tipo de texto
355
+ thresholds = TEXT_TYPES[text_type]['thresholds']
356
+
357
+ # Usar la misma estructura que en display_results
358
+ return [
359
+ {
360
+ 'label': "Vocabulario",
361
+ 'key': 'vocabulary',
362
+ 'value': metrics['vocabulary']['normalized_score'],
363
+ 'help': "Riqueza y variedad del vocabulario",
364
+ 'thresholds': thresholds['vocabulary']
365
+ },
366
+ {
367
+ 'label': "Estructura",
368
+ 'key': 'structure',
369
+ 'value': metrics['structure']['normalized_score'],
370
+ 'help': "Organización y complejidad de oraciones",
371
+ 'thresholds': thresholds['structure']
372
+ },
373
+ {
374
+ 'label': "Cohesión",
375
+ 'key': 'cohesion',
376
+ 'value': metrics['cohesion']['normalized_score'],
377
+ 'help': "Conexión y fluidez entre ideas",
378
+ 'thresholds': thresholds['cohesion']
379
+ },
380
+ {
381
+ 'label': "Claridad",
382
+ 'key': 'clarity',
383
+ 'value': metrics['clarity']['normalized_score'],
384
+ 'help': "Facilidad de comprensión del texto",
385
+ 'thresholds': thresholds['clarity']
386
+ }
387
+ ]
388
+
389
+ ###################################
390
+
391
  def display_results(metrics, text_type=None):
392
  """
393
  Muestra los resultados del análisis: métricas verticalmente y gráfico radar.