from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from contextlib import asynccontextmanager from app.config import settings from app.database import init_db from app.api.router import api_router from app.core.exceptions import register_exception_handlers from app.notifications.manager import notification_manager from app.ai.manager import ai_manager @asynccontextmanager async def lifespan(app: FastAPI): await init_db() notification_manager.load_providers() from app.ai.openai_provider import OpenAIVisionProvider, OpenAITextProvider if settings.AI_PROVIDER == "openai": ai_manager.register_vision_provider("openai", OpenAIVisionProvider()) ai_manager.register_text_provider("openai", OpenAITextProvider()) yield app = FastAPI( title="药箱 API", description="家庭药品与应急物资管理系统 API", version="1.0.0", lifespan=lifespan, docs_url="/docs" if settings.DEBUG else None, redoc_url="/redoc" if settings.DEBUG else None, ) app.add_middleware( CORSMiddleware, allow_origins=settings.CORS_ORIGINS, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(api_router, prefix="/api") register_exception_handlers(app) @app.get("/health") async def health_check(): return {"status": "healthy", "version": "1.0.0"}