from contextlib import asynccontextmanager from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app.core.config import settings from app.core.database import init_db from app.api.router import api_router @asynccontextmanager async def lifespan(app: FastAPI): """Application lifespan handler.""" # Startup # Note: In production, use Alembic migrations instead of init_db # await init_db() yield # Shutdown pass app = FastAPI( title=settings.APP_NAME, description="A troubleshooting decision tree application for MSP engineers", version="1.0.0", docs_url="/api/docs", redoc_url="/api/redoc", openapi_url="/api/openapi.json", lifespan=lifespan ) # Configure CORS app.add_middleware( CORSMiddleware, allow_origins=settings.CORS_ORIGINS, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Include API router app.include_router(api_router, prefix=settings.API_V1_PREFIX) @app.get("/") async def root(): """Root endpoint.""" return { "message": "Troubleshooting Decision Tree API", "docs": "/api/docs", "version": "1.0.0" } @app.get("/health") async def health_check(): """Health check endpoint.""" return {"status": "healthy"}