Build lightweight AI agent admin
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
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,
|
||||
)
|
||||
Reference in New Issue
Block a user