import { readFileSync } from 'node:fs'; import { fileURLToPath } from 'node:url'; import * as XLSX from 'xlsx'; import { parseWorkbook } from '../src/core/parseWorkbook'; import type { PierInput } from '../src/core/types'; /** Spec workbook (RAG/Pier ui_xxx.xlsx, sheet intent.PR, all tables on one sheet). Used by single-sheet tests. */ const SPEC_PATH = fileURLToPath(new URL('../public/samples/P1.xlsx', import.meta.url)); /** User input (RAG/운곡교P1입력.xlsx, three sheets 교각 · IP · 받침). This is the P1 input used by the app and tests. */ const INPUT_PATH = fileURLToPath(new URL('../public/samples/운곡교P1입력.xlsx', import.meta.url)); export function loadWorkbook(path: string = SPEC_PATH): XLSX.WorkBook { return XLSX.read(readFileSync(path), { type: 'buffer' }); } export function loadInputWorkbook(): XLSX.WorkBook { return loadWorkbook(INPUT_PATH); } export function loadP1(): PierInput { const { piers, issues } = parseWorkbook(loadInputWorkbook()); if (issues.length) throw new Error(`P1 parse issues: ${JSON.stringify(issues)}`); const p1 = piers.find((p) => p.name === 'P1'); if (!p1) throw new Error('P1 not found'); return p1; }