from fastapi import FastAPI, HTTPException from fastapi.exceptions import RequestValidationError from fastapi.middleware.cors import CORSMiddleware from app.api.audit_logs import router as audit_logs_router from app.api.auth import router as auth_router from app.api.chat import router as chat_router from app.api.contracts import router as contracts_router from app.api.conversations import router as conversations_router from app.api.files import router as files_router from app.api.governance import router as governance_router from app.api.knowledge_bases import router as knowledge_bases_router from app.api.review_rules import router as review_rules_router from app.api.reviews import router as reviews_router from app.api.system import router as system_router from app.api.templates import router as templates_router from app.api.tenant_settings import router as tenant_settings_router from app.api.users import router as users_router from app.core.config import settings from app.core.response import error_response, success_response app = FastAPI(title=settings.app_name) app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(auth_router, prefix=settings.api_v1_prefix) app.include_router(reviews_router, prefix=settings.api_v1_prefix) app.include_router(chat_router, prefix=settings.api_v1_prefix) app.include_router(contracts_router, prefix=settings.api_v1_prefix) app.include_router(conversations_router, prefix=settings.api_v1_prefix) app.include_router(files_router, prefix=settings.api_v1_prefix) app.include_router(governance_router, prefix=settings.api_v1_prefix) app.include_router(knowledge_bases_router, prefix=settings.api_v1_prefix) app.include_router(review_rules_router, prefix=settings.api_v1_prefix) app.include_router(templates_router, prefix=settings.api_v1_prefix) app.include_router(tenant_settings_router, prefix=settings.api_v1_prefix) app.include_router(users_router, prefix=settings.api_v1_prefix) app.include_router(audit_logs_router, prefix=settings.api_v1_prefix) app.include_router(system_router, prefix=settings.api_v1_prefix) @app.exception_handler(HTTPException) async def http_exception_handler(_request, exc: HTTPException): return error_response(exc.detail, exc.status_code, exc.status_code) @app.exception_handler(RequestValidationError) async def validation_exception_handler(_request, exc: RequestValidationError): first_error = exc.errors()[0] if exc.errors() else None message = first_error.get("msg", "请求参数校验失败") if first_error else "请求参数校验失败" return error_response(message, 422, 422) @app.get("/health") def health_check(): return success_response({"status": "ok"})