JairoCesar commited on
Commit
b48d938
·
verified ·
1 Parent(s): f31fcb2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +46 -3
app.py CHANGED
@@ -585,6 +585,24 @@ if st.session_state.start_analysis:
585
  if st.session_state.search_results is not None:
586
  results = st.session_state.search_results
587
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
588
  if not results:
589
  st.warning(f"No se encontraron coincidencias claras para tu caso: '{st.session_state.user_query}'. Prueba a describir los síntomas de otra manera.")
590
  else:
@@ -612,7 +630,7 @@ if st.session_state.search_results is not None:
612
  score_col2.metric("Puntos por Síntomas", f"{best_match_data['score']['symptoms']}")
613
  score_col3.metric("PUNTUACIÓN TOTAL", f"{best_match_data['score']['total']}", delta="Máxima coincidencia")
614
 
615
- # Contenido de la segunda columna (AHORA CORRECTAMENTE INDENTADO)
616
  with col2:
617
  st.write("") # Para alinear verticalmente el popover
618
  if foodb_index:
@@ -647,8 +665,34 @@ if st.session_state.search_results is not None:
647
  if not found_data:
648
  st.warning("No se encontraron datos moleculares para los alimentos mencionados.")
649
 
650
- # El separador y el spinner van DESPUÉS de las columnas, pero DENTRO del expander
651
  st.markdown("---")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
652
  with st.spinner("✍️ Generando un análisis personalizado con IA..."):
653
  if 'best_match_analysis' not in st.session_state.analysis_cache:
654
  try:
@@ -659,7 +703,6 @@ if st.session_state.search_results is not None:
659
  st.session_state.analysis_cache['best_match_analysis'] = "❌ Lo sentimos, no se pudo generar el análisis detallado en este momento debido a un problema con la IA. Por favor, intenta de nuevo más tarde."
660
  st.markdown(st.session_state.analysis_cache['best_match_analysis'])
661
 
662
- # El expander de "Otras posibilidades" va DESPUÉS del expander principal
663
  if len(results) > 1:
664
  with st.expander("🔍 **Explora otras posibilidades relevantes (Diagnóstico Diferencial)**"):
665
  for i, result in enumerate(results[1:5]):
 
585
  if st.session_state.search_results is not None:
586
  results = st.session_state.search_results
587
 
588
+ if not results:
589
+ st.warning(f"No se encontraron coincidencias claras para tu caso: '{st.session_state.user_query}'. Prueba a describir los síntomas de otra manera.")
590
+ else:
591
+ col1, col2 = st.columns([3,1])
592
+ with col1:
593
+ st.success(f"Hemos encontrado {len(results)} posible(s) causa(s) relacionada(s) con tu caso.")
594
+ with col2:
595
+ report_data = generate_report_text(st.session_state.user_query, results)
596
+ st.download_button(label="📄 Descargar Informe", data=report_data, file_name=f"informe_detective_{datetime.now().strftime('%Y%m%d')}.txt", mime="text/plain")
597
+
598
+ st.subheader("Análisis de Relevancia de las Coincidencias")
599
+ st.altair_chart(create_relevance_chart(results), use_container_width=True)
600
+
601
+ best_match_data = results[0]
602
+ best_match = best_match_data['entry']
603
+ if st.session_state.search_results is not None:
604
+ results = st.session_state.search_results
605
+
606
  if not results:
607
  st.warning(f"No se encontraron coincidencias claras para tu caso: '{st.session_state.user_query}'. Prueba a describir los síntomas de otra manera.")
608
  else:
 
630
  score_col2.metric("Puntos por Síntomas", f"{best_match_data['score']['symptoms']}")
631
  score_col3.metric("PUNTUACIÓN TOTAL", f"{best_match_data['score']['total']}", delta="Máxima coincidencia")
632
 
633
+ # Contenido de la segunda columna con el popover de FoodB
634
  with col2:
635
  st.write("") # Para alinear verticalmente el popover
636
  if foodb_index:
 
665
  if not found_data:
666
  st.warning("No se encontraron datos moleculares para los alimentos mencionados.")
667
 
 
668
  st.markdown("---")
669
+
670
+ # --- NUEVA SECCIÓN INTEGRADA ---
671
+ with st.container(border=True):
672
+ st.markdown("##### 🧠 Posibles Efectos Neuropsicológicos de los Componentes")
673
+
674
+ user_foods = st.session_state.entities.get("alimentos", [])
675
+ relevant_compounds = set()
676
+ if user_foods:
677
+ for food in user_foods:
678
+ if food in FOOD_TO_COMPOUND_MAP:
679
+ relevant_compounds.update(FOOD_TO_COMPOUND_MAP[food])
680
+
681
+ found_neuro_effect = False
682
+ if relevant_compounds:
683
+ for compound in sorted(list(relevant_compounds)): # Ordenar para consistencia
684
+ if compound in INTEGRATED_NEURO_FOOD_MAP:
685
+ found_neuro_effect = True
686
+ effect_info = INTEGRATED_NEURO_FOOD_MAP[compound]
687
+ with st.container(border=True):
688
+ st.subheader(f"Componente: {compound.capitalize()}")
689
+ st.markdown(f"**Efecto:** {effect_info['efecto_neuropsicologico']}")
690
+
691
+ if not found_neuro_effect:
692
+ st.info("No se encontraron efectos neuropsicológicos específicos en la base de datos para los componentes de los alimentos mencionados.")
693
+
694
+ st.markdown("---")
695
+
696
  with st.spinner("✍️ Generando un análisis personalizado con IA..."):
697
  if 'best_match_analysis' not in st.session_state.analysis_cache:
698
  try:
 
703
  st.session_state.analysis_cache['best_match_analysis'] = "❌ Lo sentimos, no se pudo generar el análisis detallado en este momento debido a un problema con la IA. Por favor, intenta de nuevo más tarde."
704
  st.markdown(st.session_state.analysis_cache['best_match_analysis'])
705
 
 
706
  if len(results) > 1:
707
  with st.expander("🔍 **Explora otras posibilidades relevantes (Diagnóstico Diferencial)**"):
708
  for i, result in enumerate(results[1:5]):