Files
Aislo/resources/tester/helper_stmate_cascade.cjs
T
eomsangdonandClaude Opus 5.5 217e20a6e0 feat(stmate-test): 일위대가·중기 재계산 — BDQTY 구성표 복호 · 연쇄 재계산 기초단가부터 1원
- bdqty.py — BDQTY.DBF 자리별 고정 변환(회전 + 더하기) 표 283자리로 복호(사용자 승인) · /api/load 에 bdqty_rows
- smt_eval.js evaluateComposition — 행 소수1 버림 · CHBNM 총액우선(행 합계액 기준) · PR 줄(PRPT 밑수 → PROUT)
  · % 단위 자원 · C* 뒤 % = 전체 비율 · 중기 운전원 CONLD 시간 환산 · '$' 단위 환율 · SBMOK 경비
- 연쇄 재계산 = X·D·B 참조 순서 · 봉화 기준 표준 레시피 이름 맞추기(자기 대조) 걷음
- 원설계 5건 일위대가·중기 291개 + 영덕 변경 31개 1원 · 기초단가부터 다시 셈해도 전 단가·총공사비 그대로
- 지킴 시험 test_stmate_ilwi_eval.py · 장부 32.2% → 33.5%

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-13 14:29:14 +09:00

21 lines
939 B
JavaScript

// 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.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 }));
});