#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
LivingSR-Staleness-Kor — OPTIONAL Streamlit UI.

⚠️ 이 파일은 선택(optional) UI 이며 검증 대상이 아닙니다. 정식 진입점은 main.py 입니다.
   Streamlit 미설치 환경에서는 import 실패할 수 있으나, main.py CLI 는 영향받지 않습니다.
   참고용·연구용 (research/reference only, not for clinical decisions).

실행: streamlit run app.py   (streamlit 설치 필요 — 핵심 MVP에는 불필요)
"""

try:
    import streamlit as st
except Exception:  # pragma: no cover - optional dependency
    raise SystemExit(
        "app.py 는 선택적 Streamlit UI 입니다. 'pip install streamlit' 후 "
        "'streamlit run app.py' 로 실행하세요. 핵심 검증은 'python3 main.py' 를 사용합니다."
    )

import main as core


def run():
    st.set_page_config(page_title="LivingSR-Staleness-Kor", layout="wide")
    st.title("리빙에스알스테일니스코어 / LivingSR-Staleness-Kor")
    st.warning(core.DISCLAIMER)

    srs, trials = core.load_data()

    tab1, tab2, tab3 = st.tabs(["노후화 스캔", "단일 SR", "PICO 갭"])

    with tab1:
        for sr in srs:
            ev = core.evaluate_sr(sr, trials)
            st.subheader("{} — {}".format(sr["id"], sr.get("title_kor")))
            st.write("등급:", ev["grade_label"])
            st.write("신규 적격 트라이얼:", ev["n_new"], "| 신규 N:", ev["total_new_n"])
        st.markdown("### 중복 등록")
        for a, b, sim in core.find_duplicates(srs):
            st.write("⚠️", a["id"], "↔", b["id"], "유사도", sim)

    with tab2:
        ids = [s["id"] for s in srs]
        chosen = st.selectbox("SR 선택", ids)
        sr = next(s for s in srs if s["id"] == chosen)
        ev = core.evaluate_sr(sr, trials)
        st.write(ev["grade_label"])
        st.table(ev["new_trials"])

    with tab3:
        for row in core.pico_gaps(srs):
            tag = "COVERED ({})".format(row["covered_by"]) if row["covered_by"] else "GAP ⚠️"
            st.write(tag, "—", row["label"])


if __name__ == "__main__":
    run()
