// STMATE 재현 앱 저장 요청(view_prj_boq.js buildSavePayload)을 api_load 응답(stdin)으로 만들어 냄 // 입력 {load, edit?: {recno, qty}} — edit 는 app.js 수량 칸 고침과 같게 leaf.qty · drow.QTY1 을 바꿈 globalThis.window = globalThis; const Calc = require("../../tools/stmate-test/calc.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 { load, edit } = JSON.parse(buf); const ctx = { state: load.sim_state, dbfData: load, currentSourcePath: load.source_path, uiState: { editedSmtMap: {} }, }; if (edit) { const leaf = ctx.state.boqItems.find((b) => b._recno === edit.recno); const drow = load.boq_rows.find((r) => r._recno === edit.recno); if (leaf) leaf.qty = edit.qty; if (drow) drow.QTY1 = String(edit.qty); } ctx.computed = Calc.calculateAll(ctx.state); process.stdout.write(JSON.stringify(window.STMATE_VIEW_PRJ_BOQ.buildSavePayload(ctx))); });