Spaces:
Running
Running
import gradio as gr | |
from pathlib import Path | |
# Initialize Sentry first (before other imports) | |
try: | |
from utils.sentry_integration import initialize_sentry | |
sentry_initialized = initialize_sentry() | |
if sentry_initialized: | |
print("✅ Sentry monitoring enabled") | |
else: | |
print("⚠️ Sentry monitoring disabled (no DSN configured)") | |
except Exception as e: | |
raise | |
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: | |
raise |