/** * 本地探:登录态能否打开 /ship 一级表单(用 .env 账密,不依赖 DB) * npx tsx scripts/probe-mothership-open-ship.ts * DIAG_HEADED=true npx tsx scripts/probe-mothership-open-ship.ts */ import { loadDevEnv } from "@/lib/dev-env"; loadDevEnv(); const wantHeaded = process.env.DIAG_HEADED === "true"; process.env.RPA_HEADED = wantHeaded ? "true" : "false"; process.env.RPA_HEADLESS = wantHeaded ? "false" : "true"; import { runWithMothershipLoginContext } from "@/lib/rpa/mothership-login-context"; import type { QuoteRequest } from "@/modules/providers/quote-provider"; import { runMothershipLoggedInDashboardQuote } from "@/workers/rpa/mothership-logged-in-quote"; function readyDatePlusDays(daysAhead: number): string { const d = new Date(); d.setDate(d.getDate() + daysAhead); const yyyy = d.getFullYear(); const mm = String(d.getMonth() + 1).padStart(2, "0"); const dd = String(d.getDate()).padStart(2, "0"); return `${yyyy}-${mm}-${dd}`; } async function main(): Promise { // 本地 .env 账密常为空;有 mothership-logged-in-storage 时用 ALS 占位即可走登录态 storage let email = process.env.MOTHERSHIP_EMAIL?.trim() ?? ""; let password = process.env.MOTHERSHIP_PASSWORD?.trim() ?? ""; const hasStorage = require("node:fs").existsSync( ".rpa/mothership-logged-in-storage.json", ); if ((!email || !password) && hasStorage) { email = email || "storage-session@local"; password = password || "storage-session"; console.log("[probe] .env 账密为空,改用已有 logged-in storage 会话"); } if (!email || !password) { console.error("[probe] 缺 MOTHERSHIP_EMAIL / MOTHERSHIP_PASSWORD,且无 logged-in storage"); process.exit(1); } const readyDate = readyDatePlusDays(3); const req: QuoteRequest = { cargoHash: `probe-open-ship-${Date.now()}`, pickup: { street: "456 Oak Ave", city: "Fairhope", state: "AL", zip: "36532", placeId: "probe-pickup", formattedAddress: "456 Oak Ave, Fairhope, AL 36532", selectedFromSuggestions: true, mothershipOptionId: "probe-pickup", mothershipDisplayLabel: "456 Oak Ave, Fairhope, AL", selectedFromMothership: true, }, delivery: { street: "555 Market St", city: "San Francisco", state: "CA", zip: "94105", placeId: "probe-delivery", formattedAddress: "555 Market St, San Francisco, CA 94105", selectedFromSuggestions: true, mothershipOptionId: "probe-delivery", mothershipDisplayLabel: "555 Market St, San Francisco, CA", selectedFromMothership: true, }, weightLb: 250, dimsIn: { l: 48, w: 40, h: 48 }, palletCount: 2, cargoType: "general_freight", readyDate, readyTime: "12:00 PM", cargoLines: [ { cargoType: "general_freight", quantity: 2, weightLb: 250, lengthIn: 48, widthIn: 40, heightIn: 48, }, ], }; console.log("=== probe open /ship (env login) ==="); console.log(`email=${email.slice(0, 2)}*** headed=${wantHeaded} ready=${readyDate}`); const items = await runWithMothershipLoginContext({ email, password }, "env", () => runMothershipLoggedInDashboardQuote(req), ); console.log( `[probe] OK carriers=${items.map((i) => `${i.carrier}=$${i.rawTotal}`).join(", ")}`, ); } main().catch((e) => { console.error("[probe] FAIL", e instanceof Error ? e.message : e); process.exit(1); });