#!/usr/bin/env tsx
/**
 * 批量随机美国地址对报价测试（直连 axel API）
 */
import { fetchAxelQuote } from "@/lib/axel/client";

const CASES = [
  {
    id: "A",
    origin: "3131 Western Ave, Seattle, WA 98126",
    dest: "123 Main St, Los Angeles, CA 90001",
    pallets: 2,
    weightLb: 500,
    lengthIn: 48,
    widthIn: 40,
    heightIn: 45,
  },
  {
    id: "B",
    origin: "233 S Wacker Dr, Chicago, IL 60606",
    dest: "1500 Marilla St, Dallas, TX 75201",
    pallets: 3,
    weightLb: 1200,
    lengthIn: 48,
    widthIn: 40,
    heightIn: 48,
  },
  {
    id: "C",
    origin: "350 5th Ave, New York, NY 10118",
    dest: "191 Peachtree St NE, Atlanta, GA 30303",
    pallets: 1,
    weightLb: 350,
    lengthIn: 40,
    widthIn: 48,
    heightIn: 40,
  },
  {
    id: "D",
    origin: "1701 Broadway, Denver, CO 80290",
    dest: "200 W Washington St, Phoenix, AZ 85003",
    pallets: 4,
    weightLb: 2000,
    lengthIn: 48,
    widthIn: 40,
    heightIn: 50,
  },
  {
    id: "E",
    origin: "1 Faneuil Hall Sq, Boston, MA 02109",
    dest: "701 Brickell Ave, Miami, FL 33131",
    pallets: 2,
    weightLb: 800,
    lengthIn: 48,
    widthIn: 40,
    heightIn: 45,
  },
  {
    id: "F",
    origin: "1120 NW Couch St, Portland, OR 97209",
    dest: "1600 Smith St, Houston, TX 77002",
    pallets: 5,
    weightLb: 3500,
    lengthIn: 48,
    widthIn: 48,
    heightIn: 55,
  },
  {
    id: "G",
    origin: "3131 Western Ave, Seattle, WA",
    dest: "7000 NW 52nd St, Miami, FL",
    pallets: 4,
    weightLb: 723,
    lengthIn: 48,
    widthIn: 40,
    heightIn: 45,
  },
  {
    id: "H",
    origin: "5678 Industrial Blvd, Austin, TX 78744",
    dest: "8900 E Hampden Ave, Denver, CO 80231",
    pallets: 2,
    weightLb: 650,
    lengthIn: 48,
    widthIn: 40,
    heightIn: 42,
  },
] as const;

async function main() {
  const results: unknown[] = [];
  for (const c of CASES) {
    process.stderr.write(`[batch] 正在询价 ${c.id}...\n`);
    try {
      const r = await fetchAxelQuote({
        origin: c.origin,
        dest: c.dest,
        pallets: c.pallets,
        weightLb: c.weightLb,
        lengthIn: c.lengthIn,
        widthIn: c.widthIn,
        heightIn: c.heightIn,
      });
      results.push({
        caseId: c.id,
        input: {
          origin: c.origin,
          dest: c.dest,
          cargo: {
            pallets: c.pallets,
            weightLb: c.weightLb,
            dimsIn: { l: c.lengthIn, w: c.widthIn, h: c.heightIn },
          },
        },
        selectedOrigin: {
          placeId: r.origin.placeId,
          description: r.origin.description,
        },
        selectedDest: {
          placeId: r.dest.placeId,
          description: r.dest.description,
        },
        quotes: r.items.map((item) => ({
          serviceLevel: item.serviceLevel,
          rateOption: item.rateOption,
          carrier: item.carrier,
          transitDays: item.transitDays,
          rawTotal: item.rawTotal,
          rawFreight: item.rawFreight,
          surcharges: item.surcharges,
        })),
        ratesSummary: r.ratesSummary,
      });
    } catch (err) {
      results.push({
        caseId: c.id,
        input: c,
        error: err instanceof Error ? err.message : String(err),
      });
    }
  }
  console.log(JSON.stringify({ generatedAt: new Date().toISOString(), cases: results }, null, 2));
}

main();
