from contextlib import asynccontextmanager from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app.config import settings from app.routers.sanitize import router as sanitize_router from app.services.sanitizer import preload_pipeline @asynccontextmanager async def lifespan(app: FastAPI): # Pre-load default model at startup; other models are lazy-loaded on first use preload_pipeline(settings.default_model_name) yield app = FastAPI( title="Privacy Text Sanitizer API", version="1.0.0", lifespan=lifespan, ) app.add_middleware( CORSMiddleware, allow_origins=settings.allowed_origins, allow_methods=["GET", "POST", "OPTIONS"], allow_headers=["Content-Type"], ) app.include_router(sanitize_router, prefix="/api") @app.get("/health") async def health() -> dict[str, str]: return {"status": "ok"}