| 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 | |
| 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") | |
| async def health() -> dict[str, str]: | |
| return {"status": "ok"} | |