Files
ai-contract-platform/backend/app/main.py
T

85 lines
4.3 KiB
Python

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.clauses import router as clauses_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.legal_articles import router as legal_articles_router
from app.api.legal_change_impacts import router as legal_change_impacts_router
from app.api.legal_document_drafts import router as legal_document_drafts_router
from app.api.legal_document_types import router as legal_document_types_router
from app.api.operation_kpis import router as operation_kpis_router
from app.api.pilot_requests import router as pilot_requests_router
from app.api.quality_evals import router as quality_evals_router
from app.api.prompt_assets import router as prompt_assets_router
from app.api.review_rules import router as review_rules_router
from app.api.reviews import router as reviews_router
from app.api.sales_followups import router as sales_followups_router
from app.api.standard_clauses import router as standard_clauses_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(clauses_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(legal_articles_router, prefix=settings.api_v1_prefix)
app.include_router(legal_change_impacts_router, prefix=settings.api_v1_prefix)
app.include_router(legal_document_drafts_router, prefix=settings.api_v1_prefix)
app.include_router(legal_document_types_router, prefix=settings.api_v1_prefix)
app.include_router(operation_kpis_router, prefix=settings.api_v1_prefix)
app.include_router(pilot_requests_router, prefix=settings.api_v1_prefix)
app.include_router(quality_evals_router, prefix=settings.api_v1_prefix)
app.include_router(prompt_assets_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(sales_followups_router, prefix=settings.api_v1_prefix)
app.include_router(standard_clauses_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"})