""" 自定义异常类 """ from fastapi import HTTPException, status class BaseAPIException(HTTPException): """基础API异常""" def __init__(self, status_code: int, detail: str, error_code: str = None): super().__init__(status_code=status_code, detail=detail) self.error_code = error_code class ValidationError(BaseAPIException): """验证错误""" def __init__(self, detail: str): super().__init__( status_code=status.HTTP_400_BAD_REQUEST, detail=detail, error_code="VALIDATION_ERROR" ) class NotFoundError(BaseAPIException): """资源未找到错误""" def __init__(self, resource: str, resource_id: str = None): detail = f"{resource}不存在" if resource_id: detail += f": {resource_id}" super().__init__( status_code=status.HTTP_404_NOT_FOUND, detail=detail, error_code="NOT_FOUND" ) class UnauthorizedError(BaseAPIException): """未授权错误""" def __init__(self, detail: str = "未授权访问"): super().__init__( status_code=status.HTTP_401_UNAUTHORIZED, detail=detail, error_code="UNAUTHORIZED" ) class ForbiddenError(BaseAPIException): """禁止访问错误""" def __init__(self, detail: str = "无权访问此资源"): super().__init__( status_code=status.HTTP_403_FORBIDDEN, detail=detail, error_code="FORBIDDEN" ) class ConflictError(BaseAPIException): """资源冲突错误""" def __init__(self, detail: str): super().__init__( status_code=status.HTTP_409_CONFLICT, detail=detail, error_code="CONFLICT" ) class InternalServerError(BaseAPIException): """内部服务器错误""" def __init__(self, detail: str = "服务器内部错误"): super().__init__( status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail=detail, error_code="INTERNAL_ERROR" ) class WorkflowExecutionError(BaseAPIException): """工作流执行错误""" def __init__(self, detail: str, node_id: str = None): if node_id: detail = f"节点 {node_id} 执行失败: {detail}" super().__init__( status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail=detail, error_code="WORKFLOW_EXECUTION_ERROR" )