first commit
This commit is contained in:
+59
@@ -0,0 +1,59 @@
|
||||
from contextlib import asynccontextmanager
|
||||
|
||||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
|
||||
from app.api.v1.router import api_router
|
||||
from app.core.config import get_settings
|
||||
from app.core.handlers import register_exception_handlers
|
||||
from app.core.logging import configure_logging
|
||||
from app.middleware.request_id import RequestIdMiddleware
|
||||
from app.middleware.authentication import AuthenticationMiddleware
|
||||
|
||||
OPENAPI_TAGS = [
|
||||
{"name": "system", "description": "服务存活与运行环境信息。"},
|
||||
{"name": "authentication", "description": "本地用户登录与访问令牌。"},
|
||||
{"name": "providers", "description": "模型提供商配置、连接检查和上游模型发现。"},
|
||||
{"name": "runs", "description": "安全测试的执行、状态与逐样例结果。"},
|
||||
{"name": "reports", "description": "测试运行的实时派生聚合报告。"},
|
||||
]
|
||||
|
||||
|
||||
@asynccontextmanager
|
||||
async def lifespan(app: FastAPI):
|
||||
configure_logging()
|
||||
yield
|
||||
|
||||
|
||||
def create_app() -> FastAPI:
|
||||
settings = get_settings()
|
||||
app = FastAPI(
|
||||
title=settings.app_name,
|
||||
version="6.0.0",
|
||||
description=(
|
||||
"AI模型内部安全测试平台。提供模型认证检查、模型发现、"
|
||||
"能力探测、测试执行、裁判和报告 API。所有时间敏感或可能"
|
||||
"触发模型调用的操作均在接口说明中明确标注;业务错误统一使用 `error` 对象返回。"
|
||||
),
|
||||
openapi_tags=OPENAPI_TAGS,
|
||||
docs_url="/docs",
|
||||
redoc_url="/redoc",
|
||||
openapi_url="/openapi.json",
|
||||
debug=settings.app_debug,
|
||||
lifespan=lifespan,
|
||||
)
|
||||
app.add_middleware(AuthenticationMiddleware)
|
||||
app.add_middleware(RequestIdMiddleware)
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=settings.cors_origins,
|
||||
allow_credentials=settings.cors_allow_credentials,
|
||||
allow_methods=settings.cors_methods,
|
||||
allow_headers=settings.cors_headers,
|
||||
)
|
||||
register_exception_handlers(app)
|
||||
app.include_router(api_router, prefix=settings.app_api_prefix)
|
||||
return app
|
||||
|
||||
|
||||
app = create_app()
|
||||
Reference in New Issue
Block a user