""" Human+ Lab-to-Protocol AI Entry point — konfigurasi, health check, session state, routing. Semua logic ada di core/, UI ada di ui/, pages ada di pages/. """ import streamlit as st import warnings warnings.filterwarnings("ignore", category=UserWarning) warnings.filterwarnings("ignore", message=".*torchvision.*") warnings.filterwarnings("ignore", message=".*UNEXPECTED.*") # ── Page config (HARUS pertama) ──────────────────────────────────── st.set_page_config( page_title="Human+ Lab-to-Protocol AI", page_icon="🧬", layout="centered", initial_sidebar_state="collapsed", menu_items={ "Get Help": "https://instagram.com/bennywhitethatsright", "Report a bug": None, "About": "Human+ Bali — From Injured → Optimized", }, ) # ── Inject global CSS ────────────────────────────────────────────── from ui.styles import inject_custom_css inject_custom_css() # ── Health check: Gemini API key ─────────────────────────────────── from core.ai_client import check_client_health client_ok, client_msg = check_client_health() if not client_ok: st.markdown("""
🔑
GEMINI_API_KEY Tidak Ditemukan
Tambahkan GEMINI_API_KEY di:
HuggingFace Space → Settings → Repository Secrets
""", unsafe_allow_html=True) st.stop() # ── Global session state defaults ───────────────────────────────── _defaults = { "step": 1, "uploaded_pdf_bytes": None, "extracted_biomarkers": None, "generated_protocol": None, "pdf_filename": None, } for key, val in _defaults.items(): if key not in st.session_state: st.session_state[key] = val # ── Render hero & step indicator ────────────────────────────────── from ui.components import render_hero, render_step_indicator, render_footer render_hero() render_step_indicator(st.session_state.step) # ── Route to current step ────────────────────────────────────────── step = st.session_state.step if step == 1: from pages.upload import render_upload_page render_upload_page() elif step == 2: from pages.analysis import render_analysis_page render_analysis_page() elif step == 3: from pages.protocol import render_protocol_page render_protocol_page() render_footer()