coze-coding-utils 0.2.1__py3-none-any.whl → 0.2.2a1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. coze_coding_utils/__init__.py +1 -1
  2. coze_coding_utils/error/__init__.py +31 -0
  3. coze_coding_utils/error/classifier.py +320 -0
  4. coze_coding_utils/error/codes.py +356 -0
  5. coze_coding_utils/error/exceptions.py +439 -0
  6. coze_coding_utils/error/patterns.py +939 -0
  7. coze_coding_utils/error/test_classifier.py +0 -0
  8. coze_coding_utils/file/__init__.py +0 -0
  9. coze_coding_utils/file/file.py +327 -0
  10. coze_coding_utils/helper/__init__.py +0 -0
  11. coze_coding_utils/helper/agent_helper.py +599 -0
  12. coze_coding_utils/helper/graph_helper.py +231 -0
  13. coze_coding_utils/log/__init__.py +0 -0
  14. coze_coding_utils/log/common.py +8 -0
  15. coze_coding_utils/log/config.py +10 -0
  16. coze_coding_utils/log/err_trace.py +88 -0
  17. coze_coding_utils/log/loop_trace.py +72 -0
  18. coze_coding_utils/log/node_log.py +487 -0
  19. coze_coding_utils/log/parser.py +255 -0
  20. coze_coding_utils/log/write_log.py +183 -0
  21. coze_coding_utils/messages/__init__.py +0 -0
  22. coze_coding_utils/messages/client.py +48 -0
  23. coze_coding_utils/messages/server.py +173 -0
  24. coze_coding_utils/openai/__init__.py +5 -0
  25. coze_coding_utils/openai/converter/__init__.py +6 -0
  26. coze_coding_utils/openai/converter/request_converter.py +165 -0
  27. coze_coding_utils/openai/converter/response_converter.py +467 -0
  28. coze_coding_utils/openai/handler.py +298 -0
  29. coze_coding_utils/openai/types/__init__.py +37 -0
  30. coze_coding_utils/openai/types/request.py +24 -0
  31. coze_coding_utils/openai/types/response.py +178 -0
  32. {coze_coding_utils-0.2.1.dist-info → coze_coding_utils-0.2.2a1.dist-info}/METADATA +2 -2
  33. coze_coding_utils-0.2.2a1.dist-info/RECORD +37 -0
  34. coze_coding_utils-0.2.1.dist-info/RECORD +0 -7
  35. {coze_coding_utils-0.2.1.dist-info → coze_coding_utils-0.2.2a1.dist-info}/WHEEL +0 -0
  36. {coze_coding_utils-0.2.1.dist-info → coze_coding_utils-0.2.2a1.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,356 @@
1
+ """
2
+ 错误码定义
3
+
4
+ 6位错误码体系:
5
+ - 第1位: 错误大类 (1-9)
6
+ - 第2-3位: 错误子类 (01-99)
7
+ - 第4-6位: 具体错误 (001-999)
8
+ """
9
+
10
+ from enum import IntEnum
11
+ from typing import Dict
12
+
13
+
14
+ class ErrorCategory(IntEnum):
15
+ """错误大类"""
16
+ CODE_ERROR = 1 # 代码语法/类型错误
17
+ VALIDATION_ERROR = 2 # 输入验证错误
18
+ API_ERROR = 3 # 外部API错误
19
+ RESOURCE_ERROR = 4 # 资源/文件错误
20
+ INTEGRATION_ERROR = 5 # 集成服务错误
21
+ BUSINESS_ERROR = 6 # 业务逻辑错误
22
+ RUNTIME_ERROR = 7 # 运行时错误
23
+ CONFIG_ERROR = 8 # 配置错误
24
+ UNKNOWN_ERROR = 9 # 未知错误
25
+
26
+
27
+ class ErrorCode(IntEnum):
28
+ """
29
+ 错误码枚举
30
+
31
+ 命名规则: {大类}_{子类}_{具体错误}
32
+ """
33
+
34
+ # ==================== 1xxxxx 代码语法/类型错误 ====================
35
+ # 101xxx - AttributeError 属性错误
36
+ CODE_ATTR_NOT_FOUND = 101001 # 属性不存在
37
+ CODE_ATTR_METHOD_NOT_FOUND = 101002 # 方法不存在
38
+ CODE_ATTR_MODEL_DUMP = 101003 # model_dump属性错误 (常见于Pydantic对象误用)
39
+ CODE_ATTR_WRONG_TYPE = 101004 # 对象类型错误导致属性不存在
40
+
41
+ # 102xxx - TypeError 类型错误
42
+ CODE_TYPE_MISSING_ARG = 102001 # 缺少必需的位置参数
43
+ CODE_TYPE_EXTRA_ARG = 102002 # 传入了多余的参数
44
+ CODE_TYPE_WRONG_ARG = 102003 # 参数类型错误
45
+ CODE_TYPE_NOT_CALLABLE = 102004 # 对象不可调用
46
+ CODE_TYPE_NOT_ITERABLE = 102005 # 对象不可迭代
47
+ CODE_TYPE_NOT_SUBSCRIPTABLE = 102006 # 对象不可下标访问
48
+
49
+ # 103xxx - NameError 名称错误
50
+ CODE_NAME_NOT_DEFINED = 103001 # 名称未定义
51
+ CODE_NAME_IMPORT_ERROR = 103002 # 导入错误
52
+
53
+ # 104xxx - SyntaxError 语法错误
54
+ CODE_SYNTAX_INVALID = 104001 # 无效语法
55
+ CODE_SYNTAX_INDENTATION = 104002 # 缩进错误
56
+ CODE_SYNTAX_REGEX_ESCAPE = 104003 # 正则表达式转义错误
57
+
58
+ # 105xxx - IndexError/KeyError 索引/键错误
59
+ CODE_INDEX_OUT_OF_RANGE = 105001 # 索引越界
60
+ CODE_KEY_NOT_FOUND = 105002 # 键不存在
61
+
62
+ # ==================== 2xxxxx 输入验证错误 ====================
63
+ # 201xxx - Pydantic ValidationError
64
+ VALIDATION_FIELD_REQUIRED = 201001 # 必填字段缺失
65
+ VALIDATION_FIELD_TYPE = 201002 # 字段类型错误
66
+ VALIDATION_FIELD_VALUE = 201003 # 字段值不合法
67
+ VALIDATION_FIELD_FORMAT = 201004 # 字段格式错误 (如日期格式)
68
+ VALIDATION_FIELD_CONSTRAINT = 201005 # 字段约束不满足 (如长度、范围)
69
+
70
+ # 202xxx - 自定义验证错误
71
+ VALIDATION_INPUT_EMPTY = 202001 # 输入为空
72
+ VALIDATION_INPUT_INVALID = 202002 # 输入无效
73
+ VALIDATION_JSON_DECODE = 202003 # JSON解析错误
74
+ VALIDATION_PYDANTIC_SCHEMA = 202004 # Pydantic Schema生成失败
75
+
76
+ # ==================== 3xxxxx 外部API错误 ====================
77
+ # 301xxx - LLM API错误 (OpenAI/火山方舟等)
78
+ API_LLM_REQUEST_FAILED = 301001 # LLM请求失败
79
+ API_LLM_RATE_LIMIT = 301002 # LLM速率限制
80
+ API_LLM_TOKEN_LIMIT = 301003 # Token超限
81
+ API_LLM_INVALID_REQUEST = 301004 # 无效请求
82
+ API_LLM_AUTH_FAILED = 301005 # 认证失败
83
+ API_LLM_MODEL_NOT_FOUND = 301006 # 模型不存在
84
+ API_LLM_CONTENT_FILTER = 301007 # 内容过滤
85
+ API_LLM_IMAGE_FORMAT = 301008 # 图片格式不支持
86
+ API_LLM_VIDEO_FORMAT = 301009 # 视频格式不支持
87
+
88
+ # 302xxx - 图片生成API错误
89
+ API_IMAGE_GEN_FAILED = 302001 # 图片生成失败
90
+ API_IMAGE_GEN_TIMEOUT = 302002 # 图片生成超时
91
+ API_IMAGE_GEN_QUOTA = 302003 # 配额不足
92
+
93
+ # 303xxx - 视频生成API错误
94
+ API_VIDEO_GEN_FAILED = 303001 # 视频生成失败
95
+ API_VIDEO_GEN_TIMEOUT = 303002 # 视频生成超时
96
+ API_VIDEO_GEN_NOT_FOUND = 303003 # 视频生成端点404
97
+
98
+ # 304xxx - 语音API错误
99
+ API_AUDIO_GEN_FAILED = 304001 # 语音生成失败
100
+ API_AUDIO_TRANSCRIBE_FAILED = 304002 # 语音转写失败
101
+
102
+ # 305xxx - 网络请求错误
103
+ API_NETWORK_TIMEOUT = 305001 # 网络超时
104
+ API_NETWORK_CONNECTION = 305002 # 连接错误
105
+ API_NETWORK_HTTP_ERROR = 305003 # HTTP错误
106
+ API_NETWORK_URL_INVALID = 305004 # URL无效 (MissingSchema等)
107
+ API_NETWORK_SSL_ERROR = 305005 # SSL错误
108
+ API_NETWORK_BROKEN_PIPE = 305006 # 管道断开
109
+ API_NETWORK_REMOTE_PROTOCOL = 305007 # 远程协议错误
110
+
111
+ # ==================== 4xxxxx 资源/文件错误 ====================
112
+ # 401xxx - 文件操作错误
113
+ RESOURCE_FILE_NOT_FOUND = 401001 # 文件不存在
114
+ RESOURCE_FILE_READ_ERROR = 401002 # 文件读取错误
115
+ RESOURCE_FILE_WRITE_ERROR = 401003 # 文件写入错误
116
+ RESOURCE_FILE_FORMAT_ERROR = 401004 # 文件格式错误
117
+ RESOURCE_FILE_TOO_LARGE = 401005 # 文件过大
118
+
119
+ # 402xxx - 存储服务错误
120
+ RESOURCE_S3_UPLOAD_FAILED = 402001 # S3上传失败
121
+ RESOURCE_S3_DOWNLOAD_FAILED = 402002 # S3下载失败
122
+ RESOURCE_S3_URL_FAILED = 402003 # S3 URL生成失败
123
+
124
+ # 403xxx - 媒体处理错误
125
+ RESOURCE_IMAGE_PROCESS_FAILED = 403001 # 图片处理失败
126
+ RESOURCE_VIDEO_PROCESS_FAILED = 403002 # 视频处理失败
127
+ RESOURCE_AUDIO_PROCESS_FAILED = 403003 # 音频处理失败
128
+ RESOURCE_FACE_NOT_DETECTED = 403004 # 未检测到人脸
129
+ RESOURCE_VIDEO_SEGMENT_FAILED = 403005 # 视频片段生成失败
130
+ RESOURCE_FFMPEG_FAILED = 403006 # FFmpeg处理失败
131
+ RESOURCE_IMAGE_DOWNLOAD_FAILED = 403007 # 图片下载失败
132
+ RESOURCE_VIDEO_DOWNLOAD_FAILED = 403008 # 视频下载失败
133
+
134
+ # ==================== 5xxxxx 集成服务错误 ====================
135
+ # 501xxx - 飞书集成错误
136
+ INTEGRATION_FEISHU_AUTH_FAILED = 501001 # 飞书认证失败
137
+ INTEGRATION_FEISHU_API_FAILED = 501002 # 飞书API调用失败
138
+ INTEGRATION_FEISHU_DOC_FAILED = 501003 # 飞书文档操作失败
139
+
140
+ # 502xxx - 微信集成错误
141
+ INTEGRATION_WECHAT_AUTH_FAILED = 502001 # 微信认证失败
142
+ INTEGRATION_WECHAT_API_FAILED = 502002 # 微信API调用失败
143
+
144
+ # 503xxx - 数据库错误
145
+ INTEGRATION_DB_CONNECTION = 503001 # 数据库连接错误
146
+ INTEGRATION_DB_QUERY = 503002 # 数据库查询错误
147
+ INTEGRATION_DB_ADMIN_SHUTDOWN = 503003 # 数据库管理员关闭连接
148
+ INTEGRATION_DB_SSL_CLOSED = 503004 # 数据库SSL连接关闭
149
+ INTEGRATION_DB_POOL_TIMEOUT = 503005 # 数据库连接池超时
150
+
151
+ # 504xxx - 其他集成错误
152
+ INTEGRATION_SERVICE_UNAVAILABLE = 504001 # 集成服务不可用
153
+ INTEGRATION_CREDENTIAL_INVALID = 504002 # 集成凭证无效
154
+ INTEGRATION_CREDENTIAL_EXPIRED = 504003 # 集成凭证过期
155
+
156
+ # ==================== 6xxxxx 业务逻辑错误 ====================
157
+ # 601xxx - 工作流错误
158
+ BUSINESS_NODE_NOT_FOUND = 601001 # 节点不存在
159
+ BUSINESS_NODE_FAILED = 601002 # 节点执行失败
160
+ BUSINESS_GRAPH_INVALID = 601003 # 图结构无效
161
+
162
+ # 602xxx - 数据处理错误
163
+ BUSINESS_DATA_INVALID = 602001 # 数据无效
164
+ BUSINESS_DATA_NOT_FOUND = 602002 # 数据不存在
165
+ BUSINESS_DATA_DUPLICATE = 602003 # 数据重复
166
+
167
+ # 603xxx - 业务规则错误
168
+ BUSINESS_RULE_VIOLATED = 603001 # 业务规则违反
169
+ BUSINESS_LIMIT_EXCEEDED = 603002 # 超出限制
170
+
171
+ # 604xxx - 资源点/配额/权益错误 (BENEFIT_ERROR)
172
+ BUSINESS_QUOTA_INSUFFICIENT = 604001 # 资源点不足
173
+ BUSINESS_QUOTA_EXCEEDED = 604002 # 配额超限
174
+ BUSINESS_BALANCE_OVERDUE = 604003 # 余额欠费
175
+
176
+ # ==================== 7xxxxx 运行时错误 ====================
177
+ # 701xxx - 执行错误
178
+ RUNTIME_EXECUTION_FAILED = 701001 # 执行失败
179
+ RUNTIME_TIMEOUT = 701002 # 执行超时
180
+ RUNTIME_CANCELLED = 701003 # 执行被取消
181
+
182
+ # 702xxx - 内存/资源错误
183
+ RUNTIME_MEMORY_ERROR = 702001 # 内存错误
184
+ RUNTIME_RECURSION_LIMIT = 702002 # 递归深度超限
185
+
186
+ # 703xxx - 异步错误
187
+ RUNTIME_ASYNC_NOT_IMPL = 703001 # 异步方法未实现
188
+ RUNTIME_ASYNC_CANCELLED = 703002 # 异步任务取消
189
+
190
+ # 704xxx - 进程/线程错误
191
+ RUNTIME_SUBPROCESS_TIMEOUT = 704001 # 子进程超时
192
+ RUNTIME_SUBPROCESS_FAILED = 704002 # 子进程执行失败
193
+ RUNTIME_THREAD_ERROR = 704003 # 线程错误 (如greenlet错误)
194
+
195
+ # ==================== 8xxxxx 配置错误 ====================
196
+ # 801xxx - API Key配置错误
197
+ CONFIG_API_KEY_MISSING = 801001 # API Key缺失
198
+ CONFIG_API_KEY_INVALID = 801002 # API Key无效
199
+
200
+ # 802xxx - 环境配置错误
201
+ CONFIG_ENV_MISSING = 802001 # 环境变量缺失
202
+ CONFIG_ENV_INVALID = 802002 # 环境变量无效
203
+ CONFIG_TTS_MISSING = 802003 # TTS配置缺失
204
+
205
+ # 803xxx - 浏览器配置错误
206
+ CONFIG_BROWSER_NOT_FOUND = 803001 # 浏览器可执行文件不存在
207
+ CONFIG_WEBDRIVER_FAILED = 803002 # WebDriver启动失败
208
+
209
+ # ==================== 9xxxxx 未知错误 ====================
210
+ UNKNOWN_ERROR = 900001 # 未知错误
211
+ UNKNOWN_EXCEPTION = 900002 # 未知异常
212
+
213
+
214
+ # 错误码描述映射
215
+ ERROR_DESCRIPTIONS: Dict[int, str] = {
216
+ # 1xxxxx 代码错误
217
+ ErrorCode.CODE_ATTR_NOT_FOUND: "属性不存在",
218
+ ErrorCode.CODE_ATTR_METHOD_NOT_FOUND: "方法不存在",
219
+ ErrorCode.CODE_ATTR_MODEL_DUMP: "对象类型错误,尝试访问model_dump属性",
220
+ ErrorCode.CODE_ATTR_WRONG_TYPE: "对象类型错误导致属性访问失败",
221
+ ErrorCode.CODE_TYPE_MISSING_ARG: "函数调用缺少必需的参数",
222
+ ErrorCode.CODE_TYPE_EXTRA_ARG: "函数调用传入了多余的参数",
223
+ ErrorCode.CODE_TYPE_WRONG_ARG: "函数参数类型错误",
224
+ ErrorCode.CODE_TYPE_NOT_CALLABLE: "对象不可调用",
225
+ ErrorCode.CODE_TYPE_NOT_ITERABLE: "对象不可迭代",
226
+ ErrorCode.CODE_TYPE_NOT_SUBSCRIPTABLE: "对象不支持下标访问",
227
+ ErrorCode.CODE_NAME_NOT_DEFINED: "变量或函数名未定义",
228
+ ErrorCode.CODE_NAME_IMPORT_ERROR: "模块导入错误",
229
+ ErrorCode.CODE_SYNTAX_INVALID: "语法错误",
230
+ ErrorCode.CODE_SYNTAX_INDENTATION: "缩进错误",
231
+ ErrorCode.CODE_SYNTAX_REGEX_ESCAPE: "正则表达式转义错误",
232
+ ErrorCode.CODE_INDEX_OUT_OF_RANGE: "索引越界",
233
+ ErrorCode.CODE_KEY_NOT_FOUND: "字典键不存在",
234
+
235
+ # 2xxxxx 验证错误
236
+ ErrorCode.VALIDATION_FIELD_REQUIRED: "必填字段缺失",
237
+ ErrorCode.VALIDATION_FIELD_TYPE: "字段类型错误",
238
+ ErrorCode.VALIDATION_FIELD_VALUE: "字段值不合法",
239
+ ErrorCode.VALIDATION_FIELD_FORMAT: "字段格式错误",
240
+ ErrorCode.VALIDATION_FIELD_CONSTRAINT: "字段约束不满足",
241
+ ErrorCode.VALIDATION_INPUT_EMPTY: "输入为空",
242
+ ErrorCode.VALIDATION_INPUT_INVALID: "输入无效",
243
+ ErrorCode.VALIDATION_JSON_DECODE: "JSON解析错误",
244
+ ErrorCode.VALIDATION_PYDANTIC_SCHEMA: "Pydantic Schema生成失败",
245
+
246
+ # 3xxxxx API错误
247
+ ErrorCode.API_LLM_REQUEST_FAILED: "LLM请求失败",
248
+ ErrorCode.API_LLM_RATE_LIMIT: "LLM请求频率超限",
249
+ ErrorCode.API_LLM_TOKEN_LIMIT: "Token数量超限",
250
+ ErrorCode.API_LLM_INVALID_REQUEST: "LLM请求参数无效",
251
+ ErrorCode.API_LLM_AUTH_FAILED: "LLM认证失败",
252
+ ErrorCode.API_LLM_MODEL_NOT_FOUND: "LLM模型不存在",
253
+ ErrorCode.API_LLM_CONTENT_FILTER: "内容被安全过滤",
254
+ ErrorCode.API_LLM_IMAGE_FORMAT: "图片格式不支持",
255
+ ErrorCode.API_LLM_VIDEO_FORMAT: "视频格式不支持",
256
+ ErrorCode.API_IMAGE_GEN_FAILED: "图片生成失败",
257
+ ErrorCode.API_IMAGE_GEN_TIMEOUT: "图片生成超时",
258
+ ErrorCode.API_IMAGE_GEN_QUOTA: "图片生成配额不足",
259
+ ErrorCode.API_VIDEO_GEN_FAILED: "视频生成失败",
260
+ ErrorCode.API_VIDEO_GEN_TIMEOUT: "视频生成超时",
261
+ ErrorCode.API_VIDEO_GEN_NOT_FOUND: "视频生成服务不可用",
262
+ ErrorCode.API_AUDIO_GEN_FAILED: "语音生成失败",
263
+ ErrorCode.API_AUDIO_TRANSCRIBE_FAILED: "语音转写失败",
264
+ ErrorCode.API_NETWORK_TIMEOUT: "网络请求超时",
265
+ ErrorCode.API_NETWORK_CONNECTION: "网络连接失败",
266
+ ErrorCode.API_NETWORK_HTTP_ERROR: "HTTP请求错误",
267
+ ErrorCode.API_NETWORK_URL_INVALID: "URL格式无效",
268
+ ErrorCode.API_NETWORK_SSL_ERROR: "SSL证书错误",
269
+ ErrorCode.API_NETWORK_BROKEN_PIPE: "网络管道断开",
270
+ ErrorCode.API_NETWORK_REMOTE_PROTOCOL: "远程协议错误",
271
+
272
+ # 4xxxxx 资源错误
273
+ ErrorCode.RESOURCE_FILE_NOT_FOUND: "文件不存在",
274
+ ErrorCode.RESOURCE_FILE_READ_ERROR: "文件读取失败",
275
+ ErrorCode.RESOURCE_FILE_WRITE_ERROR: "文件写入失败",
276
+ ErrorCode.RESOURCE_FILE_FORMAT_ERROR: "文件格式错误",
277
+ ErrorCode.RESOURCE_FILE_TOO_LARGE: "文件过大",
278
+ ErrorCode.RESOURCE_S3_UPLOAD_FAILED: "文件上传失败",
279
+ ErrorCode.RESOURCE_S3_DOWNLOAD_FAILED: "文件下载失败",
280
+ ErrorCode.RESOURCE_S3_URL_FAILED: "文件URL生成失败",
281
+ ErrorCode.RESOURCE_IMAGE_PROCESS_FAILED: "图片处理失败",
282
+ ErrorCode.RESOURCE_VIDEO_PROCESS_FAILED: "视频处理失败",
283
+ ErrorCode.RESOURCE_AUDIO_PROCESS_FAILED: "音频处理失败",
284
+ ErrorCode.RESOURCE_FACE_NOT_DETECTED: "未检测到人脸",
285
+ ErrorCode.RESOURCE_VIDEO_SEGMENT_FAILED: "视频片段生成失败",
286
+ ErrorCode.RESOURCE_FFMPEG_FAILED: "FFmpeg处理失败",
287
+ ErrorCode.RESOURCE_IMAGE_DOWNLOAD_FAILED: "图片下载失败",
288
+ ErrorCode.RESOURCE_VIDEO_DOWNLOAD_FAILED: "视频下载失败",
289
+
290
+ # 5xxxxx 集成错误
291
+ ErrorCode.INTEGRATION_FEISHU_AUTH_FAILED: "飞书认证失败",
292
+ ErrorCode.INTEGRATION_FEISHU_API_FAILED: "飞书API调用失败",
293
+ ErrorCode.INTEGRATION_FEISHU_DOC_FAILED: "飞书文档操作失败",
294
+ ErrorCode.INTEGRATION_WECHAT_AUTH_FAILED: "微信认证失败",
295
+ ErrorCode.INTEGRATION_WECHAT_API_FAILED: "微信API调用失败",
296
+ ErrorCode.INTEGRATION_DB_CONNECTION: "数据库连接失败",
297
+ ErrorCode.INTEGRATION_DB_QUERY: "数据库查询失败",
298
+ ErrorCode.INTEGRATION_DB_ADMIN_SHUTDOWN: "数据库连接被管理员关闭",
299
+ ErrorCode.INTEGRATION_DB_SSL_CLOSED: "数据库SSL连接意外关闭",
300
+ ErrorCode.INTEGRATION_DB_POOL_TIMEOUT: "数据库连接池超时",
301
+ ErrorCode.INTEGRATION_SERVICE_UNAVAILABLE: "集成服务不可用",
302
+ ErrorCode.INTEGRATION_CREDENTIAL_INVALID: "集成凭证无效",
303
+ ErrorCode.INTEGRATION_CREDENTIAL_EXPIRED: "集成凭证过期",
304
+
305
+ # 6xxxxx 业务错误
306
+ ErrorCode.BUSINESS_NODE_NOT_FOUND: "工作流节点不存在",
307
+ ErrorCode.BUSINESS_NODE_FAILED: "工作流节点执行失败",
308
+ ErrorCode.BUSINESS_GRAPH_INVALID: "工作流图结构无效",
309
+ ErrorCode.BUSINESS_DATA_INVALID: "数据无效",
310
+ ErrorCode.BUSINESS_DATA_NOT_FOUND: "数据不存在",
311
+ ErrorCode.BUSINESS_DATA_DUPLICATE: "数据重复",
312
+ ErrorCode.BUSINESS_RULE_VIOLATED: "业务规则违反",
313
+ ErrorCode.BUSINESS_LIMIT_EXCEEDED: "超出限制",
314
+ ErrorCode.BUSINESS_QUOTA_INSUFFICIENT: "资源点不足,请升级为付费版套餐",
315
+ ErrorCode.BUSINESS_QUOTA_EXCEEDED: "配额超限",
316
+ ErrorCode.BUSINESS_BALANCE_OVERDUE: "余额欠费",
317
+
318
+ # 7xxxxx 运行时错误
319
+ ErrorCode.RUNTIME_EXECUTION_FAILED: "执行失败",
320
+ ErrorCode.RUNTIME_TIMEOUT: "执行超时",
321
+ ErrorCode.RUNTIME_CANCELLED: "执行被取消",
322
+ ErrorCode.RUNTIME_MEMORY_ERROR: "内存错误",
323
+ ErrorCode.RUNTIME_RECURSION_LIMIT: "递归深度超限",
324
+ ErrorCode.RUNTIME_ASYNC_NOT_IMPL: "异步方法未实现",
325
+ ErrorCode.RUNTIME_ASYNC_CANCELLED: "异步任务取消",
326
+ ErrorCode.RUNTIME_SUBPROCESS_TIMEOUT: "子进程执行超时",
327
+ ErrorCode.RUNTIME_SUBPROCESS_FAILED: "子进程执行失败",
328
+ ErrorCode.RUNTIME_THREAD_ERROR: "线程切换错误",
329
+
330
+ # 8xxxxx 配置错误
331
+ ErrorCode.CONFIG_API_KEY_MISSING: "API Key未配置",
332
+ ErrorCode.CONFIG_API_KEY_INVALID: "API Key无效",
333
+ ErrorCode.CONFIG_ENV_MISSING: "环境变量未配置",
334
+ ErrorCode.CONFIG_ENV_INVALID: "环境变量无效",
335
+ ErrorCode.CONFIG_TTS_MISSING: "TTS配置缺失",
336
+ ErrorCode.CONFIG_BROWSER_NOT_FOUND: "浏览器可执行文件不存在",
337
+ ErrorCode.CONFIG_WEBDRIVER_FAILED: "WebDriver启动失败",
338
+
339
+ # 9xxxxx 未知错误
340
+ ErrorCode.UNKNOWN_ERROR: "未知错误",
341
+ ErrorCode.UNKNOWN_EXCEPTION: "未知异常",
342
+ }
343
+
344
+
345
+ def get_error_description(code: int) -> str:
346
+ """获取错误码描述"""
347
+ return ERROR_DESCRIPTIONS.get(code, f"未知错误码: {code}")
348
+
349
+
350
+ def get_error_category(code: int) -> ErrorCategory:
351
+ """根据错误码获取错误大类"""
352
+ category = code // 100000
353
+ try:
354
+ return ErrorCategory(category)
355
+ except ValueError:
356
+ return ErrorCategory.UNKNOWN_ERROR