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
|