import gradio as gr from pathlib import Path from utils.logger import Logger from components.login_page import LoginPage from components.dashboard_page import DashboardPage from components.review_dashboard_page import ReviewDashboardPage from utils.database import initialize_database from config import conf log = Logger() initialize_database() CSS_FILE = Path(__file__).parent / "assets" / "styles.css" custom_css = CSS_FILE.read_text(encoding="utf-8") def build_app() -> gr.Blocks: """ می‌سازد و wiring کل اپلیکیشن را انجام می‌دهد. """ demo = gr.Blocks(title=conf.APP_TITLE, css=custom_css) with demo: # حالت سراسری برنامه به‌صورت gr.State session_state = gr.State({}) gr.Markdown(f"### {conf.APP_TITLE}") # صفحات login_page = LoginPage() dashboard_page = DashboardPage() # Phase 1 interface review_dashboard_page = ReviewDashboardPage() # Phase 2 interface # اتصال رویدادها login_page.register_callbacks(dashboard_page, session_state, review_dashboard_page) dashboard_page.register_callbacks(login_page, session_state, demo, review_dashboard_page) review_dashboard_page.register_callbacks(login_page, session_state, demo) # صف پردازش گرادیو demo.queue(default_concurrency_limit=50) log.info("App Started.") return demo if __name__ == "__main__": # try: log.info("Launching App ...") build_app().launch() # except Exception as err: # log.error(err)