Files
2026-06-15 14:50:15 +08:00

51 lines
1.4 KiB
Python

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"}