AIdeaText commited on
Commit
7f28e14
verified
1 Parent(s): 78a6940

Update modules/morphosyntax/morphosyntax_interface.py

Browse files
modules/morphosyntax/morphosyntax_interface.py CHANGED
@@ -112,7 +112,9 @@ def display_morphosyntax_interface(lang_code, nlp_models, morpho_t):
112
  </style>
113
  """, unsafe_allow_html=True)
114
 
115
- # Inicializar estado
 
 
116
  initialize_arc_analysis_state()
117
 
118
  # Crear subtabs
@@ -188,100 +190,85 @@ def display_morphosyntax_interface(lang_code, nlp_models, morpho_t):
188
  st.error("Error al procesar texto original")
189
  logger.error(f"Error al procesar texto original: {str(e)}")
190
 
191
- # Secci贸n de iteraci贸n
192
- if st.session_state.arc_analysis_state.get('original_analysis'):
193
- with iteration_input_container:
194
- st.markdown("---")
195
-
196
- # Usar un formulario con callback
197
- def on_iteration_submit():
198
- st.session_state.iteration_submitted = True
199
-
200
- with st.form(key="iteration_form"):
201
- iteration_key = f"iteration_{st.session_state.arc_analysis_state['analysis_count']}"
202
- iteration_text = st.text_area(
203
- "",
204
- value=st.session_state.arc_analysis_state.get('iteration_text', ''),
205
- key=iteration_key,
206
- height=100
207
- )
208
-
209
- # Guardar en estado temporal
210
- if iteration_text:
211
- st.session_state.temp_iteration_text = iteration_text
212
 
213
- iterate_button = st.form_submit_button(
214
- "Analizar Cambios",
215
- type="primary",
216
- use_container_width=True,
217
- on_click=on_iteration_submit
218
- )
219
-
220
- # Procesar iteraci贸n cuando se env铆a el formulario
221
- if hasattr(st.session_state, 'iteration_submitted') and st.session_state.iteration_submitted:
222
- iteration_text = getattr(st.session_state, 'temp_iteration_text', '')
223
-
224
- if iteration_text.strip():
225
- try:
226
- # Verificar si ya existe en cach茅
227
- cache_key = f"iter_{iteration_text}"
228
- cached_result = get_cached_analysis(cache_key)
229
-
230
- if cached_result:
231
- logger.info("Usando resultado cacheado")
232
- doc_iter = cached_result['doc']
233
- analysis_iter = cached_result['analysis']
234
- else:
235
- logger.info("Generando nuevo an谩lisis")
236
- doc_iter = nlp_models[lang_code](iteration_text)
237
- analysis_iter = perform_advanced_morphosyntactic_analysis(
238
- iteration_text,
239
- nlp_models[lang_code]
240
- )
241
- # Guardar en cach茅
242
- cache_analysis_results(cache_key, {
243
- 'doc': doc_iter,
244
- 'analysis': analysis_iter
245
- })
246
-
247
- # Actualizar estado
248
- st.session_state.arc_analysis_state.update({
249
- 'iteration_text': iteration_text,
250
- 'iteration_analysis': {'doc': doc_iter, 'analysis': analysis_iter}
251
- })
252
-
253
- if store_student_morphosyntax_result(
254
- username=st.session_state.username,
255
- text=iteration_text,
256
- arc_diagrams=analysis_iter['arc_diagrams']
257
- ):
258
- # Mostrar ambos an谩lisis
259
- col1, col2 = st.columns(2)
260
-
261
- with col1:
262
- display_original_analysis(
263
- original_diagram_container,
264
- st.session_state.arc_analysis_state['original_analysis'],
265
- lang_code,
266
- morpho_t
267
- )
268
 
269
- with col2:
270
- display_iteration_analysis(
271
- iteration_diagram_container,
272
- {'doc': doc_iter, 'analysis': analysis_iter},
273
- lang_code,
274
- morpho_t
 
 
 
 
275
  )
 
 
 
 
 
 
 
 
 
 
 
276
 
277
- # Limpiar flag de env铆o
278
- st.session_state.iteration_submitted = False
279
-
280
- except Exception as e:
281
- st.error("Error al procesar iteraci贸n")
282
- logger.error(f"Error al procesar iteraci贸n: {str(e)}")
283
- # Limpiar flag de env铆o en caso de error
284
- st.session_state.iteration_submitted = False
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
285
 
286
  # Otros subtabs...
287
  with subtabs[1]:
 
112
  </style>
113
  """, unsafe_allow_html=True)
114
 
115
+ # Inicializar estado y mantener tab activo
116
+ st.session_state.tab_states['morpho_active'] = True
117
+ st.session_state.selected_tab = 1
118
  initialize_arc_analysis_state()
119
 
120
  # Crear subtabs
 
190
  st.error("Error al procesar texto original")
191
  logger.error(f"Error al procesar texto original: {str(e)}")
192
 
193
+ # Secci贸n de iteraci贸n
194
+ if st.session_state.arc_analysis_state.get('original_analysis'):
195
+ with iteration_input_container:
196
+ st.markdown("---")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
197
 
198
+ # Formulario de iteraci贸n
199
+ with st.form(key="iteration_form"):
200
+ iteration_text = st.text_area(
201
+ "",
202
+ value=st.session_state.arc_analysis_state.get('iteration_text', ''),
203
+ key=f"iteration_{st.session_state.arc_analysis_state['analysis_count']}",
204
+ height=100
205
+ )
206
+
207
+ # Bot贸n de an谩lisis dentro del formulario
208
+ submitted = st.form_submit_button(
209
+ "Analizar Cambios",
210
+ type="primary",
211
+ use_container_width=True
212
+ )
213
+
214
+ # Cuando se env铆a el formulario
215
+ if submitted and iteration_text.strip():
216
+ try:
217
+ # Verificar si ya existe en cach茅
218
+ cache_key = f"iter_{iteration_text}"
219
+ cached_result = get_cached_analysis(cache_key)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
220
 
221
+ if cached_result:
222
+ logger.info("Usando resultado cacheado")
223
+ doc_iter = cached_result['doc']
224
+ analysis_iter = cached_result['analysis']
225
+ else:
226
+ logger.info("Generando nuevo an谩lisis")
227
+ doc_iter = nlp_models[lang_code](iteration_text)
228
+ analysis_iter = perform_advanced_morphosyntactic_analysis(
229
+ iteration_text,
230
+ nlp_models[lang_code]
231
  )
232
+ # Guardar en cach茅
233
+ cache_analysis_results(cache_key, {
234
+ 'doc': doc_iter,
235
+ 'analysis': analysis_iter
236
+ })
237
+
238
+ # Actualizar estado
239
+ st.session_state.arc_analysis_state.update({
240
+ 'iteration_text': iteration_text,
241
+ 'iteration_analysis': {'doc': doc_iter, 'analysis': analysis_iter}
242
+ })
243
 
244
+ if store_student_morphosyntax_result(
245
+ username=st.session_state.username,
246
+ text=iteration_text,
247
+ arc_diagrams=analysis_iter['arc_diagrams']
248
+ ):
249
+ # Mostrar an谩lisis en columnas
250
+ col1, col2 = st.columns(2)
251
+
252
+ # Mostrar ambos an谩lisis
253
+ with col1:
254
+ display_original_analysis(
255
+ original_diagram_container,
256
+ st.session_state.arc_analysis_state['original_analysis'],
257
+ lang_code,
258
+ morpho_t
259
+ )
260
+
261
+ with col2:
262
+ display_iteration_analysis(
263
+ iteration_diagram_container,
264
+ {'doc': doc_iter, 'analysis': analysis_iter},
265
+ lang_code,
266
+ morpho_t
267
+ )
268
+
269
+ except Exception as e:
270
+ st.error("Error al procesar iteraci贸n")
271
+ logger.error(f"Error al procesar iteraci贸n: {str(e)}")
272
 
273
  # Otros subtabs...
274
  with subtabs[1]: