From 3f96c9c6502243b06efd4bb34a189e72e3a5557c Mon Sep 17 00:00:00 2001
From: yearning <10538594+wangweifeng1999@user.noreply.gitee.com>
Date: 星期一, 28 九月 2026 19:24:55 +0800
Subject: [PATCH] 复制项目
---
backend/app/main.py | 66 +++++++++++++++++++++++++++++++++
1 files changed, 66 insertions(+), 0 deletions(-)
diff --git a/backend/app/main.py b/backend/app/main.py
new file mode 100644
index 0000000..dfd53c4
--- /dev/null
+++ b/backend/app/main.py
@@ -0,0 +1,66 @@
+from pathlib import Path
+
+from fastapi import FastAPI
+from fastapi.middleware.cors import CORSMiddleware
+from fastapi.staticfiles import StaticFiles
+
+from app.config import settings
+from app.database import Base, engine
+from app.routers import (
+ admin_graders_router,
+ admin_import_router,
+ attempts_router,
+ auth_router,
+ scores_router,
+ settings_router,
+)
+from app.system_settings import ensure_upload_dir
+
+app = FastAPI(title="鑰冭瘯闃呭嵎绯荤粺")
+
+origins = [o.strip() for o in settings.cors_origins.split(",") if o.strip()]
+app.add_middleware(
+ CORSMiddleware,
+ allow_origins=origins,
+ allow_credentials=True,
+ allow_methods=["*"],
+ allow_headers=["*"],
+)
+
+app.include_router(auth_router.router)
+app.include_router(scores_router.router)
+app.include_router(attempts_router.router)
+app.include_router(admin_import_router.router)
+app.include_router(admin_graders_router.router)
+app.include_router(settings_router.router)
+
+
+@app.on_event("startup")
+def startup():
+ import app.models # noqa: F401 鈥� 娉ㄥ唽鍏ㄩ儴 ORM 琛�
+
+ Path(settings.database_url.replace("sqlite:///", "")).parent.mkdir(parents=True, exist_ok=True)
+ ensure_upload_dir()
+ Base.metadata.create_all(bind=engine)
+ with engine.begin() as conn:
+ conn.exec_driver_sql("CREATE INDEX IF NOT EXISTS ix_users_role ON users (role)")
+ try:
+ conn.exec_driver_sql(
+ "ALTER TABLE import_batch ADD COLUMN exam_ids_json TEXT NOT NULL DEFAULT '[]'"
+ )
+ except Exception:
+ pass
+
+ from app.database import SessionLocal
+ from app.system_settings import get_or_create_settings
+
+ db = SessionLocal()
+ try:
+ get_or_create_settings(db)
+ finally:
+ db.close()
+
+
+dist = Path(__file__).resolve().parents[2] / "frontend" / "dist"
+if dist.exists():
+ app.mount("/", StaticFiles(directory=str(dist), html=True), name="static")
--
Gitblit v1.8.0