# crawler_status/messages.py from .codes import * MESSAGES = { SUCCESS: "成功", CONFIG_MISSING: "配置缺失或无效", PARAM_REQUIRED: "缺少必要参数", UNSUPPORTED_TYPE: "不支持的爬虫类型", URL_JOIN_FAILED: "URL 拼接失败", CUSTOM_CLASS_IMPORT_FAILED: "自定义类加载失败", CONFIG_LOAD_FAILED: "配置文件读取失败", FETCH_EXCEPTION: "抓取单条视频失败,请求异常", FETCH_EMPTY: "抓取返回空数据", HTTP_ERROR: "HTTP 状态码异常", TIMEOUT: "请求超时", INVALID_FORMAT: "无效的响应格式", BLOCKED: "被目标站封禁或滑块验证", REDIRECT_ERROR: "请求被重定向异常", JSONPATH_FAIL: "JSONPath 提取失败", XPATH_FAIL: "HTML XPath 提取失败", FIELD_MAP_ERROR: "字段映射缺失或类型错误", PARSE_EMPTY: "解析后结果为空", FORMAT_INVALID: "数据格式校验失败", CLEAN_MISMATCH: "清洗规则不匹配", TRANSFORM_FAIL: "数据转化失败", MISSING_REQUIRED_FIELD: "字段缺失导致中断", DB_WRITE_FAIL: "写入数据库失败", DB_DUPLICATE: "主键冲突或重复数据", DB_CONN_FAIL: "数据库连接失败", FILE_WRITE_FAIL: "写入本地文件失败", ETL_IMPORT_FAIL: "ETL 模块导入失败", ETL_RUN_FAIL: "process_video_obj 执行失败", ETL_UNKNOWN_ERROR: "ETL 处理逻辑异常", UNKNOWN_ERROR: "未知系统错误", IMPORT_ERROR: "模块导入错误", DYNAMIC_LOAD_ERROR: "动态类加载失败", FILE_NOT_FOUND: "路径错误或文件不存在", DATA_EXISTS: "视频内容已存在,跳过", NO_UPDATE: "当前无更新内容", FILTERED: "需人工校验的内容被过滤", RETRY: "触发重试机制", RETRY_MAX: "最大重试次数已达,终止任务", }