Files
xsk-education-management/app/app/main.py
T

35 lines
1.1 KiB
Python

from __future__ import annotations
from fastapi import FastAPI, Request
from fastapi.responses import JSONResponse
from .config import OPERATION_LOGS_PATH, USE_SQLITE_SOURCE, write_lock
from .data import migrate_operation_log_labels
from .repository import ensure_runtime_cache
from .routers import admin, ai_register, health, ingest, pages, records, student_profiles
app = FastAPI(title="新时空教务管理系统", version="1.0.0")
@app.on_event("startup")
def prepare_sqlite_runtime_cache() -> None:
if USE_SQLITE_SOURCE:
ensure_runtime_cache()
with write_lock:
migrate_operation_log_labels(OPERATION_LOGS_PATH)
@app.exception_handler(ValueError)
async def value_error_handler(_request: Request, exc: ValueError):
return JSONResponse(status_code=500, content={"detail": str(exc)})
app.include_router(pages.router)
app.include_router(health.router)
app.include_router(records.router)
app.include_router(student_profiles.router)
app.include_router(admin.router)
app.include_router(ai_register.router)
app.include_router(ingest.router)