from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from fastapi.openapi.docs import get_swagger_ui_html, get_swagger_ui_oauth2_redirect_html from app.api.router import api_router from app.core.config import get_settings settings = get_settings() app = FastAPI( title=settings.app_name, version="0.1.0", description="面向五金加工企业的流程化、工序化、成本化 ERP API 服务", docs_url=None, redoc_url=None, openapi_url="/openapi.json", ) app.add_middleware( CORSMiddleware, allow_origins=settings.cors_origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], expose_headers=["Content-Disposition"], ) app.include_router(api_router, prefix=settings.api_prefix) @app.get("/docs", include_in_schema=False) def custom_swagger_ui_html(): return get_swagger_ui_html( openapi_url=app.openapi_url, title=f"{app.title} - API 文档", oauth2_redirect_url=app.swagger_ui_oauth2_redirect_url, swagger_js_url="https://cdn.staticfile.net/swagger-ui/5.1.0/swagger-ui-bundle.js", swagger_css_url="https://cdn.staticfile.net/swagger-ui/5.1.0/swagger-ui.css", ) @app.get(app.swagger_ui_oauth2_redirect_url, include_in_schema=False) def swagger_ui_redirect(): return get_swagger_ui_oauth2_redirect_html() @app.get("/") def root() -> dict[str, str]: return { "name": settings.app_name, "env": settings.app_env, "message": "Baihua Hardware ERP API is running.", }