AIdeaText commited on
Commit
220c4d4
·
verified ·
1 Parent(s): db27f14

Update modules/semantic/semantic_interface.py

Browse files
modules/semantic/semantic_interface.py CHANGED
@@ -10,6 +10,7 @@ import base64
10
  import matplotlib.pyplot as plt
11
  import pandas as pd
12
  import re
 
13
  import logging
14
 
15
  # Configuración del logger
@@ -25,12 +26,13 @@ from ..utils.widget_utils import generate_unique_key
25
  from ..database.semantic_mongo_db import store_student_semantic_result
26
  from ..database.chat_mongo_db import store_chat_history, get_chat_history
27
 
28
- # from ..database.semantic_export import export_user_interactions
 
29
 
 
30
 
31
  ###############################
32
 
33
- # En semantic_interface.py
34
  def display_semantic_interface(lang_code, nlp_models, semantic_t):
35
  try:
36
  # 1. Inicializar el estado de la sesión
@@ -42,10 +44,7 @@ def display_semantic_interface(lang_code, nlp_models, semantic_t):
42
  'pending_analysis': False # Nuevo flag para controlar el análisis pendiente
43
  }
44
 
45
- # 2. Área de carga de archivo con mensaje informativo
46
- st.info(semantic_t.get('initial_instruction',
47
- 'Para comenzar un nuevo análisis semántico, cargue un archivo de texto (.txt)'))
48
-
49
  uploaded_file = st.file_uploader(
50
  semantic_t.get('semantic_file_uploader', 'Upload a text file for semantic analysis'),
51
  type=['txt'],
@@ -53,11 +52,14 @@ def display_semantic_interface(lang_code, nlp_models, semantic_t):
53
  )
54
 
55
  # 2.1 Verificar si hay un archivo cargado y un análisis pendiente
 
56
  if uploaded_file is not None and st.session_state.semantic_state.get('pending_analysis', False):
 
57
  try:
58
  with st.spinner(semantic_t.get('processing', 'Processing...')):
59
  # Realizar análisis
60
  text_content = uploaded_file.getvalue().decode('utf-8')
 
61
 
62
  analysis_result = process_semantic_input(
63
  text_content,
@@ -122,17 +124,42 @@ def display_semantic_interface(lang_code, nlp_models, semantic_t):
122
  # 6. Mostrar resultados previos o mensaje inicial
123
  elif 'semantic_result' in st.session_state and st.session_state.semantic_result is not None:
124
  # Mostrar mensaje sobre el análisis actual
125
- st.info(
126
- semantic_t.get('current_analysis_message',
127
- 'Mostrando análisis del archivo: {}. Para realizar un nuevo análisis, cargue otro archivo.'
128
- ).format(st.session_state.semantic_state["current_file"])
129
- )
130
 
131
  display_semantic_results(
132
  st.session_state.semantic_result,
133
  lang_code,
134
  semantic_t
135
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
136
  else:
137
  st.info(semantic_t.get('upload_prompt', 'Cargue un archivo para comenzar el análisis'))
138
 
@@ -257,5 +284,4 @@ def display_semantic_results(semantic_result, lang_code, semantic_t):
257
  logger.error(f"Error displaying graph: {str(e)}")
258
  st.error(semantic_t.get('graph_error', 'Error displaying the graph'))
259
  else:
260
- st.info(semantic_t.get('no_graph', 'No concept graph available'))
261
-
 
10
  import matplotlib.pyplot as plt
11
  import pandas as pd
12
  import re
13
+
14
  import logging
15
 
16
  # Configuración del logger
 
26
  from ..database.semantic_mongo_db import store_student_semantic_result
27
  from ..database.chat_mongo_db import store_chat_history, get_chat_history
28
 
29
+ from ..semantic.semantic_agent_interaction import display_semantic_chat
30
+ from ..chatbot.sidebar_chat import display_sidebar_chat
31
 
32
+ # from ..database.semantic_export import export_user_interactions
33
 
34
  ###############################
35
 
 
36
  def display_semantic_interface(lang_code, nlp_models, semantic_t):
37
  try:
38
  # 1. Inicializar el estado de la sesión
 
44
  'pending_analysis': False # Nuevo flag para controlar el análisis pendiente
45
  }
46
 
47
+ # 2. Área de carga de archivo con mensaje informativo
 
 
 
48
  uploaded_file = st.file_uploader(
49
  semantic_t.get('semantic_file_uploader', 'Upload a text file for semantic analysis'),
50
  type=['txt'],
 
52
  )
53
 
54
  # 2.1 Verificar si hay un archivo cargado y un análisis pendiente
55
+
56
  if uploaded_file is not None and st.session_state.semantic_state.get('pending_analysis', False):
57
+
58
  try:
59
  with st.spinner(semantic_t.get('processing', 'Processing...')):
60
  # Realizar análisis
61
  text_content = uploaded_file.getvalue().decode('utf-8')
62
+ st.session_state.semantic_state['text_content'] = text_content # <-- Guardar el texto
63
 
64
  analysis_result = process_semantic_input(
65
  text_content,
 
124
  # 6. Mostrar resultados previos o mensaje inicial
125
  elif 'semantic_result' in st.session_state and st.session_state.semantic_result is not None:
126
  # Mostrar mensaje sobre el análisis actual
127
+ #st.info(
128
+ # semantic_t.get('current_analysis_message',
129
+ # 'Mostrando análisis del archivo: {}. Para realizar un nuevo análisis, cargue otro archivo.'
130
+ # ).format(st.session_state.semantic_state["current_file"])
131
+ #)
132
 
133
  display_semantic_results(
134
  st.session_state.semantic_result,
135
  lang_code,
136
  semantic_t
137
  )
138
+
139
+ # --- BOTÓN PARA ACTIVAR EL AGENTE VIRTUAL (NUEVA POSICIÓN CORRECTA) ---
140
+ if st.button(
141
+ "💬 " + semantic_t.get('semantic_virtual_agent_button', 'Analizar con Agente Virtual'),
142
+ key="activate_semantic_agent",
143
+ use_container_width=True,
144
+ type="primary"
145
+ ):
146
+
147
+ # Obtener el texto analizado
148
+ text_content = st.session_state.semantic_state.get('text_content', "")
149
+
150
+ st.session_state.semantic_agent_active = True
151
+ st.session_state.semantic_agent_data = {
152
+ 'text': text_content,
153
+ 'metrics': st.session_state.semantic_result['analysis'],
154
+ 'graph_data': st.session_state.semantic_result['analysis'].get('concept_graph')
155
+ }
156
+ st.success(semantic_t.get('semantic_agent_ready_message', 'Análisis enviado al agente virtual. Abre el chat para conversar.'))
157
+ st.rerun()
158
+
159
+ # Mostrar notificación si el agente está activo
160
+ if st.session_state.get('semantic_agent_active', False):
161
+ st.success(semantic_t.get('semantic_agent_ready_message', 'El agente virtual está listo. Abre el chat en la barra lateral.'))
162
+
163
  else:
164
  st.info(semantic_t.get('upload_prompt', 'Cargue un archivo para comenzar el análisis'))
165
 
 
284
  logger.error(f"Error displaying graph: {str(e)}")
285
  st.error(semantic_t.get('graph_error', 'Error displaying the graph'))
286
  else:
287
+ st.info(semantic_t.get('no_graph', 'No concept graph available'))