JairoCesar commited on
Commit
61f3ff9
·
verified ·
1 Parent(s): ac4d63c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -15
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
- st.subheader("Análisis de Relevancia de las Coincidencias")
 
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 DE DIAGNÓSTICO DIFERENCIAL (SIN FEEDBACK) ---
557
  if len(results) > 1:
558
- with st.expander("**Otras Posibilidades Relevantes (Diagnóstico Diferencial)**"):
559
- for i, result in enumerate(results[1:4]):
 
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
- col1, col2 = st.columns([2,1])
565
- with col1:
566
- st.write(f"**Puntuación Total de Relevancia:** {score['total']}")
 
567
  if result.get('matched_symptoms'):
568
- st.write(f"**Pistas Clave (Síntomas Coincidentes):** {', '.join(result['matched_symptoms']).capitalize()}")
569
- st.write(f"**Alimentos Típicos Asociados:** {entry.get('compuesto_alimento')}")
570
- with col2:
 
 
571
  analysis_key = f"analysis_{i+2}"
572
- if st.button(f"Generar análisis para esta opción", key=analysis_key):
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
- if analysis_key in st.session_state.analysis_cache:
576
- st.info(st.session_state.analysis_cache[analysis_key])
 
 
 
 
 
 
 
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("---")