69 lines
1.6 KiB
Python
69 lines
1.6 KiB
Python
import utils.openapi_patch # noqa: F401
|
|
|
|
from contextlib import asynccontextmanager
|
|
|
|
from fastapi import Depends, FastAPI
|
|
from fastapi.security import OAuth2PasswordBearer
|
|
|
|
from ai_platform.router import router as ai_platform_router
|
|
from app.config import settings
|
|
from core.router import router as core_router
|
|
from core.websocket.router import router as websocket_router
|
|
from utils.auth_middleware import AuthPermissionMiddleware
|
|
from utils.redis import RedisClient
|
|
|
|
|
|
oauth2_scheme = OAuth2PasswordBearer(
|
|
tokenUrl="/api/v1/core/auth/login/oauth2",
|
|
auto_error=False,
|
|
)
|
|
|
|
|
|
@asynccontextmanager
|
|
async def lifespan(app: FastAPI):
|
|
from app.config_manager import config_manager
|
|
|
|
await config_manager.warmup()
|
|
try:
|
|
yield
|
|
finally:
|
|
await RedisClient.close()
|
|
|
|
|
|
app = FastAPI(
|
|
title=settings.APP_NAME,
|
|
description="AI Agent Admin API",
|
|
version="1.0.0",
|
|
debug=settings.DEBUG,
|
|
lifespan=lifespan,
|
|
swagger_ui_init_oauth={
|
|
"usePkceWithAuthorizationCodeGrant": True,
|
|
},
|
|
)
|
|
|
|
app.add_middleware(AuthPermissionMiddleware)
|
|
|
|
app.include_router(core_router, prefix="/api/core", dependencies=[Depends(oauth2_scheme)])
|
|
app.include_router(ai_platform_router, prefix="/api/ai", dependencies=[Depends(oauth2_scheme)])
|
|
app.include_router(websocket_router)
|
|
|
|
|
|
@app.get("/", tags=["root"])
|
|
async def root():
|
|
return {
|
|
"message": f"Welcome to {settings.APP_NAME}",
|
|
"env": settings.ENV,
|
|
"docs": "/docs",
|
|
}
|
|
|
|
|
|
if __name__ == "__main__":
|
|
import uvicorn
|
|
|
|
uvicorn.run(
|
|
"main:app",
|
|
host=settings.APP_HOST,
|
|
port=settings.APP_PORT,
|
|
reload=settings.DEBUG,
|
|
)
|