Files
more_dots/services/common/app_errors.py
T
2026-03-24 18:07:22 +08:00

37 lines
1.1 KiB
Python

from __future__ import annotations
from dataclasses import dataclass
from enum import Enum
from typing import Any, Dict, Optional
class ErrorCode(str, Enum):
INVALID_REQUEST = "INVALID_REQUEST"
INVALID_WORKFLOW_TYPE = "INVALID_WORKFLOW_TYPE"
INVALID_RESPONSE_MODE = "INVALID_RESPONSE_MODE"
SQL_GENERATION_FAILED = "SQL_GENERATION_FAILED"
TABLE_MATCH_FAILED = "TABLE_MATCH_FAILED"
SQL_EXECUTION_FAILED = "SQL_EXECUTION_FAILED"
RAGFLOW_RETRIEVE_FAILED = "RAGFLOW_RETRIEVE_FAILED"
CONVERSATION_NOT_FOUND = "CONVERSATION_NOT_FOUND"
CONVERSATION_CREATE_FAILED = "CONVERSATION_CREATE_FAILED"
CONVERSATION_UPDATE_FAILED = "CONVERSATION_UPDATE_FAILED"
MESSAGE_SAVE_FAILED = "MESSAGE_SAVE_FAILED"
CONFIG_INVALID = "CONFIG_INVALID"
INTERNAL_ERROR = "INTERNAL_ERROR"
@dataclass
class AppError(Exception):
code: ErrorCode
message: str
status_code: int = 500
detail: Optional[Dict[str, Any]] = None
def to_dict(self) -> Dict[str, Any]:
return {
"code": self.code.value,
"message": self.message,
"detail": self.detail or {},
}