Files
ai-agent-admin/backend-fastapi/main.py
T
2026-06-08 18:14:59 +08:00

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,
)