Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -103,6 +103,39 @@ def search_direct(query, data, notif_map):
|
|
| 103 |
return final_results
|
| 104 |
|
| 105 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 106 |
def search_with_gemini(query, event_list):
|
| 107 |
if not model: return "Error: Modelo Gemini no disponible."
|
| 108 |
system_prompt = f"""
|
|
@@ -230,6 +263,22 @@ if submitted:
|
|
| 230 |
st.session_state.search_results = results
|
| 231 |
st.session_state.last_query = query
|
| 232 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 233 |
if st.session_state.search_results is not None: st.button("Limpiar Búsqueda", on_click=clear_search_state)
|
| 234 |
st.markdown("---")
|
| 235 |
|
|
|
|
| 103 |
return final_results
|
| 104 |
|
| 105 |
|
| 106 |
+
|
| 107 |
+
|
| 108 |
+
|
| 109 |
+
def log_query(query, result_event):
|
| 110 |
+
"""Registra una consulta y su resultado en un archivo CSV."""
|
| 111 |
+
log_file = 'query_log.csv'
|
| 112 |
+
# La fecha y hora actual en formato legible
|
| 113 |
+
timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
| 114 |
+
|
| 115 |
+
# Prepara la fila a escribir
|
| 116 |
+
# Usamos comillas dobles y comas para el formato CSV
|
| 117 |
+
log_entry = f'"{timestamp}","{query.replace("\"", "\"\"")}","{result_event.replace("\"", "\"\"")}"\n'
|
| 118 |
+
|
| 119 |
+
try:
|
| 120 |
+
# Abre el archivo en modo 'append' (añadir al final)
|
| 121 |
+
# Si el archivo no existe, lo crea.
|
| 122 |
+
with open(log_file, 'a', newline='', encoding='utf-8') as f:
|
| 123 |
+
# Escribe la cabecera si el archivo está vacío
|
| 124 |
+
if f.tell() == 0:
|
| 125 |
+
f.write('"Timestamp","UserQuery","AI_Result"\n')
|
| 126 |
+
f.write(log_entry)
|
| 127 |
+
logger.info(f"Consulta registrada: {query}")
|
| 128 |
+
except Exception as e:
|
| 129 |
+
logger.error(f"Error al registrar la consulta en CSV: {e}")
|
| 130 |
+
|
| 131 |
+
|
| 132 |
+
|
| 133 |
+
|
| 134 |
+
|
| 135 |
+
|
| 136 |
+
|
| 137 |
+
|
| 138 |
+
|
| 139 |
def search_with_gemini(query, event_list):
|
| 140 |
if not model: return "Error: Modelo Gemini no disponible."
|
| 141 |
system_prompt = f"""
|
|
|
|
| 263 |
st.session_state.search_results = results
|
| 264 |
st.session_state.last_query = query
|
| 265 |
|
| 266 |
+
|
| 267 |
+
|
| 268 |
+
|
| 269 |
+
# Si se encontró al menos un resultado, lo registramos.
|
| 270 |
+
if results:
|
| 271 |
+
# Tomamos el nombre del evento del primer resultado encontrado.
|
| 272 |
+
evento_encontrado = results[0].get("info_notificacion", {}).get("Evento", "Búsqueda Directa Exitosa")
|
| 273 |
+
log_query(query, evento_encontrado)
|
| 274 |
+
else:
|
| 275 |
+
# Opcional: registrar también las búsquedas sin resultados.
|
| 276 |
+
log_query(query, "NO_ENCONTRADO")
|
| 277 |
+
|
| 278 |
+
|
| 279 |
+
|
| 280 |
+
|
| 281 |
+
|
| 282 |
if st.session_state.search_results is not None: st.button("Limpiar Búsqueda", on_click=clear_search_state)
|
| 283 |
st.markdown("---")
|
| 284 |
|