Spaces:
Sleeping
Sleeping
Download src/streamlit_app.py from FajarHidaa/HumanPlusX: direct link, hf CLI and curl.
- Browser
- Download file 3.33 kB
-
https://huggingface.co/spaces/FajarHidaa/HumanPlusX/resolve/main/src/streamlit_app.py
- Command line
-
hf download hf://spaces/FajarHidaa/HumanPlusX/src/streamlit_app.py
-
curl -L -o streamlit_app.py https://huggingface.co/spaces/FajarHidaa/HumanPlusX/resolve/main/src/streamlit_app.py
3.33 kB
| """ | |
| 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(""" | |
| <div style=" | |
| background:rgba(239,68,68,0.08); border:1px solid rgba(239,68,68,0.25); | |
| border-radius:14px; padding:24px; text-align:center; margin:40px 0 | |
| "> | |
| <div style="font-size:1.8rem; margin-bottom:12px">π</div> | |
| <div style="font-family:'DM Sans',sans-serif; font-weight:700; | |
| color:#ef4444; font-size:1rem; margin-bottom:8px"> | |
| GEMINI_API_KEY Tidak Ditemukan | |
| </div> | |
| <div style="font-family:'DM Sans',sans-serif; font-size:0.85rem; | |
| color:#8b8ba7; line-height:1.5"> | |
| Tambahkan <code>GEMINI_API_KEY</code> di:<br> | |
| HuggingFace Space β Settings β Repository Secrets | |
| </div> | |
| </div> | |
| """, 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() | |