Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -485,12 +485,15 @@ if submitted:
|
|
| 485 |
st.error("No se pudieron identificar alimentos o síntomas claros en tu descripción.")
|
| 486 |
st.session_state.search_results = []
|
| 487 |
|
|
|
|
|
|
|
| 488 |
if st.session_state.search_results is not None:
|
| 489 |
results = st.session_state.search_results
|
| 490 |
|
| 491 |
if not results:
|
| 492 |
st.warning(f"No se encontraron coincidencias claras para tu caso: '{st.session_state.user_query}'.")
|
| 493 |
else:
|
|
|
|
| 494 |
col1, col2 = st.columns([3,1])
|
| 495 |
with col1:
|
| 496 |
st.success(f"Hemos encontrado {len(results)} posible(s) causa(s) relacionada(s) con tu caso.")
|
|
@@ -503,14 +506,15 @@ if st.session_state.search_results is not None:
|
|
| 503 |
mime="text/plain"
|
| 504 |
)
|
| 505 |
|
| 506 |
-
|
|
|
|
| 507 |
chart = create_relevance_chart(results)
|
| 508 |
st.altair_chart(chart, use_container_width=True)
|
| 509 |
|
|
|
|
| 510 |
best_match_data = results[0]
|
| 511 |
best_match = best_match_data['entry']
|
| 512 |
with st.expander(f"**Análisis Detallado de la Principal Coincidencia: {best_match.get('condicion_asociada')}**", expanded=True):
|
| 513 |
-
# ... (código del popover y desglose de puntuación no cambia)
|
| 514 |
col1, col2 = st.columns([3, 1])
|
| 515 |
with col1:
|
| 516 |
st.markdown("##### Desglose de la Puntuación de Relevancia:")
|
|
@@ -553,24 +557,36 @@ if st.session_state.search_results is not None:
|
|
| 553 |
st.session_state.analysis_cache['best_match_analysis'] = generate_detailed_analysis(st.session_state.user_query, best_match)
|
| 554 |
st.markdown(st.session_state.analysis_cache['best_match_analysis'])
|
| 555 |
|
| 556 |
-
# --- SECCIÓN
|
| 557 |
if len(results) > 1:
|
| 558 |
-
with st.expander("**
|
| 559 |
-
|
|
|
|
| 560 |
with st.container(border=True):
|
| 561 |
entry = result['entry']
|
| 562 |
score = result['score']
|
|
|
|
| 563 |
st.subheader(f"{i+2}. {entry.get('condicion_asociada')}")
|
| 564 |
-
|
| 565 |
-
|
| 566 |
-
|
|
|
|
| 567 |
if result.get('matched_symptoms'):
|
| 568 |
-
st.
|
| 569 |
-
st.
|
| 570 |
-
|
|
|
|
|
|
|
| 571 |
analysis_key = f"analysis_{i+2}"
|
| 572 |
-
if st.button(
|
| 573 |
-
with st.spinner("Generando análisis..."):
|
|
|
|
| 574 |
st.session_state.analysis_cache[analysis_key] = generate_detailed_analysis(st.session_state.user_query, entry)
|
| 575 |
-
|
| 576 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 485 |
st.error("No se pudieron identificar alimentos o síntomas claros en tu descripción.")
|
| 486 |
st.session_state.search_results = []
|
| 487 |
|
| 488 |
+
# --- INICIA EL BLOQUE DE CÓDIGO A REEMPLAZAR ---
|
| 489 |
+
|
| 490 |
if st.session_state.search_results is not None:
|
| 491 |
results = st.session_state.search_results
|
| 492 |
|
| 493 |
if not results:
|
| 494 |
st.warning(f"No se encontraron coincidencias claras para tu caso: '{st.session_state.user_query}'.")
|
| 495 |
else:
|
| 496 |
+
# --- Cabecera de resultados y botón de descarga (sin cambios) ---
|
| 497 |
col1, col2 = st.columns([3,1])
|
| 498 |
with col1:
|
| 499 |
st.success(f"Hemos encontrado {len(results)} posible(s) causa(s) relacionada(s) con tu caso.")
|
|
|
|
| 506 |
mime="text/plain"
|
| 507 |
)
|
| 508 |
|
| 509 |
+
# --- Gráfico de relevancia (sin cambios) ---
|
| 510 |
+
st.subheader("Análisis de Relevancia de las Coinciden cias")
|
| 511 |
chart = create_relevance_chart(results)
|
| 512 |
st.altair_chart(chart, use_container_width=True)
|
| 513 |
|
| 514 |
+
# --- Análisis detallado del MEJOR resultado (sin cambios) ---
|
| 515 |
best_match_data = results[0]
|
| 516 |
best_match = best_match_data['entry']
|
| 517 |
with st.expander(f"**Análisis Detallado de la Principal Coincidencia: {best_match.get('condicion_asociada')}**", expanded=True):
|
|
|
|
| 518 |
col1, col2 = st.columns([3, 1])
|
| 519 |
with col1:
|
| 520 |
st.markdown("##### Desglose de la Puntuación de Relevancia:")
|
|
|
|
| 557 |
st.session_state.analysis_cache['best_match_analysis'] = generate_detailed_analysis(st.session_state.user_query, best_match)
|
| 558 |
st.markdown(st.session_state.analysis_cache['best_match_analysis'])
|
| 559 |
|
| 560 |
+
# --- NUEVA SECCIÓN MEJORADA: HASTA 4 OTRAS POSIBILIDADES ---
|
| 561 |
if len(results) > 1:
|
| 562 |
+
with st.expander("🔍 **Explora otras posibilidades relevantes (Diagnóstico Diferencial)**"):
|
| 563 |
+
# Iteramos sobre los resultados del 2 al 5 (hasta 4 alternativas)
|
| 564 |
+
for i, result in enumerate(results[1:5]):
|
| 565 |
with st.container(border=True):
|
| 566 |
entry = result['entry']
|
| 567 |
score = result['score']
|
| 568 |
+
|
| 569 |
st.subheader(f"{i+2}. {entry.get('condicion_asociada')}")
|
| 570 |
+
|
| 571 |
+
col_info, col_action = st.columns([3, 1])
|
| 572 |
+
|
| 573 |
+
with col_info:
|
| 574 |
if result.get('matched_symptoms'):
|
| 575 |
+
st.markdown(f"**Pistas Clave (Síntomas Coincidentes):** {', '.join(result['matched_symptoms']).capitalize()}")
|
| 576 |
+
st.markdown(f"**Alimentos Típicos Asociados:** {entry.get('compuesto_alimento')}")
|
| 577 |
+
|
| 578 |
+
with col_action:
|
| 579 |
+
st.metric("Relevancia", score['total'])
|
| 580 |
analysis_key = f"analysis_{i+2}"
|
| 581 |
+
if st.button("Generar análisis", key=analysis_key, help=f"Generar análisis de IA para {entry.get('condicion_asociada')}"):
|
| 582 |
+
with st.spinner(f"Generando análisis para {entry.get('condicion_asociada')}..."):
|
| 583 |
+
# Guardamos el análisis en el cache para no regenerarlo
|
| 584 |
st.session_state.analysis_cache[analysis_key] = generate_detailed_analysis(st.session_state.user_query, entry)
|
| 585 |
+
|
| 586 |
+
# Muestra el análisis si ya fue generado y guardado en el cache
|
| 587 |
+
if analysis_key in st.session_state.analysis_cache:
|
| 588 |
+
st.info(st.session_state.analysis_cache[analysis_key])
|
| 589 |
+
|
| 590 |
+
# Añade un separador visual, excepto para el último elemento
|
| 591 |
+
if i < len(results[1:5]) - 1:
|
| 592 |
+
st.markdown("---")
|