35 lines
1.1 KiB
Python
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)
|