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;
}
