import type { ResponseData } from "@iflyrpa/share"; /** * 用户可见的错误文案。 * * 约定:凡是会进入 ResponseData.message(前端直接展示)的文案都从这里取, * 不要把 err.message / error.code / 文件路径等技术细节拼进去 —— 那些信息 * 放 logger 与飞书告警里,用户侧只保留「看得懂 + 知道下一步做什么」的文案。 */ export declare const USER_MESSAGE: { readonly PROXY_UNAVAILABLE: "代理暂时不可用,请稍后重试或使用本地IP"; readonly NETWORK_ERROR: "网络异常,请稍后重试"; readonly SYSTEM_ERROR: "系统异常,请稍后重试或联系客服"; readonly PUBLISH_NETWORK: "发布失败,网络不稳定,请稍后重试"; readonly DOUYIN_ACCOUNT_FETCH_FAILED: "抖音数据获取失败,请稍后重试"; readonly SHIPINHAO_ACCOUNT_FETCH_FAILED: "视频号数据获取失败,请稍后重试"; readonly DOUYIN_POST_FETCH_FAILED: "抖音作品数据获取失败,请稍后重试"; readonly SHIPINHAO_POST_FETCH_FAILED: "视频号作品数据获取失败,请稍后重试"; readonly BJH_POST_FETCH_FAILED: "百家号作品数据获取失败,请稍后重试"; readonly TT_POST_FETCH_FAILED: "头条号作品数据获取失败,请稍后重试"; readonly QRCODE_FETCH_FAILED: "认证二维码获取失败,请稍后重试"; readonly IMAGE_UPLOAD_FAILED: "图片上传失败,请稍后重试或联系客服"; }; /** 发布错误分类:category 只用于日志辨识,userMessage 才是用户可见文案 */ export interface PublishErrorClassification { category: "代理错误" | "网络错误"; userMessage: string; } /** * 对发布接口抛出的错误做分类,决定是「直接返回用户文案并终止」还是「交回 RPA 兜底」。 * * 只拦代理/网络类错误 —— 这类错误重试耗尽后 RPA 兜底同样连不上,直接返回更快。 * 返回 null 表示交回调用方 `throw error`,由上层 executeAction 走 RPA 兜底。 * * 刻意不拦风控(403/461/471)与参数(400/422)错误:executeAction(utils/index.ts:257) * 只在 code 为 0 或 414 时终止,抛异常则继续执行下一个 action, * 因此这两类错误抛出后能进 RPA 兜底 —— 走浏览器自动化,用户完成验证后仍有机会发布成功。 * 拦下来会掉掉这条补救路径,所以维持抛出。 * * 注意 401 无需单列:http.ts 的响应拦截器已把 401 归一为 414(避免触发绘文平台鉴权逻辑)。 */ export declare function classifyPublishError(handledError: ResponseData): PublishErrorClassification | null;