#!/usr/bin/env tsx /** * FTL canonical 路径 — 人机协作录制 * 自动填 Step1 + 拖车类型;Additional Services 及后续交人工并记录至报价 * * npm run record:priority1-ftl-path * $env:PRIORITY1_PATH_ID="F01-ftl-dry-van-full"; npm run record:priority1-ftl-path */ import { join } from "node:path"; import { formatPriority1InputSummary, PRIORITY1_CANONICAL_PATHS, } from "@/workers/rpa/priority1/demo-input"; import { runPriority1FtlPathRecording } from "./visual-priority1-full-chain"; async function main(): Promise { const pathId = process.env.PRIORITY1_PATH_ID?.trim() ?? "F01-ftl-dry-van-full"; const canonical = PRIORITY1_CANONICAL_PATHS.find( (p) => p.id === pathId || p.id.startsWith(pathId), ); if (!canonical) { console.error(`[record-ftl] 未找到路径: ${pathId}`); console.error("可用 F 路径: F01 … F11"); process.exit(1); } if (!canonical.id.startsWith("F")) { console.error(`[record-ftl] 非 FTL 路径: ${canonical.id}`); process.exit(1); } const outDir = join( process.cwd(), ".rpa", "recordings", `${canonical.id}-human-session`, ); console.log("\n════════ FTL 人机协作录制 ════════"); console.log(`路径: ${canonical.id} — ${canonical.title}`); console.log(formatPriority1InputSummary(canonical.input)); console.log(`\n[record-ftl] 输出目录: ${outDir}`); console.log("[record-ftl] 浏览器打开后,在 handoff 清单处人工补操作"); console.log("[record-ftl] 出现报价自动保存;或 Ctrl+C 保存已录步骤\n"); const result = await runPriority1FtlPathRecording({ demo: canonical.input, caseId: canonical.id, outDir, keepBrowserOpen: true, }); process.exit(result.ok ? 0 : 1); } main().catch((e) => { console.error(e); process.exit(1); });