import { RpaError, NO_RETRY_CODES } from "@/modules/rpa/errors"; import { isWidgetQuoteFallbackEnabled } from "@/lib/rpa/env"; /** * axel 直连报「无运力」时,Widget 浏览器链路仍可能出价的线路(如 sign-up-quote Tab 读价)。 */ export function shouldFallbackToWidgetAfterDirectError(error: unknown): boolean { if (!isWidgetQuoteFallbackEnabled()) { return false; } return error instanceof RpaError && error.code === "CARRIER_NO_CAPACITY"; } /** direct 失败是否应直接终止(不走 Widget) */ export function isDirectErrorFatalWithoutWidget(error: unknown): boolean { if (!(error instanceof RpaError)) { return false; } if (!NO_RETRY_CODES.has(error.code)) { return false; } if (shouldFallbackToWidgetAfterDirectError(error)) { return false; } return true; }