"""FastAPI application entrypoint.""" from __future__ import annotations from contextlib import asynccontextmanager from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from .. import APP_NAME, APP_VERSION from ..config import CORS_ORIGINS from ..db.database import init_db from .routes import ( sessions, files, processing, results, settings as settings_routes, export, ar, control, analytics, ) @asynccontextmanager async def lifespan(_app: FastAPI): init_db() yield app = FastAPI(title=APP_NAME, version=APP_VERSION, lifespan=lifespan) app.add_middleware( CORSMiddleware, allow_origins=CORS_ORIGINS, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) @app.get("/api/health") def health() -> dict: return {"status": "ok", "app": APP_NAME, "version": APP_VERSION} app.include_router(sessions.router) app.include_router(files.router) app.include_router(processing.router) app.include_router(results.router) app.include_router(settings_routes.router) app.include_router(settings_routes.rules_router) app.include_router(export.router) app.include_router(ar.router) app.include_router(control.router) app.include_router(analytics.router)