50 lines
1.7 KiB
Python
50 lines
1.7 KiB
Python
|
|
from typing import Dict, Optional
|
|||
|
|
import re
|
|||
|
|
|
|||
|
|
|
|||
|
|
class ErrorSimulator:
|
|||
|
|
"""错误场景模拟器"""
|
|||
|
|
|
|||
|
|
# 错误码映射表
|
|||
|
|
ERROR_CODES = {
|
|||
|
|
"40101": {"code": "40101", "message": "appId错误"},
|
|||
|
|
"40102": {"code": "40102", "message": "appSecretCode错误"},
|
|||
|
|
"40104": {"code": "40104", "message": "可使用项目次数为0,无法创建项目"},
|
|||
|
|
"40105": {"code": "40105", "message": "只读模式下无法新建项目"},
|
|||
|
|
"40106": {"code": "40106", "message": "错误的分析类型,不在规定的取值范围内"},
|
|||
|
|
"40107": {"code": "40107", "message": "当前系统不支持的分析类型"},
|
|||
|
|
"40108": {"code": "40108", "message": "当前用户所属行社无权限"},
|
|||
|
|
"501014": {"code": "501014", "message": "无行内流水文件"},
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
@staticmethod
|
|||
|
|
def detect_error_marker(value: str) -> Optional[str]:
|
|||
|
|
"""检测字符串中的错误标记
|
|||
|
|
|
|||
|
|
规则:如果字符串包含 error_XXXX,则返回 XXXX
|
|||
|
|
例如:
|
|||
|
|
- "project_error_40101" -> "40101"
|
|||
|
|
- "test_error_501014" -> "501014"
|
|||
|
|
"""
|
|||
|
|
if not value:
|
|||
|
|
return None
|
|||
|
|
|
|||
|
|
pattern = r'error_(\d+)'
|
|||
|
|
match = re.search(pattern, value)
|
|||
|
|
if match:
|
|||
|
|
return match.group(1)
|
|||
|
|
return None
|
|||
|
|
|
|||
|
|
@staticmethod
|
|||
|
|
def build_error_response(error_code: str) -> Optional[Dict]:
|
|||
|
|
"""构建错误响应"""
|
|||
|
|
if error_code in ErrorSimulator.ERROR_CODES:
|
|||
|
|
error_info = ErrorSimulator.ERROR_CODES[error_code]
|
|||
|
|
return {
|
|||
|
|
"code": error_info["code"],
|
|||
|
|
"message": error_info["message"],
|
|||
|
|
"status": error_info["code"],
|
|||
|
|
"successResponse": False
|
|||
|
|
}
|
|||
|
|
return None
|