from __future__ import annotations import sys from pathlib import Path import streamlit as st from jarca_ledger_mcp.adapters.streamlit import overview_gateway # Streamlit executes this file as a script, so ensure absolute dashboard imports # resolve identically to package imports used by tests. if __package__ in (None, ""): sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) st.set_page_config(page_title="Jarca Ledger", page_icon="๐ฐ", layout="wide") from dashboard.common import ( clear_cache, get_db_path, get_transfer_review_items, # noqa: F401 inject_app_css, render_dashboard_body, render_sidebar_nav, validate_dashboard_page, ) # noqa: F401 from dashboard.authentication import require_dashboard_authentication from dashboard.page_views.accounts import page_accounts from dashboard.page_views.assets import page_assets from dashboard.page_views.categories import page_categories from dashboard.page_views.cross_transfer_review import page_cross_transfer_review from dashboard.page_views.imports import page_imports from dashboard.page_views.monthly_settlement import page_monthly_settlement from dashboard.page_views.overview import page_overview from dashboard.page_views.rules import page_rules from dashboard.page_views.transactions import page_transactions from dashboard.page_views.uncategorized import page_uncategorized def main() -> None: if not require_dashboard_authentication(): return db_path = get_db_path() db_status = overview_gateway.get_ledger_db_status(db_path=db_path, include_hash=False, include_integrity=False) inject_app_css() if not db_status.get("success"): st.error("Ledger DB๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค: " + db_status.get("error", "ledger database is unavailable")) return pages = ["์์ ์ฐ", "์์ฝ", "์์ฐ/๋ง๊ฐ", "๊ฑฐ๋๋ด์ญ", "ํ์ธํ์ ํ", "๋ฏธ๋ถ๋ฅ", "๋ถ๋ฅ ๊ท์น", "์นดํ ๊ณ ๋ฆฌ", "๊ณ์ข", "Import"] query_page = st.query_params.get("page") page = validate_dashboard_page(query_page, pages) st.session_state["dashboard_page"] = page with st.sidebar: st.markdown("## ๐ฐ Jarca Ledger") st.caption("๊ฐ๊ณ๋ถ ยท ๋ถ๋ฅ ยท Import ์ด์ ์ฝ์") st.markdown('