Initial commit

This commit is contained in:
Ke Sun
2025-11-30 18:22:17 +08:00
commit aea2fe391e
449 changed files with 83030 additions and 0 deletions

130
app/core/error_codes.py Normal file
View File

@@ -0,0 +1,130 @@
from enum import IntEnum
class BizCode(IntEnum):
# 通用1xxx
OK = 0
BAD_REQUEST = 1000
VALIDATION_FAILED = 1001
MISSING_PARAMETER = 1002
INVALID_PARAMETER = 1003
# 认证/鉴权2xxx/3xxx
UNAUTHORIZED = 2001
TOKEN_INVALID = 2002
TOKEN_EXPIRED = 2003
TOKEN_BLACKLISTED = 2004
PASSWORD_ERROR = 2005
LOGIN_FAILED = 2006
FORBIDDEN = 3001
TENANT_NOT_FOUND = 3002
WORKSPACE_NO_ACCESS = 3003
WORKSPACE_INVITE_NOT_FOUND = 3004
# 资源4xxx
NOT_FOUND = 4000
USER_NOT_FOUND = 4001
WORKSPACE_NOT_FOUND = 4002
MODEL_NOT_FOUND = 4003
KNOWLEDGE_NOT_FOUND = 4004
DOCUMENT_NOT_FOUND = 4005
FILE_NOT_FOUND = 4006
APP_NOT_FOUND = 4007
RELEASE_NOT_FOUND = 4008
# 冲突/状态5xxx
DUPLICATE_NAME = 5001
RESOURCE_ALREADY_EXISTS = 5002
VERSION_ALREADY_EXISTS = 5003
STATE_CONFLICT = 5004
# 应用发布6xxx
PUBLISH_FAILED = 6001
NO_DRAFT_TO_PUBLISH = 6002
ROLLBACK_TARGET_NOT_FOUND = 6003
APP_TYPE_NOT_SUPPORTED = 6004
AGENT_CONFIG_MISSING = 6005
SHARE_DISABLED = 6006
INVALID_PASSWORD = 6007
PASSWORD_REQUIRED = 6008
EMBED_NOT_ALLOWED = 6009
PERMISSION_DENIED = 6010
INVALID_CONVERSATION = 6011
# 模型7xxx
MODEL_CONFIG_INVALID = 7001
API_KEY_MISSING = 7002
PROVIDER_NOT_SUPPORTED = 7003
LLM_ERROR = 7004
EMBEDDING_ERROR = 7005
# 文件/解析8xxx
FILE_READ_ERROR = 8001
PARSER_NOT_SUPPORTED = 8002
CHUNKING_FAILED = 8003
# RAG/知识9xxx
INDEX_BUILD_FAILED = 9001
EMBEDDING_FAILED = 9002
SEARCH_FAILED = 9003
# 系统100xx
INTERNAL_ERROR = 10001
DB_ERROR = 10002
SERVICE_UNAVAILABLE = 10003
RATE_LIMITED = 10004
# 建议的HTTP状态映射如需在异常处理器中使用
HTTP_MAPPING = {
BizCode.OK: 200,
BizCode.LOGIN_FAILED: 200,
BizCode.BAD_REQUEST: 400,
BizCode.VALIDATION_FAILED: 400,
BizCode.MISSING_PARAMETER: 400,
BizCode.INVALID_PARAMETER: 400,
BizCode.UNAUTHORIZED: 401,
BizCode.TOKEN_INVALID: 401,
BizCode.TOKEN_EXPIRED: 401,
BizCode.TOKEN_BLACKLISTED: 401,
BizCode.FORBIDDEN: 403,
BizCode.TENANT_NOT_FOUND: 404,
BizCode.WORKSPACE_NO_ACCESS: 403,
BizCode.NOT_FOUND: 404,
BizCode.USER_NOT_FOUND: 200,
BizCode.WORKSPACE_NOT_FOUND: 404,
BizCode.MODEL_NOT_FOUND: 404,
BizCode.KNOWLEDGE_NOT_FOUND: 404,
BizCode.DOCUMENT_NOT_FOUND: 404,
BizCode.FILE_NOT_FOUND: 404,
BizCode.APP_NOT_FOUND: 404,
BizCode.RELEASE_NOT_FOUND: 404,
BizCode.DUPLICATE_NAME: 409,
BizCode.RESOURCE_ALREADY_EXISTS: 409,
BizCode.VERSION_ALREADY_EXISTS: 409,
BizCode.STATE_CONFLICT: 409,
BizCode.PUBLISH_FAILED: 500,
BizCode.NO_DRAFT_TO_PUBLISH: 400,
BizCode.ROLLBACK_TARGET_NOT_FOUND: 404,
BizCode.APP_TYPE_NOT_SUPPORTED: 400,
BizCode.AGENT_CONFIG_MISSING: 400,
BizCode.SHARE_DISABLED: 403,
BizCode.INVALID_PASSWORD: 401,
BizCode.PASSWORD_REQUIRED: 401,
BizCode.EMBED_NOT_ALLOWED: 403,
BizCode.PERMISSION_DENIED: 403,
BizCode.INVALID_CONVERSATION: 400,
BizCode.MODEL_CONFIG_INVALID: 400,
BizCode.API_KEY_MISSING: 400,
BizCode.PROVIDER_NOT_SUPPORTED: 400,
BizCode.LLM_ERROR: 500,
BizCode.EMBEDDING_ERROR: 500,
BizCode.FILE_READ_ERROR: 500,
BizCode.PARSER_NOT_SUPPORTED: 400,
BizCode.CHUNKING_FAILED: 500,
BizCode.INDEX_BUILD_FAILED: 500,
BizCode.EMBEDDING_FAILED: 500,
BizCode.SEARCH_FAILED: 500,
BizCode.INTERNAL_ERROR: 500,
BizCode.DB_ERROR: 500,
BizCode.SERVICE_UNAVAILABLE: 503,
BizCode.RATE_LIMITED: 429,
}