// STMATE 재현 앱 연쇄 재계산(계산완료) — stdin = /api/load 결과 · 재계산 뒤 COSTN 단가와 원가계산서 globalThis.window = globalThis; require("../../tools/stmate-test/calc.js"); require("../../tools/stmate-test/smt_eval.js"); require("../../tools/stmate-test/smt_engine.js"); require("../../tools/stmate-test/view_prj_boq.js"); let buf = ""; process.stdin.setEncoding("utf8"); process.stdin.on("data", (d) => (buf += d)); process.stdin.on("end", () => { const d = JSON.parse(buf); const ctx = { dbfData: d, state: d.sim_state, uiState: {} }; const count = window.STMATE_ENGINE.cascadeRecalculateAll(ctx); const prices = {}; for (const r of d.costn_rows) prices[r.CODE.trim()] = ["MAMT1", "LAMT1", "SAMT1", "MAMT2", "LAMT2", "SAMT2"].map((k) => Number(r[k]), ); const k = window.STMATE_CALC.calculateAll(ctx.state).kanjubOrig; process.stdout.write(JSON.stringify({ count, prices, grand: k.grandTotal, dT: k.dT })); });