/* 454 — 옛 masshaul 단계 탐침 자리: 묶음 cross · profile 출력으로 누가토량 끝값(m3). * 유토곡선 판(`B05_Profile_UI_Profile_MassHaul`)과 같은 공용 계산(`computeMassHaulSeries`) · 횡단 기준. * `load` = 부르는 헬퍼의 TS 로더(`load("common_util", "…ts")`). */ module.exports = function finalCumulative(load, pipe, conversion) { const cross = pipe.output("cross"); const samples = pipe.output("profile")?.samples ?? []; if (!cross) return null; const { computeMassHaulSeries } = load("common_util", "common_util_mass_haul.ts"); const sections = Object.values(cross.byKey) .sort((a, b) => a.chainageM - b.chainageM) .map((e) => ({ station_id: e.key, chainage_m: e.chainageM, design: e.detail })); const series = computeMassHaulSeries( { length_m: samples[samples.length - 1]?.chainage_m ?? sections[sections.length - 1]?.chainage_m ?? 0, design_profiles: samples.length ? [{ samples }] : [], }, sections, conversion, ); const picked = series.find((s) => s.basis === "cross") ?? series[0]; return picked?.result?.final_cumulative_m3 ?? null; };