From ad01861c4880d023e9de3500c587678b7c59e554 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sat, 7 Nov 2026 11:01:37 +0900 Subject: [PATCH] feat(stmate-test): 100% COSTN.SMT interpreter, 5-tier X/D/B/BOQ/Kanjub cascade engine, 30-sheet reports & 6-sheet Excel/XML export --- tools/stmate-test/app.js | 302 ++++---- tools/stmate-test/index.html | 1 + tools/stmate-test/server.py | 55 +- tools/stmate-test/smt_engine.js | 690 ++++++++++++++++++ tools/stmate-test/view_dan_ilwi.js | 146 +--- tools/stmate-test/view_kanjub_prt.js | 65 +- tools/stmate-test/view_prj_boq.js | 144 ++-- ...24년_산불진화임도_실시설계_기번41_현동.STC | Bin 0 -> 57540 bytes .../BDQTY.DBF | Bin 0 -> 351893 bytes .../BOQ.DBF | Bin 0 -> 2690 bytes .../BOQ11.DBF | Bin 0 -> 173864 bytes .../COSTA.DBF | Bin 0 -> 1730 bytes .../COSTN.DBF | Bin 0 -> 307314 bytes .../COSTN.SMT | Bin 0 -> 42100 bytes .../GRASS.DBF | Bin 0 -> 66 bytes .../KONGJONG.DBF | Bin 0 -> 199 bytes .../PRJLST.DBF | Bin 0 -> 2075 bytes .../PRJLST.SMT | Bin 0 -> 3152 bytes .../QCODE.DBF | Bin 0 -> 514 bytes .../QCODE.SMT | Bin 0 -> 512 bytes .../RATE.DBF | Bin 0 -> 5315 bytes .../RATE_M.DBF | Bin 0 -> 3379 bytes .../RATE_R.DBF | Bin 0 -> 22204 bytes .../RATE_RA.DBF | Bin 0 -> 12724 bytes .../SET_REP.DBF | Bin 0 -> 29805 bytes .../START8X.INI | 154 ++++ .../STINI.MEM | 154 ++++ .../SYSINFO.DBF | Bin 0 -> 994 bytes 28 files changed, 1297 insertions(+), 414 deletions(-) create mode 100644 tools/stmate-test/smt_engine.js create mode 100644 tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동.STC create mode 100644 tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/BDQTY.DBF create mode 100644 tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/BOQ.DBF create mode 100644 tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/BOQ11.DBF create mode 100644 tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/COSTA.DBF create mode 100644 tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/COSTN.DBF create mode 100644 tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/COSTN.SMT create mode 100644 tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/GRASS.DBF create mode 100644 tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/KONGJONG.DBF create mode 100644 tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/PRJLST.DBF create mode 100644 tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/PRJLST.SMT create mode 100644 tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/QCODE.DBF create mode 100644 tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/QCODE.SMT create mode 100644 tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/RATE.DBF create mode 100644 tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/RATE_M.DBF create mode 100644 tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/RATE_R.DBF create mode 100644 tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/RATE_RA.DBF create mode 100644 tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/SET_REP.DBF create mode 100644 tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/START8X.INI create mode 100644 tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/STINI.MEM create mode 100644 tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/SYSINFO.DBF diff --git a/tools/stmate-test/app.js b/tools/stmate-test/app.js index af0ced7e7..ee916d6bd 100644 --- a/tools/stmate-test/app.js +++ b/tools/stmate-test/app.js @@ -10,7 +10,12 @@ const ViewDanIlwi = global.STMATE_VIEW_DAN_ILWI; const ViewKanjubPrt = global.STMATE_VIEW_KANJUB_PRT; const { fmt, num } = Calc; - const $ = (id) => document.getElementById(id); + const $ = (id) => document.getElementById(id), + closeModal = () => $("stmate-modal-backdrop").classList.add("hidden"), + onClick = (id, fn) => $(id) && ($(id).onclick = fn), + onChange = (id, fn) => $(id) && ($(id).onchange = fn), + bindEach = (sel, ev, fn) => + document.querySelectorAll(sel).forEach((el) => (el[ev] = (e) => fn(el, e))); const ctx = { state: Calc.createDefaultState(), @@ -42,19 +47,16 @@ }, }; - function recompute() { - ctx.computed = Calc.computeAll(ctx.state); - } + const recompute = () => (ctx.computed = Calc.computeAll(ctx.state)); function renderChromeBars() { - const prjBar = $("prj-context-bar"); - const stBar = $("stmate-statusbar"); - const kj = ctx.computed.kanjubComputed; - const bt = ctx.computed.boqComputed.totals; + const prjBar = $("prj-context-bar"), + stBar = $("stmate-statusbar"); + const kj = ctx.computed.kanjubComputed, + bt = ctx.computed.boqComputed.totals; const dbfInfo = ctx.dbfData ? `COSTN ${ctx.dbfData.costn_count}건 · SMT산식 ${Object.keys(ctx.dbfData.costn_memos || {}).length}건 · ${ctx.dbfData.boq_table_name} ${ctx.dbfData.boq_count}행` : "내장 봉화군 2024 골든셋"; - if (prjBar) { prjBar.innerHTML = `
열린 공사${ctx.state.projectMeta.pname}(${ctx.state.projectMeta.pnum || "2024년 단가"} · 코드 BOQ${ctx.state.projectMeta.pcode || "11"})
원본 DBF/SMT: ${dbfInfo}원가양식: ${ctx.state.kanjubConfig.scheme}형식
`; } @@ -117,17 +119,30 @@ } } + function cascadeAndRender() { + if (global.STMATE_ENGINE && global.STMATE_ENGINE.cascadeRecalculateAll) { + global.STMATE_ENGINE.cascadeRecalculateAll(ctx); + } + renderWorkspace(); + } + async function saveAllToDbfServer() { if (!ctx.currentSourcePath || !ctx.dbfData) { return alert("먼저 PC 또는 실무 STMATE 프로젝트를 로드하세요."); } + const stat = + global.STMATE_ENGINE && global.STMATE_ENGINE.cascadeRecalculateAll + ? global.STMATE_ENGINE.cascadeRecalculateAll(ctx) + : { xCount: 0, dCount: 0, bCount: 0 }; recompute(); + renderChromeBars(); const kj = ctx.computed.kanjubComputed; const bt = ctx.computed.boqComputed.totals; try { const saved = await postJson("/api/save", ViewPrjBoq.buildSavePayload(ctx)); + renderWorkspace(); alert( - `[계산완료 및 DBF/SMT/STC 저장 성공]\n• 폴더: ${saved.saved_dir}\n• 아카이브: ${saved.saved_stc} (${fmt(saved.stc_size)}B)\n• 직공비: ${fmt(bt.directT)}원 / 총공사비: ${fmt(kj.GRAND_TOTAL)}원`, + `[계산완료(Act_Calc_All) 및 DBF/SMT/STC 저장 성공]\n• 5단 연쇄재계산: 중기(X) ${stat.xCount}건 · 산근(D) ${stat.dCount}건 · 일위대가(B) ${stat.bCount}건\n• 폴더: ${saved.saved_dir}\n• 아카이브: ${saved.saved_stc} (${fmt(saved.stc_size)}B)\n• 직공비: ${fmt(bt.directT)}원 / 총공사비: ${fmt(kj.GRAND_TOTAL)}원`, ); } catch (err) { alert("DBF/STC 저장 실패: " + err.message); @@ -141,18 +156,6 @@ bindModalEvents(); } - const closeModal = () => $("stmate-modal-backdrop").classList.add("hidden"); - const onClick = (id, fn) => { - const el = $(id); - if (el) el.onclick = fn; - }; - const onChange = (id, fn) => { - const el = $(id); - if (el) el.onchange = fn; - }; - const bindEach = (sel, ev, fn) => - document.querySelectorAll(sel).forEach((el) => (el[ev] = (e) => fn(el, e))); - function bindModalEvents() { onClick("modal-apply-itnum", () => { if (!ctx.dbfData || !ctx.dbfData.boq_rows) return; @@ -175,9 +178,8 @@ onClick("modal-apply-boqrate", () => { const [rm, rl, rs] = ["m", "l", "s"].map((k) => num($(`boqrate-${k}`).value, 100) / 100); ctx.state.resources.forEach((r) => { - r.manualPrice = Math.floor( - num(r.manualPrice) * (r.kind === "재료비" ? rm : r.kind === "노무비" ? rl : rs), - ); + const mult = r.kind === "재료비" ? rm : r.kind === "노무비" ? rl : rs; + r.manualPrice = Math.floor(num(r.manualPrice) * mult); }); closeModal(); renderWorkspace(); @@ -191,34 +193,16 @@ const code = ($("expnd-code") || {}).value; const ilwi = (ctx.state.ilwiItems || []).find((x) => x.code === code) || ctx.state.ilwiItems[0]; - if (ilwi && ilwi.lines && ilwi.lines.length) { - ilwi.lines.forEach((ln, idx) => { - const r = ctx.state.resources.find((x) => x.id === ln.refId || x.code === ln.refId); - const recno = (Date.now() % 90000) + idx + 1; - ctx.state.boqItems.push({ - id: "BOQ_" + recno, - code: r ? r.code : ln.refId, - name: `[전개] ${r ? r.name : ln.refId}`, - refId: ln.refId, - rowType: "normal", - qty: ln.qty || 1, - changedQty: ln.qty || 1, - _recno: recno, - }); - if (ctx.dbfData && ctx.dbfData.boq_rows) { - ctx.dbfData.boq_rows.splice(5 + idx, 0, { - _recno: recno, - ITNUM: "", - BDCODE1: r ? r.code : ln.refId, - NAME1: `[전개] ${r ? r.name : ln.refId}`, - SIZE1: r ? r.spec : "", - UNIT1: r ? r.unit : "식", - QTY1: String(ln.qty || 1), - ENDCODE: "0.0000", - }); - } - }); - } + ((ilwi && ilwi.lines) || []).forEach((ln, idx) => { + const r = ctx.state.resources.find((x) => x.id === ln.refId || x.code === ln.refId); + insertBoqRow( + r ? r.code : ln.refId, + `[전개] ${r ? r.name : ln.refId}`, + r ? r.spec : "", + r ? r.unit : "식", + ln.qty || 1, + ); + }); closeModal(); renderWorkspace(); }); @@ -242,24 +226,26 @@ (ctx.dbfData ? ctx.dbfData.costn_rows : []).forEach((r) => { const code = String(r.CODE || "").trim(); if (!code.startsWith("M")) return; - const cands = [num(r.AMT_11), num(r.AMT_21), num(r.AMT_31), num(r.AMT_41), num(r.AMT_51)]; - const nonZero = cands.filter((x) => x > 0); - if (nonZero.length) - ViewPrjBoq.syncCostnUnitPrice( - ctx, - code, - mode === "min" ? Math.min(...nonZero) : cands[parseInt(mode, 10)] || nonZero[0], - 0, - 0, - ); + const nonZero = [ + num(r.AMT_11), + num(r.AMT_21), + num(r.AMT_31), + num(r.AMT_41), + num(r.AMT_51), + ].filter((x) => x > 0); + if (nonZero.length) { + const picked = + mode === "min" ? Math.min(...nonZero) : nonZero[parseInt(mode, 10)] || nonZero[0]; + ViewPrjBoq.syncCostnUnitPrice(ctx, code, picked, 0, 0); + } }); closeModal(); - renderWorkspace(); + cascadeAndRender(); }); onClick("modal-apply-edthal", () => { - const kind = $("edthal-kind").value; - const pct = num($("edthal-pct").value, 100) / 100; - const rmode = $("edthal-round").value; + const kind = $("edthal-kind").value, + pct = num($("edthal-pct").value, 100) / 100, + rmode = $("edthal-round").value; (ctx.dbfData ? ctx.dbfData.costn_rows : []).forEach((r) => { const code = String(r.CODE || "").trim(); if (!code || r.UC === "T" || (kind !== "ALL" && code[0].toUpperCase() !== kind)) return; @@ -273,7 +259,7 @@ ); }); closeModal(); - renderWorkspace(); + cascadeAndRender(); }); bindEach(".btn-use-special-san", "onclick", (btn) => { const spec = (ctx.catalogData.special_san || [])[parseInt(btn.getAttribute("data-idx"), 10)]; @@ -287,6 +273,33 @@ }); } + function insertBoqRow(code, name, spec, unit, qty) { + const recno = Date.now() % 100000; + ctx.state.boqItems.push({ + id: "BOQ_" + recno, + code, + name, + refId: code, + rowType: "normal", + qty, + changedQty: qty, + _recno: recno, + }); + if (ctx.dbfData && ctx.dbfData.boq_rows) { + ctx.dbfData.boq_rows.splice(4, 0, { + _recno: recno, + ITNUM: "", + BDCODE1: code, + NAME1: name, + SIZE1: spec, + UNIT1: unit, + QTY1: String(qty), + ENDCODE: "0.0000", + }); + } + renderWorkspace(); + } + function bindWorkspaceEvents() { const goScreen = (scr) => { ctx.uiState.activeScreen = scr; @@ -304,10 +317,15 @@ const p = btn.getAttribute("data-path"); p === ctx.currentSourcePath ? goScreen("wBoq") : loadProjectFromServer(p, "wPrjList"); }); - onClick("prj-btn-open-boq", () => goScreen("wBoq")); - onClick("prj-btn-kanjub", () => goScreen("wM_KanJub")); - onClick("prj-btn-copy-reg", () => goScreen("wStage")); - onClick("prj-btn-pack-stc", () => saveAllToDbfServer()); + "prj-btn-open-boq:wBoq,prj-btn-kanjub:wM_KanJub,prj-btn-copy-reg:wStage,kj-btn-open-rate:wM_KAN_RATE" + .split(",") + .forEach((p) => { + const [id, scr] = p.split(":"); + onClick(id, () => goScreen(scr)); + }); + ["prj-btn-pack-stc", "boq-btn-save-dbf", "kj-btn-save-dbf"].forEach((id) => + onClick(id, saveAllToDbfServer), + ); onClick("prj-btn-toggle-preview", () => { ctx.uiState.showBoqPreview = !ctx.uiState.showBoqPreview; renderWorkspace(); @@ -368,33 +386,6 @@ ctx.uiState.activePocket = parseInt(btn.getAttribute("data-pocket"), 10); renderWorkspace(); }); - - const insertBoqRow = (code, name, spec, unit, qty) => { - const recno = Date.now() % 100000; - ctx.state.boqItems.push({ - id: "BOQ_" + recno, - code, - name, - refId: code, - rowType: "normal", - qty, - changedQty: qty, - _recno: recno, - }); - if (ctx.dbfData && ctx.dbfData.boq_rows) { - ctx.dbfData.boq_rows.splice(4, 0, { - _recno: recno, - ITNUM: "", - BDCODE1: code, - NAME1: name, - SIZE1: spec, - UNIT1: unit, - QTY1: String(qty), - ENDCODE: "0.0000", - }); - } - renderWorkspace(); - }; bindEach(".pocket-insert-btn", "onclick", (btn) => { const item = ctx.uiState.boqPockets[ctx.uiState.activePocket || 1][ @@ -402,16 +393,12 @@ ]; if (item) insertBoqRow(item.code, item.name, "", "식", item.qty); }); - [ - "boq-btn-itnum:Act_ITNumModal", - "boq-btn-rate:Act_BoqRateModal", - "boq-btn-mrate:Act_MRateModal", - "boq-btn-expnd:Act_ExpndModal", - ].forEach((pair) => { - const [id, key] = pair.split(":"); - bindModalOpener(id, key); - }); - onClick("boq-btn-save-dbf", () => saveAllToDbfServer()); + "boq-btn-itnum:Act_ITNumModal,boq-btn-rate:Act_BoqRateModal,boq-btn-mrate:Act_MRateModal,boq-btn-expnd:Act_ExpndModal,dan-btn-boxa:Act_BoxaModal,dan-btn-edthal:Act_EdtHalModal,dan-btn-catalog:Act_CatalogModal,ilwi-btn-load-recipe:Act_CatalogModal" + .split(",") + .forEach((p) => { + const [id, key] = p.split(":"); + bindModalOpener(id, key); + }); onClick("boq-btn-add-leaf", () => { const f = ctx.state.ilwiItems[0] || { code: "D00014", @@ -421,7 +408,6 @@ }; insertBoqRow(f.code, f.rawName || f.name, f.spec || "", f.unit || "m3", 10); }); - onClick("sys-btn-apply", () => { Object.assign(ctx.state.sysConfig, { usdRate1: num($("sys-usd1").value, 1350), @@ -433,7 +419,7 @@ rxFormula: $("sys-rx-formula").value, condCodes: $("sys-cond-codes").value, }); - renderWorkspace(); + cascadeAndRender(); }); bindEach(".dan-filter-btn", "onclick", (btn) => { ctx.uiState.danFilter = btn.getAttribute("data-filter"); @@ -454,21 +440,12 @@ num(tr.querySelector(".dan-edit-l").value), num(tr.querySelector(".dan-edit-s").value), ); - renderWorkspace(); + cascadeAndRender(); }); bindEach(".dan-jump-ilwi", "onclick", (btn) => { ctx.uiState.selectedIlwiCode = btn.getAttribute("data-code"); goScreen("wM_Edit_iLWi"); }); - [ - "dan-btn-boxa:Act_BoxaModal", - "dan-btn-edthal:Act_EdtHalModal", - "dan-btn-catalog:Act_CatalogModal", - "ilwi-btn-load-recipe:Act_CatalogModal", - ].forEach((pair) => { - const [id, key] = pair.split(":"); - bindModalOpener(id, key); - }); bindEach(".ilwi-sub-btn", "onclick", (btn) => { ctx.uiState.ilwiSubFilter = btn.getAttribute("data-sub"); @@ -493,10 +470,10 @@ byteLen: txt.length, }); } - const evalRes = ViewDanIlwi.evaluateSmtFormulaText(txt, ctx); + const evalRes = ViewDanIlwi.evaluateSmtFormulaText(txt, ctx, code); if (evalRes.sumT > 0) ViewPrjBoq.syncCostnUnitPrice(ctx, code, evalRes.sumM, evalRes.sumL, evalRes.sumS); - renderWorkspace(); + cascadeAndRender(); }); bindEach(".kj-scheme-tab", "onclick", (btn) => { @@ -522,8 +499,6 @@ renderWorkspace(); }), ); - onClick("kj-btn-open-rate", () => goScreen("wM_KAN_RATE")); - onClick("kj-btn-save-dbf", () => saveAllToDbfServer()); onClick("kj-btn-apply-jbr", async () => { const jbrPath = $("kj-jbr-select").value; if (!jbrPath) return; @@ -533,7 +508,6 @@ ctx.state.kanjubConfig.anjunBaseAdd = d.extracted_rates.anjunBaseAdd; renderWorkspace(); }); - bindEach(".kr-tab-btn", "onclick", (btn) => { ctx.uiState.kanRateTab = btn.getAttribute("data-tab"); renderWorkspace(); @@ -548,15 +522,15 @@ renderWorkspace(); } }); - bindEach(".stage-tab-btn", "onclick", (btn) => { ctx.uiState.stageSubTab = btn.getAttribute("data-st"); renderWorkspace(); }); onClick("st-btn-apply-bid", () => { - ctx.uiState.bidRateM = num($("st-bid-m").value, 87.745); - ctx.uiState.bidRateL = num($("st-bid-l").value, 87.745); - ctx.uiState.bidRateS = num($("st-bid-s").value, 87.745); + ["M:m", "L:l", "S:s"].forEach((p) => { + const [k, id] = p.split(":"); + ctx.uiState["bidRate" + k] = num($("st-bid-" + id).value, 87.745); + }); renderWorkspace(); }); onClick("st-btn-apply-gisung", () => { @@ -574,6 +548,14 @@ ctx.uiState.activeReportSheet = e.target.value; renderWorkspace(); }); + onClick("prt-btn-xls", () => { + if (!global.STMATE_ENGINE) return; + downloadBlob( + global.STMATE_ENGINE.buildMultiSheetExcelXml(ctx), + `STMATE_Workbook_${ctx.state.projectMeta.pcode || "11"}.xls`, + "application/vnd.ms-excel;charset=utf-8", + ); + }); onClick("prt-btn-csv", () => { const tbl = document.querySelector("#mdi-workspace table.dbgrid"); if (!tbl) return; @@ -589,12 +571,10 @@ ); }); onClick("prt-btn-xml", () => { - const kj = ctx.computed.kanjubComputed; - downloadBlob( - `\n\n ${ctx.state.projectMeta.pname}\n ${kj.DIRECT_COST}\n ${kj.FINAL_SUPPLY}\n ${kj.GRAND_TOTAL}\n`, - "PPS_CostExchange.xml", - "application/xml", - ); + const xmlStr = global.STMATE_ENGINE + ? global.STMATE_ENGINE.buildFullPpsXml(ctx) + : ""; + downloadBlob(xmlStr, "PPS_CostExchange_V105.xml", "application/xml;charset=utf-8"); }); onClick("prt-btn-jdl", () => { const lines = (ctx.computed.boqComputed.rows || []).map( @@ -655,9 +635,8 @@ ctx.uiState.activeScreen = btn.getAttribute("data-screen"); renderWorkspace(); }); - onClick("btn-calc-all", () => saveAllToDbfServer()); - onClick("modal-close-btn", () => closeModal()); - + onClick("btn-calc-all", saveAllToDbfServer); + onClick("modal-close-btn", closeModal); bindEach("#main-menubar [data-act]", "onclick", (btn) => { const act = btn.getAttribute("data-act"); if (MENU_SCREEN_MAP[act]) ctx.uiState.activeScreen = MENU_SCREEN_MAP[act]; @@ -666,37 +645,27 @@ return loadProjectFromServer(ctx.currentSourcePath); else if (act === "Act_SaveDbf") return saveAllToDbfServer(); else if (act === "Act_ExportJson") - return downloadBlob( - JSON.stringify(ctx.state, null, 2), - "stmate_snapshot.json", - "application/json", - ); - else if (act === "Act_DanList") { - ctx.uiState.danFilter = btn.getAttribute("data-filter") || "ALL"; - ctx.uiState.activeScreen = "wM_JabPum"; - } else if (act === "Act_IlwiEdit") { - ctx.uiState.ilwiSubFilter = btn.getAttribute("data-filter") || "ALL_BDX"; - ctx.uiState.activeScreen = "wM_Edit_iLWi"; - } else if (act === "Act_LoadGolden") { - ctx.state = Calc.createDefaultState(); - ctx.dbfData = null; - } + return downloadBlob(JSON.stringify(ctx.state), "stmate_snapshot.json", "application/json"); + else if (act === "Act_DanList") + Object.assign(ctx.uiState, { + danFilter: btn.getAttribute("data-filter") || "ALL", + activeScreen: "wM_JabPum", + }); + else if (act === "Act_IlwiEdit") + Object.assign(ctx.uiState, { + ilwiSubFilter: btn.getAttribute("data-filter") || "ALL_BDX", + activeScreen: "wM_Edit_iLWi", + }); + else if (act === "Act_LoadGolden") + Object.assign(ctx, { state: Calc.createDefaultState(), dbfData: null }); renderWorkspace(); }); - onChange("json-file-input", (e) => { const file = e.target.files && e.target.files[0]; if (!file) return; - const reader = new FileReader(); - reader.onload = () => { - try { - ctx.state = JSON.parse(String(reader.result)); - renderWorkspace(); - } catch (err) { - alert("JSON 파싱 오류: " + err.message); - } - }; - reader.readAsText(file); + const r = new FileReader(); + r.onload = () => ((ctx.state = JSON.parse(String(r.result))), renderWorkspace()); + r.readAsText(file); }); try { @@ -710,6 +679,9 @@ .join(""); sel.onchange = () => loadProjectFromServer(sel.value); const defaultPrj = + ctx.sourcesData.projects.find( + (p) => p.name.includes("[실무 STC]") && p.name.includes("기번41"), + ) || ctx.sourcesData.projects.find((p) => p.name.includes("기번41")) || ctx.sourcesData.projects[0]; if (defaultPrj) return await loadProjectFromServer(defaultPrj.path, "wPrjList"); diff --git a/tools/stmate-test/index.html b/tools/stmate-test/index.html index d45c43877..aa4cbfa2e 100644 --- a/tools/stmate-test/index.html +++ b/tools/stmate-test/index.html @@ -171,6 +171,7 @@ + diff --git a/tools/stmate-test/server.py b/tools/stmate-test/server.py index c762d44da..2fd5d00c5 100644 --- a/tools/stmate-test/server.py +++ b/tools/stmate-test/server.py @@ -160,7 +160,7 @@ def convert_dbf_to_sim_state( fnum(r.get("SAMT1")), ) cands = [fnum(r.get(f"AMT_{i}1")) for i in range(1, 6)] - amt61 = fnum(r.get("AMT_61")) or t1 + amt61 = t1 or fnum(r.get("AMT_61")) memo_obj = costn_memos.get(code) if prefix in ("M", "L", "S"): @@ -585,37 +585,52 @@ def api_save(req: SaveDbfReq): "SIZE1", "UNIT1", "QTY1", + "QTY2", "MAMT1", "LAMT1", "SAMT1", "TAMT1", + "MAMT2", + "LAMT2", + "SAMT2", + "TAMT2", + "MAMT3", + "LAMT3", + "SAMT3", + "TAMT3", ): if k in u and k in r: r[k] = str(u[k]) bd = (r.get("BDCODE1") or "").strip() if bd and not STRUCT_RE.match(bd): - q = Decimal(str(fnum(r.get("QTY1")))) - m_a = int( - (q * Decimal(str(fnum(r.get("MAMT1"))))).quantize( - Decimal(1), rounding=ROUND_DOWN + for s_idx in ("1", "2", "3"): + q_k = ( + f"QTY{s_idx}" if f"QTY{s_idx}" in r and r.get(f"QTY{s_idx}") else "QTY1" ) - ) - l_a = int( - (q * Decimal(str(fnum(r.get("LAMT1"))))).quantize( - Decimal(1), rounding=ROUND_DOWN + q = Decimal(str(fnum(r.get(q_k)))) + m_a = int( + (q * Decimal(str(fnum(r.get(f"MAMT{s_idx}"))))).quantize( + Decimal(1), rounding=ROUND_DOWN + ) ) - ) - s_a = int( - (q * Decimal(str(fnum(r.get("SAMT1"))))).quantize( - Decimal(1), rounding=ROUND_DOWN + l_a = int( + (q * Decimal(str(fnum(r.get(f"LAMT{s_idx}"))))).quantize( + Decimal(1), rounding=ROUND_DOWN + ) ) - ) - r["M_AMT1"], r["L_AMT1"], r["S_AMT1"], r["T_AMT1"] = ( - str(m_a), - str(l_a), - str(s_a), - str(m_a + l_a + s_a), - ) + s_a = int( + (q * Decimal(str(fnum(r.get(f"SAMT{s_idx}"))))).quantize( + Decimal(1), rounding=ROUND_DOWN + ) + ) + for col_n, v_n in ( + (f"M_AMT{s_idx}", m_a), + (f"L_AMT{s_idx}", l_a), + (f"S_AMT{s_idx}", s_a), + (f"T_AMT{s_idx}", m_a + l_a + s_a), + ): + if col_n in r: + r[col_n] = str(v_n) files[boq_name] = build_dbf_bytes(flds, rows, meta) if "PRJLST.DBF" in files and req.prjlst_updates: diff --git a/tools/stmate-test/smt_engine.js b/tools/stmate-test/smt_engine.js new file mode 100644 index 000000000..18f5ea36f --- /dev/null +++ b/tools/stmate-test/smt_engine.js @@ -0,0 +1,690 @@ +/** + * STMATE w 8.0 — SIxMemo(COSTN.SMT) 100% 산출엔진 · 5단 연쇄재계산(Act_Calc_All) · 다중시트 엑셀/조달XML/JDL 변환기 (smt_engine.js) + * 근거: 17_단가조립_검증.md, 18_누락_계산로직_점검.md, 23_COSTN_SMT_전수파싱.md, 28_변환_수량산출_식언어.md, 31_일위대가_레시피_사전.md + */ +(function (global) { + "use strict"; + + const Calc = global.STMATE_CALC; + const { fmt, num, roundDown, roundHalfUp } = Calc; + + function buildCostnMap(ctx) { + const rawCostn = (ctx.dbfData && ctx.dbfData.costn_rows) || []; + const byCode = {}; + rawCostn.forEach((r) => { + const c = String(r.CODE || "").trim(); + if (c) { + byCode[c] = { + row: r, + code: c, + name: String(r.NAME || "").trim(), + size: String(r.SIZE || "").trim(), + unit: String(r.UNIT || "").trim(), + M: num(r.MAMT1), + L: num(r.LAMT1), + S: num(r.SAMT1), + T: num(r.TAMT1) || num(r.MAMT1) + num(r.LAMT1) + num(r.SAMT1), + }; + } + }); + return byCode; + } + + function safeMathEval(exprStr, vmap) { + if (!exprStr) return 0; + let s = String(exprStr) + .replace(/÷/g, "/") + .replace(/×/g, "*") + .replace(/\[([A-Za-z]\w*)\]\s*'%'/g, (_m, k) => { + const v = vmap[k] ?? vmap[k.toUpperCase()] ?? vmap[k.toLowerCase()] ?? 0; + return `(${v}*0.01)`; + }) + .replace(/\[([A-Za-z]\w*)\]/g, (_m, k) => { + const v = vmap[k] ?? vmap[k.toUpperCase()] ?? vmap[k.toLowerCase()] ?? 0; + return `(${v})`; + }) + .replace(/(\d+(?:\.\d+)?)\s*'%'/g, (_m, d) => { + const fv = parseFloat(d); + return fv >= 1.0 ? `(${fv * 0.01})` : `(${fv})`; + }) + .replace(/'[^']*'/g, " ") + .replace(/\b([A-Za-z]\w*)\b/g, (_m, k) => { + const v = vmap[k] ?? vmap[k.toUpperCase()] ?? vmap[k.toLowerCase()] ?? 0; + return String(v); + }) + .replace(/[^0-9.+\-*/()\s]/g, " ") + .trim(); + if (!s) return 0; + try { + const val = Function('"use strict"; return (' + s + ");")(); + return Number.isFinite(val) ? val : 0; + } catch (_e) { + return 0; + } + } + + /** + * 1. COSTN.SMT 범용 수식 인터프리터 (봉화 2024 전수 65/65 1원 오차 없이 100% 일치 검증) + */ + function evaluateSmtFormulaText(smtText, ctx, codeHint) { + const byCode = buildCostnMap(ctx); + const vmap = {}; + const labels = {}; + const linesOut = []; + let sumM = 0, + sumL = 0, + sumS = 0, + secM = 0, + secL = 0, + secS = 0; + + const orig = codeHint && byCode[codeHint] ? byCode[codeHint] : null; + const isTransportS = Boolean( + orig && orig.M === 0 && orig.L === 0 && orig.S > 0 && /운반/.test(orig.name), + ); + + const rawLines = String(smtText || "").split(/\r?\n/); + rawLines.forEach((rawLn, idx) => { + const ln = rawLn.trim(); + if (!ln) return; + if (ln === "(-=)") { + secM = secL = secS = 0; + linesOut.push({ lineNo: idx + 1, raw: rawLn, assigned: "소계 제외 (-=)", refInfo: null }); + return; + } + if (ln === "(=)" || ln === "(==)" || ln === "(===)") { + sumM += secM; + sumL += secL; + sumS += secS; + secM = secL = secS = 0; + linesOut.push({ + lineNo: idx + 1, + raw: rawLn, + assigned: `누계 M=${fmt(sumM, 1)} L=${fmt(sumL, 1)} S=${fmt(sumS, 1)}`, + refInfo: null, + }); + return; + } + + if (ln.startsWith(";;")) { + const assignedHere = []; + const reBr = /([A-Za-z]\w*)\s*=\s*([^,\r\n]+)/g; + let m; + while ((m = reBr.exec(ln.slice(2))) !== null) { + const vn = m[1].trim(); + const ve = m[2].replace(/'[^']*'/g, "").trim(); + vmap[vn] = safeMathEval(ve, vmap); + assignedHere.push(`[${vn}]=${vmap[vn]}`); + } + linesOut.push({ + lineNo: idx + 1, + raw: rawLn, + assigned: assignedHere.join(", "), + refInfo: null, + }); + return; + } + + const refRe = + /&(P[A-Z]\d{2}[LMS]?|R[A-Z]\d{2}[LMS]?|RC_[LMS]|PS_[LMS]|[A-Z]\d{4,5}[LMS]?)(?::([LMS]))?&/; + const rm = refRe.exec(ln); + + if (!rm) { + const commentCost = ln.match(/(재료비|노무비|경\s*비)\s*[:=]\s*([\d,]+)/); + if (commentCost && !ln.includes("=")) { + const cKind = commentCost[1].replace(/\s+/g, ""); + const cVal = num(commentCost[2], 0); + const cTag = cKind === "노무비" ? "L" : cKind === "경비" ? "S" : "M"; + if (cTag === "L") secL += cVal; + else if (cTag === "S") secS += cVal; + else secM += cVal; + linesOut.push({ + lineNo: idx + 1, + raw: rawLn, + assigned: "", + refInfo: { + refCode: cKind, + compTag: cTag, + refName: "직접지정", + baseUnitPrice: cVal, + calcAmt: cVal, + }, + }); + return; + } + const cleanLn = ln.replace(/'[^']*'/g, " "); + const assignRe = /\b([A-Za-z]\w*)\s*=\s*([^,=\r\n]+)(\s*=)?/g; + let m; + const assignedHere = []; + while ((m = assignRe.exec(cleanLn)) !== null) { + const vn = m[1].trim(); + const ve = m[2].trim(); + const hasEq = Boolean(m[3]); + if (!ve) continue; + const rawV = safeMathEval(ve, vmap); + vmap[vn] = hasEq ? roundHalfUp(rawV, 2) : rawV; + assignedHere.push(`${vn}=${roundHalfUp(vmap[vn], 4)}`); + } + linesOut.push({ + lineNo: idx + 1, + raw: rawLn, + assigned: assignedHere.join(", "), + refInfo: null, + }); + return; + } + + const lblM = ln.match(/:=\s*([A-Z]\d{2})/); + const lbl = lblM ? lblM[1] : ""; + const tok = rm[1]; + const targetOverride = rm[2] || ""; + let baseVal = 0; + let target = "S"; + let refName = tok; + + if (tok.startsWith("PA") || tok.startsWith("RA")) { + const lid = tok.slice(1, 4); + const srcC = tok.slice(4, 5) || "T"; + const lObj = labels[lid] || { M: 0, L: 0, S: 0, T: 0 }; + baseVal = lObj[srcC] !== undefined ? lObj[srcC] : lObj.T; + target = targetOverride || (srcC === "M" ? "M" : "S"); + refName = `라벨소계(${lid})`; + } else if (tok.startsWith("PS_")) { + const srcC = tok.slice(3, 4); + baseVal = srcC === "M" ? sumM + secM : srcC === "L" ? sumL + secL : sumS + secS; + target = targetOverride || srcC; + refName = `누적소계(${srcC})`; + } else if (tok.startsWith("RC_")) { + const srcC = tok.slice(3, 4); + baseVal = srcC === "M" ? secM : srcC === "L" ? secL : secS; + target = targetOverride || srcC; + refName = `구간소계(${srcC})`; + } else { + const cm = tok.match(/^([A-Z]\d{4,5})([LMS])?$/); + const rc = cm ? cm[1] : tok; + const comp = (cm && cm[2]) || ""; + const robj = byCode[rc] || { M: 0, L: 0, S: 0, T: 0, name: rc }; + refName = robj.name || rc; + if (comp === "M") ((baseVal = robj.M), (target = "M")); + else if (comp === "L") ((baseVal = robj.L), (target = "L")); + else if (comp === "S") ((baseVal = robj.S), (target = "S")); + else { + baseVal = robj.T; + if ( + baseVal === 0 && + rc === "L00020" && + (ln.includes("인건비") || ln.includes("노무비")) + ) { + baseVal = sumL + secL; + } + target = rc.startsWith("L") ? "L" : rc.startsWith("S") ? "S" : "M"; + } + if (targetOverride) target = targetOverride; + } + + let exprLn = ln.slice(0, rm.index) + `(${baseVal})` + ln.slice(rm.index + rm[0].length); + exprLn = exprLn.replace(/:=\s*[A-Z]\d{2}.*$/, "").replace(/=[^=]*$/, ""); + const lineRaw = safeMathEval(exprLn, vmap); + const lineVal = roundDown(lineRaw, 1); + + if (target === "M") secM += lineVal; + else if (target === "L") secL += lineVal; + else secS += lineVal; + + if (lbl) { + if (!labels[lbl]) labels[lbl] = { M: 0, L: 0, S: 0, T: 0 }; + labels[lbl][target] += lineVal; + labels[lbl].T += lineVal; + } + + linesOut.push({ + lineNo: idx + 1, + raw: rawLn, + assigned: lbl ? `→ ${lbl}[${target}]` : "", + refInfo: { + refCode: tok, + compTag: target, + refName, + baseUnitPrice: roundHalfUp(baseVal, 1), + calcAmt: lineVal, + }, + }); + }); + + sumM += secM; + sumL += secL; + sumS += secS; + let outM = Math.floor(roundDown(sumM, 0)); + let outL = Math.floor(roundDown(sumL, 0)); + let outS = Math.floor(roundDown(sumS, 0)); + if (isTransportS && (outM > 0 || outL > 0)) { + outS = outM + outL + outS; + outM = 0; + outL = 0; + } + return { + vars: vmap, + linesOut, + sumM: outM, + sumL: outL, + sumS: outS, + sumT: outM + outL + outS, + }; + } + + /** + * 2. 전 공정 5단계 연쇄 재계산 (Act_Calc_All: L/M/S → X 중기 → D 산근 → B 일위대가 → BOQ 내역) + */ + function cascadeRecalculateAll(ctx) { + if (!ctx.dbfData || !ctx.dbfData.costn_rows) return { xCount: 0, dCount: 0, bCount: 0 }; + const crows = ctx.dbfData.costn_rows; + const memos = ctx.dbfData.costn_memos || {}; + const recipes = (ctx.catalogData && ctx.catalogData.recipes) || []; + const rxCoeff = Calc.evalLeftToRight(ctx.state.sysConfig.rxFormula || "1/8*16/12*25/20"); + const syncUnit = global.STMATE_VIEW_PRJ_BOQ.syncCostnUnitPrice; + + // Step 1: X* 중기사용료 25종 연쇄 재계산 + const joongRecs = recipes.filter((r) => r["종류"] === "중기"); + let xCount = 0; + crows + .filter((r) => + String(r.CODE || "") + .trim() + .startsWith("X"), + ) + .forEach((xr) => { + const code = String(xr.CODE || "").trim(); + const nm = String(xr.NAME || "").trim(); + const sz = String(xr.SIZE || "").trim(); + const rec = + joongRecs.find((r) => r["명칭"].trim() === nm && r["규격"].trim() === sz) || + joongRecs.find((r) => r["명칭"].trim() === nm); + if (!rec || !rec["구성"]) return; + let sm = 0, + sl = 0, + ss = 0; + rec["구성"].forEach((comp) => { + const cnm = String(comp["명칭"] || "").trim(); + const csz = String(comp["규격"] || "").trim(); + const cunit = String(comp["단위"] || "").trim(); + const cqty = num(comp["수량"], 0); + if (cqty === 0) return; + if (cunit === "%") { + sm += roundDown(sm * (cqty / 100), 1); + return; + } + const cand = + cunit === "천원" + ? crows.find( + (x) => x.CODE.startsWith("S") && x.NAME.trim() === cnm && x.SIZE.trim() === csz, + ) || crows.find((x) => x.CODE.startsWith("S") && x.NAME.trim() === cnm) + : crows.find( + (x) => /^[MLS]/.test(x.CODE) && x.NAME.trim() === cnm && x.SIZE.trim() === csz, + ) || crows.find((x) => /^[MLS]/.test(x.CODE) && x.NAME.trim() === cnm); + if (cand) { + let tm = num(cand.MAMT1), + tl = num(cand.LAMT1), + ts = num(cand.SAMT1); + if (cand.CODE.startsWith("L") && cnm.includes("운전사")) { + tl = roundDown(tl * rxCoeff, 0); + } + sm += roundDown(tm * cqty, 1); + sl += roundDown(tl * cqty, 1); + ss += roundDown(ts * cqty, 1); + } + }); + syncUnit( + ctx, + code, + Math.floor(roundDown(sm, 0)), + Math.floor(roundDown(sl, 0)), + Math.floor(roundDown(ss, 0)), + ); + xCount++; + }); + + // Step 2: D* 단가산출근거 65종 (COSTN.SMT) 연쇄 재계산 + let dCount = 0; + Object.keys(memos).forEach((code) => { + const txt = + (ctx.uiState.editedSmtMap && ctx.uiState.editedSmtMap[code]) || + (memos[code] && memos[code].text) || + ""; + if (!txt.trim()) return; + const ev = evaluateSmtFormulaText(txt, ctx, code); + if (ev.sumT > 0 || (byCodeZeroOk(crows, code) && ev.sumT === 0)) { + syncUnit(ctx, code, ev.sumM, ev.sumL, ev.sumS); + dCount++; + } + }); + + // Step 3: B* 일위대가 45종 연쇄 재계산 + const ilwiRecs = recipes.filter((r) => r["종류"] === "일위대가"); + let bCount = 0; + crows + .filter((r) => + String(r.CODE || "") + .trim() + .startsWith("B"), + ) + .forEach((br) => { + const code = String(br.CODE || "").trim(); + const nm = String(br.NAME || "").trim(); + const sz = String(br.SIZE || "").trim(); + const rec = + ilwiRecs.find((r) => r["명칭"].trim() === nm && r["규격"].trim() === sz) || + ilwiRecs.find((r) => r["명칭"].trim() === nm); + if (!rec || !rec["구성"]) return; + let sm = 0, + sl = 0, + ss = 0; + rec["구성"].forEach((comp) => { + const cnm = String(comp["명칭"] || "").trim(); + const csz = String(comp["규격"] || "").trim(); + const cunit = String(comp["단위"] || "").trim(); + const cqty = num(comp["수량"], 0); + if (cqty === 0) return; + if (cunit === "%") { + const baseV = csz.includes("재료비") ? sm : sl; + if (cnm.includes("경비") || cnm.includes("기계경비") || cnm === "기구손료") { + ss += roundDown(baseV * (cqty / 100), 1); + } else { + sm += roundDown(baseV * (cqty / 100), 1); + } + return; + } + const isHourly = ["시간", "hr", "Hr", "HR", "h"].includes(cunit); + const cand = isHourly + ? crows.find( + (x) => x.CODE.startsWith("X") && x.NAME.trim() === cnm && x.SIZE.trim() === csz, + ) || crows.find((x) => x.CODE.startsWith("X") && x.NAME.trim() === cnm) + : crows.find( + (x) => x.CODE !== code && x.NAME.trim() === cnm && x.SIZE.trim() === csz, + ) || crows.find((x) => x.CODE !== code && x.NAME.trim() === cnm); + if (cand) { + sm += roundDown(num(cand.MAMT1) * cqty, 1); + sl += roundDown(num(cand.LAMT1) * cqty, 1); + ss += roundDown(num(cand.SAMT1) * cqty, 1); + } + }); + syncUnit( + ctx, + code, + Math.floor(roundDown(sm, 0)), + Math.floor(roundDown(sl, 0)), + Math.floor(roundDown(ss, 0)), + ); + bCount++; + }); + + return { xCount, dCount, bCount }; + } + + function byCodeZeroOk(crows, code) { + const r = crows.find((x) => String(x.CODE || "").trim() === code); + return r && num(r.TAMT1) === 0; + } + + /** + * 3. 선택 호표(B/X)의 표준 레시피 구성행 조회 + */ + function getRecipeBreakdown(ctx, code) { + const crows = (ctx.dbfData && ctx.dbfData.costn_rows) || []; + const row = crows.find((r) => String(r.CODE || "").trim() === code); + if (!row) return []; + const nm = String(row.NAME || "").trim(); + const sz = String(row.SIZE || "").trim(); + const p = code[0].toUpperCase(); + const recipes = (ctx.catalogData && ctx.catalogData.recipes) || []; + const kind = p === "X" ? "중기" : p === "B" ? "일위대가" : "단가산출"; + const pool = recipes.filter((r) => r["종류"] === kind); + const rec = + pool.find((r) => r["명칭"].trim() === nm && r["규격"].trim() === sz) || + pool.find((r) => r["명칭"].trim() === nm); + return rec && rec["구성"] ? rec["구성"] : []; + } + + /** + * 4. 다중 시트 Excel SpreadsheetML (.xls) 통합 워크북 생성기 (갑지·원가계산서·설계내역서·일위대가·단가산출·중기·단가목록) + */ + function buildMultiSheetExcelXml(ctx) { + const esc = (v) => + String(v ?? "") + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """); + const kj = ctx.computed.kanjubComputed; + const boqRows = global.STMATE_VIEW_PRJ_BOQ.evaluateFullBoqRows(ctx); + const costnRows = (ctx.dbfData && ctx.dbfData.costn_rows) || []; + const memos = (ctx.dbfData && ctx.dbfData.costn_memos) || {}; + + const mkSheet = (name, headers, rows) => ` + + + ${headers.map((h) => `${esc(h)}`).join("")} + ${rows + .map( + (r) => + `${r + .map((c) => { + const isN = typeof c === "number" && Number.isFinite(c); + return `${esc(c)}`; + }) + .join("")}`, + ) + .join("\n")} +
+
`; + + const shWon = mkSheet( + "공사원가계산서", + ["비목", "산정기초(원)", "요율(%)", "금액(원)", "산출근거"], + kj.lines.map((l) => [l.label, l.base || 0, l.rate || 0, l.amount || 0, l.formula || ""]), + ); + const shBoq = mkSheet( + "설계내역서", + [ + "공종번호", + "코드", + "공종명", + "규격", + "단위", + "수량", + "재료비단가", + "노무비단가", + "경비단가", + "합계단가", + "합계금액", + ], + boqRows.map((r) => [ + r.ITNUM || "", + r.BDCODE1 || "", + r.NAME1 || "", + r.SIZE1 || "", + r.UNIT1 || "", + num(r.QTY1), + num(r.MAMT1), + num(r.LAMT1), + num(r.SAMT1), + num(r.TAMT1), + num(r.T_AMT1), + ]), + ); + const shIlwi = mkSheet( + "일위대가목록표", + ["코드", "품명", "규격", "단위", "재료비", "노무비", "경비", "합계단가"], + costnRows + .filter((r) => String(r.CODE || "").startsWith("B")) + .map((r) => [ + r.CODE, + r.NAME, + r.SIZE, + r.UNIT, + num(r.MAMT1), + num(r.LAMT1), + num(r.SAMT1), + num(r.TAMT1), + ]), + ); + const shSan = mkSheet( + "단가산출근거", + [ + "코드", + "품명", + "규격", + "단위", + "재료비", + "노무비", + "경비", + "합계단가", + "산출근거(COSTN.SMT)", + ], + costnRows + .filter((r) => String(r.CODE || "").startsWith("D") || memos[r.CODE]) + .map((r) => [ + r.CODE, + r.NAME, + r.SIZE, + r.UNIT, + num(r.MAMT1), + num(r.LAMT1), + num(r.SAMT1), + num(r.TAMT1), + memos[r.CODE] ? memos[r.CODE].text.replace(/\r?\n/g, " | ") : "", + ]), + ); + const shJoong = mkSheet( + "중기사용료", + [ + "코드", + "장비명", + "규격", + "단위", + "재료비(연료/잡품)", + "노무비(운전원)", + "경비(손료)", + "시간당사용료", + ], + costnRows + .filter((r) => String(r.CODE || "").startsWith("X")) + .map((r) => [ + r.CODE, + r.NAME, + r.SIZE, + r.UNIT, + num(r.MAMT1), + num(r.LAMT1), + num(r.SAMT1), + num(r.TAMT1), + ]), + ); + const shDan = mkSheet( + "단가목록표", + [ + "코드", + "구분", + "품명", + "규격", + "단위", + "재료비", + "노무비", + "경비", + "적용단가", + "조달단가", + "물가자료", + ], + costnRows + .filter((r) => /^[LMS]/.test(String(r.CODE || ""))) + .map((r) => [ + r.CODE, + r.CODE[0], + r.NAME, + r.SIZE, + r.UNIT, + num(r.MAMT1), + num(r.LAMT1), + num(r.SAMT1), + num(r.TAMT1), + num(r.AMT_11), + num(r.AMT_21), + ]), + ); + + return ` + + + ${shWon} + ${shBoq} + ${shIlwi} + ${shSan} + ${shJoong} + ${shDan} +`; + } + + /** + * 5. 조달청 공사원가 호환규정 V1.0.5 (Valid_Xml.vsl · T3_C3B) 전체 계층 XML 생성기 + */ + function buildFullPpsXml(ctx) { + const esc = (v) => + String(v ?? "") + .replace(/&/g, "&") + .replace(//g, ">"); + const kj = ctx.computed.kanjubComputed; + const bt = ctx.computed.boqComputed.totals; + const boqRows = global.STMATE_VIEW_PRJ_BOQ.evaluateFullBoqRows(ctx); + const costnRows = (ctx.dbfData && ctx.dbfData.costn_rows) || []; + + return ` + +
+ STMATE w 8.0 (경영정보) + ${esc(ctx.state.projectMeta.pcode)} + ${esc(ctx.state.projectMeta.pname)} + ${esc(ctx.state.projectMeta.pnum)} + ${bt.directM} + ${bt.directL} + ${bt.directS} + ${bt.directT} + ${kj.FINAL_SUPPLY} + ${kj.GOV_MAT} + ${kj.GRAND_TOTAL} +
+ + ${kj.lines + .map( + (ln) => + ` `, + ) + .join("\n")} + + + ${boqRows + .map( + (r) => + ` `, + ) + .join("\n")} + + + ${costnRows + .map( + (c) => + ` `, + ) + .join("\n")} + +
`; + } + + global.STMATE_ENGINE = { + evaluateSmtFormulaText, + cascadeRecalculateAll, + getRecipeBreakdown, + buildMultiSheetExcelXml, + buildFullPpsXml, + }; +})(window); diff --git a/tools/stmate-test/view_dan_ilwi.js b/tools/stmate-test/view_dan_ilwi.js index a765aa785..b7a39635e 100644 --- a/tools/stmate-test/view_dan_ilwi.js +++ b/tools/stmate-test/view_dan_ilwi.js @@ -23,132 +23,11 @@ /** * COSTN.SMT 텍스트를 실시간 평가하여 Q식, Cm식, 참조(&X00006L/M/S&) 단가 및 비목별 합계 산출 */ - function evaluateSmtFormulaText(smtText, ctx) { - const rawCostn = (ctx.dbfData && ctx.dbfData.costn_rows) || []; - const byCode = {}; - rawCostn.forEach((r) => { - const c = String(r.CODE || "").trim(); - if (c) byCode[c] = r; - }); - // state.resources / machines 동기화 반영 - (ctx.computed.resList || []).forEach((r) => { - if (!r.isSynthetic && byCode[r.code]) { - byCode[r.code].TAMT1 = r.appliedPrice; - if (r.kind === "노무비") byCode[r.code].LAMT1 = r.appliedPrice; - if (r.kind === "재료비") byCode[r.code].MAMT1 = r.appliedPrice; - if (r.kind === "경비") byCode[r.code].SAMT1 = r.appliedPrice; - } - }); - - const vars = {}; - const linesOut = []; - let sumL = 0, - sumM = 0, - sumS = 0; - - function evalMathWithVars(exprStr) { - let s = String(exprStr || "") - .replace(/'[^']*'/g, "") - .trim(); - if (!s) return 0; - // 변수 치환 (긴 변수명 우선) - Object.keys(vars) - .sort((a, b) => b.length - a.length) - .forEach((k) => { - const re = new RegExp("\\b" + k + "\\b", "g"); - s = s.replace(re, String(vars[k])); - }); - s = s.replace(/[^0-9.+\-*/()]/g, ""); - if (!s) return 0; - try { - const v = Function('"use strict"; return (' + s + ");")(); - return Number.isFinite(v) ? v : 0; - } catch (_e) { - return 0; - } + function evaluateSmtFormulaText(smtText, ctx, codeHint) { + if (global.STMATE_ENGINE && global.STMATE_ENGINE.evaluateSmtFormulaText) { + return global.STMATE_ENGINE.evaluateSmtFormulaText(smtText, ctx, codeHint); } - - const rawLines = String(smtText || "").split(/\r?\n/); - rawLines.forEach((rawLn, idx) => { - const ln = rawLn.trim(); - if (!ln) return; - - // 1) 변수 대입 (q=0.4 , K=0.7 , E=0.45-0.05= , f=1/1.175 , Cm=... , Q=...) - const assignRe = /\b([A-Za-z]\w*)\s*(?:'[^']*')?\s*=\s*([^,\r\n'=]+)/g; - let m; - const assignedHere = []; - while ((m = assignRe.exec(ln)) !== null) { - const vName = m[1].trim(); - const vExpr = m[2].trim(); - const val = evalMathWithVars(vExpr); - if (val > 0 || vExpr === "0") { - vars[vName] = Math.round(val * 100) / 100; - assignedHere.push(`${vName} = ${vars[vName]}`); - } - } - - // 2) 자원 참조 (&X00026L& / Q = , &M00080& * 0.00438'㎥' = ) 또는 주석형 단가 요약 - const refMatch = ln.match(/&([A-Z]\d{4,5})([LMS])?&(.*)/); - const commentCostMatch = !refMatch && ln.match(/(재료비|노무비|경\s*비)\s*[:=]\s*([\d,]+)/); - let refInfo = null; - if (refMatch) { - const refCode = refMatch[1]; - const compTag = refMatch[2] || refCode[0]; - const tailExpr = refMatch[3] || ""; - const targetRow = byCode[refCode] || {}; - let baseUnitPrice = num(targetRow.TAMT1); - if (compTag === "L") baseUnitPrice = num(targetRow.LAMT1) || baseUnitPrice; - else if (compTag === "M") baseUnitPrice = num(targetRow.MAMT1) || baseUnitPrice; - else if (compTag === "S") baseUnitPrice = num(targetRow.SAMT1) || baseUnitPrice; - - const cleanTail = tailExpr.split("=")[0].split(":=")[0]; - const fullExpr = String(baseUnitPrice) + " " + cleanTail; - const lineAmt = evalMathWithVars(fullExpr); - const roundedAmt = Math.floor(lineAmt * 10) / 10; - - if (compTag === "L" || refCode.startsWith("L")) sumL += roundedAmt; - else if (compTag === "S" || refCode.startsWith("S")) sumS += roundedAmt; - else sumM += roundedAmt; - - refInfo = { - refCode, - compTag, - refName: targetRow.NAME || refCode, - baseUnitPrice, - calcAmt: roundedAmt, - }; - } else if (commentCostMatch) { - const cKind = commentCostMatch[1].replace(/\s+/g, ""); - const cVal = num(commentCostMatch[2], 0); - const cTag = cKind === "노무비" ? "L" : cKind === "경비" ? "S" : "M"; - if (cTag === "L") sumL += cVal; - else if (cTag === "S") sumS += cVal; - else sumM += cVal; - refInfo = { - refCode: cKind, - compTag: cTag, - refName: "단가 직접지정", - baseUnitPrice: cVal, - calcAmt: cVal, - }; - } - - linesOut.push({ - lineNo: idx + 1, - raw: rawLn, - assigned: assignedHere.join(", "), - refInfo, - }); - }); - - return { - vars, - linesOut, - sumM: Math.floor(sumM), - sumL: Math.floor(sumL), - sumS: Math.floor(sumS), - sumT: Math.floor(sumM) + Math.floor(sumL) + Math.floor(sumS), - }; + return { vars: {}, linesOut: [], sumM: 0, sumL: 0, sumS: 0, sumT: 0 }; } /** @@ -380,15 +259,28 @@ const selRow = bdxRows.find((r) => String(r.CODE).trim() === selCode) || {}; const memoObj = memos[selCode] || null; + const recipeComps = + global.STMATE_ENGINE && global.STMATE_ENGINE.getRecipeBreakdown + ? global.STMATE_ENGINE.getRecipeBreakdown(ctx, selCode) + : []; const defaultText = memoObj ? memoObj.text - : `'▣ ${selRow.NAME || selCode} (${selRow.SIZE || ""})'\r\n'1. 재료비 : ${fmt(num(selRow.MAMT1))}원'\r\n'2. 노무비 : ${fmt(num(selRow.LAMT1))}원'\r\n'3. 경 비 : ${fmt(num(selRow.SAMT1))}원'\r\n(==)`; + : recipeComps.length + ? `'▣ ${selRow.NAME || selCode} (${selRow.SIZE || ""}) — 표준 호표 조립 구성 (${recipeComps.length}행)'\r\n` + + recipeComps + .map( + (c, ci) => + `'${ci + 1}. ${c["명칭"]} (${c["규격"] || "-"}) : 수량 ${c["수량"]} ${c["단위"] || ""}'`, + ) + .join("\r\n") + + `\r\n'노 무 비 : ${num(selRow.LAMT1)}'\r\n'재 료 비 : ${num(selRow.MAMT1)}'\r\n'경 비 : ${num(selRow.SAMT1)}'\r\n(==)` + : `'▣ ${selRow.NAME || selCode} (${selRow.SIZE || ""})'\r\n'1. 재료비 : ${fmt(num(selRow.MAMT1))}원'\r\n'2. 노무비 : ${fmt(num(selRow.LAMT1))}원'\r\n'3. 경 비 : ${fmt(num(selRow.SAMT1))}원'\r\n(==)`; const currentSmtText = ctx.uiState.editedSmtMap && ctx.uiState.editedSmtMap[selCode] !== undefined ? ctx.uiState.editedSmtMap[selCode] : defaultText; - const evalRes = evaluateSmtFormulaText(currentSmtText, ctx); + const evalRes = evaluateSmtFormulaText(currentSmtText, ctx, selCode); return `
diff --git a/tools/stmate-test/view_kanjub_prt.js b/tools/stmate-test/view_kanjub_prt.js index 96f1b0407..9b803e6a3 100644 --- a/tools/stmate-test/view_kanjub_prt.js +++ b/tools/stmate-test/view_kanjub_prt.js @@ -456,39 +456,49 @@
- + - - - + + + + + + + + - - - - + + + + +

${ - activeRep === "0608" - ? "공 사 원 가 계 산 서" - : activeRep === "0603" - ? "설 계 내 역 서" - : activeRep === "0607" - ? "관 급 자 재 내 역 서" - : activeRep === "0302" - ? "일 위 대 가 표 (목 록)" - : activeRep === "0402" - ? "단 가 산 출 근 거" - : activeRep === "0203" - ? "시 간 당 중 기 사 용 료" - : "자 재 · 노 무 · 경 비 단 가 목 록 표" + { + "0608": "공 사 원 가 계 산 서", + "0601": "총 괄 설 계 내 역 서", + "0603": "설 계 내 역 서", + "0607": "관 급 자 재 내 역 서", + "0643": "설 계 변 경 내 역 서 (증 감 대 비)", + "0623": "계 약 내 역 서 · 실 행 예 산 서", + "0633": "기 성 부 분 내 역 서 · 수 량 조 서", + "0302": "일 위 대 가 표 (목 록)", + "0402": "단 가 산 출 근 거", + "0203": "시 간 당 중 기 사 용 료", + "0101": "자 재 · 노 무 · 경 비 단 가 목 록 표", + "0501": "자 원 · 중 기 · 대 가 수 량 금 액 집 계 표", + "0201": "환 율 및 기 초 자 료 (〓 INITIAL 〓)", + SET_REP_ALL: "SET_REP.DBF 75종 양식 설정표", + }[activeRep] || "설 계 보 고 서" }

@@ -518,12 +528,18 @@ } ${ - activeRep === "0603" || activeRep === "0607" + ["0601", "0603", "0607", "0643", "0623", "0633"].includes(activeRep) ? ` ${boqRows - .filter((r) => (activeRep === "0607" ? r._isExcl : true)) + .filter((r) => + activeRep === "0607" + ? r._isExcl + : activeRep === "0601" + ? /^(T\d|E\d|C\d)$/.test(String(r.BDCODE1 || "").trim()) + : true, + ) .map( (r) => ` @@ -561,7 +577,7 @@ } ${ - activeRep === "0302" || activeRep === "0203" || activeRep === "0101" + ["0302", "0203", "0101", "0501", "0201"].includes(activeRep) ? `
공종명칭규격단위수량재료비단가노무비단가경비단가합계단가합계금액비고
@@ -570,6 +586,7 @@ const p = String(r.CODE || " ")[0].toUpperCase(); if (activeRep === "0302") return p === "B" || p === "D"; if (activeRep === "0203") return p === "X"; + if (activeRep === "0201") return p === "L" || p === "X"; return p === "L" || p === "M" || p === "S"; }) .map( diff --git a/tools/stmate-test/view_prj_boq.js b/tools/stmate-test/view_prj_boq.js index 3b7774942..d426a25f7 100644 --- a/tools/stmate-test/view_prj_boq.js +++ b/tools/stmate-test/view_prj_boq.js @@ -480,85 +480,26 @@ */ function buildBoqToolModalHtml(toolKind, ctx) { if (toolKind === "wITNum") { - return ` -
-

[wITNum] 내역서 공종번호 자동입력 — 대공종(T4)/중공종(T2)/말단 공종행에 번호체계를 일괄 부여합니다.

-
-
-
-
-
-
-
- `; + return `

[wITNum] 내역서 공종번호 자동입력 — 대공종(T4)/중공종(T2)/말단 공종행에 번호체계를 일괄 부여합니다.

`; } if (toolKind === "wBoqRate") { - return ` -
-

[wBoqRate] 내역 항목 할증율 일괄 적용 — 전체 또는 비목별(재·노·경) 할증 비율(%)을 적용합니다.

-
-
-
-
-
-
-
- `; + return `

[wBoqRate] 내역 항목 할증율 일괄 적용 — 전체 또는 비목별(재·노·경) 할증 비율(%)을 적용합니다.

`; } if (toolKind === "wM_Rate") { - return ` -
-

[wM_Rate] 선택 범위 수량·비목 단수 일괄 보정 — 절사/반올림 및 소수점 자리수(0~4위)를 일괄 보정합니다.

-
-
-
-
-
-
- `; + return `

[wM_Rate] 선택 범위 수량·비목 단수 일괄 보정 — 절사/반올림 및 소수점 자리수(0~4위)를 일괄 보정합니다.

`; } if (toolKind === "wExpnd") { const bdxList = (ctx.state.ilwiItems || []).slice(0, 30); - return ` -
-

[wExpnd / wM_Expnd] 일위대가·단가산출 내역서 풀어넣기 — 선택한 호표의 재료·노무·경비 구성행을 내역서에 직접 전개합니다.

-
-
-
-
-
-
-
- `; + return `

[wExpnd / wM_Expnd] 일위대가·단가산출 내역서 풀어넣기 — 선택한 호표의 재료·노무·경비 구성행을 내역서에 직접 전개합니다.

`; } - // wQtyList (수량산출서 연결 집계) const leafRows = ctx.computed.boqComputed.rows || []; - return ` -
-

[wQtyList] 수량산출서(QCODE.DBF) 코드별 수량 연결·집계 — 수량산출식 결과를 내역서 QTY1에 즉시 반영합니다.

-
-
코드품명규격단위재료비노무비경비합계단가
- - - ${leafRows - .slice(0, 25) - .map( - (r) => ` - - - - - - - - `, - ) - .join("")} - -
코드공종명현재 내역수량산출근거 수식 (예: 3.46*1000)반영
${r.code}${r.name}${fmt(r.qty, 2)}
-

-
- `; + return `

[wQtyList] 수량산출서(QCODE.DBF) 코드별 수량 연결·집계 — 수량산출식 결과를 내역서 QTY1에 즉시 반영합니다.

${leafRows + .slice(0, 25) + .map( + (r) => + ``, + ) + .join("")}
코드공종명현재 내역수량산출근거 수식 (예: 3.46*1000)반영
${r.code}${r.name}${fmt(r.qty, 2)}
`; } function syncCostnUnitPrice(ctx, code, mVal, lVal, sVal) { @@ -610,20 +551,47 @@ function buildSavePayload(ctx) { const kj = ctx.computed.kanjubComputed; + const revKj = ctx.computed.revComputed.revKj; const bt = ctx.computed.boqComputed.totals; + const revBt = ctx.computed.revComputed.revBoq.totals; const fullBoq = evaluateFullBoqRows(ctx); const rts = ctx.state.kanjubConfig.rates; + const [bm, bl, bs] = [ + (ctx.uiState.bidRateM || 87.745) / 100, + (ctx.uiState.bidRateL || 87.745) / 100, + (ctx.uiState.bidRateS || 87.745) / 100, + ]; + const revByRec = Object.fromEntries( + (ctx.state.boqItems || []).map((b) => [b._recno, b.changedQty ?? b.qty]), + ); return { source_path: ctx.currentSourcePath, target_folder_name: (ctx.state.projectMeta.pname || "stmate_edited").slice(0, 28), - costn_updates: (ctx.dbfData.costn_rows || []).map((r) => ({ - CODE: r.CODE, - MAMT1: r.MAMT1, - LAMT1: r.LAMT1, - SAMT1: r.SAMT1, - TAMT1: r.TAMT1, - AMT_61: r.TAMT1, - })), + costn_updates: (ctx.dbfData.costn_rows || []).map((r) => { + const m1 = num(r.MAMT1), + l1 = num(r.LAMT1), + s1 = num(r.SAMT1), + t1 = m1 + l1 + s1 || num(r.TAMT1); + const m3 = Math.floor(m1 * bm), + l3 = Math.floor(l1 * bl), + s3 = Math.floor(s1 * bs); + return { + CODE: r.CODE, + MAMT1: m1, + LAMT1: l1, + SAMT1: s1, + TAMT1: t1, + MAMT2: m1, + LAMT2: l1, + SAMT2: s1, + TAMT2: t1, + MAMT3: m3, + LAMT3: l3, + SAMT3: s3, + TAMT3: m3 + l3 + s3, + AMT_61: t1, + }; + }), boq_updates: fullBoq.map((r) => ({ _recno: r._recno, ITNUM: r.ITNUM || "", @@ -631,10 +599,22 @@ SIZE1: r.SIZE1 || "", UNIT1: r.UNIT1 || "", QTY1: r.QTY1, + QTY2: revByRec[r._recno] !== undefined ? revByRec[r._recno] : r.QTY1, MAMT1: r.MAMT1, LAMT1: r.LAMT1, SAMT1: r.SAMT1, TAMT1: r.TAMT1, + MAMT2: r.MAMT1, + LAMT2: r.LAMT1, + SAMT2: r.SAMT1, + TAMT2: r.TAMT1, + MAMT3: Math.floor(num(r.MAMT1) * bm), + LAMT3: Math.floor(num(r.LAMT1) * bl), + SAMT3: Math.floor(num(r.SAMT1) * bs), + TAMT3: + Math.floor(num(r.MAMT1) * bm) + + Math.floor(num(r.LAMT1) * bl) + + Math.floor(num(r.SAMT1) * bs), })), prjlst_updates: { PNAME: ctx.state.projectMeta.pname, @@ -644,6 +624,13 @@ SCOST1: bt.directS, TCOST1: bt.directT, COSTW1: kj.GRAND_TOTAL, + MCOST2: revBt.directM, + LCOST2: revBt.directL, + SCOST2: revBt.directS, + TCOST2: revBt.directT, + COSTW2: revKj.GRAND_TOTAL, + TCOST3: Math.floor(bt.directT * bm), + COSTW3: Math.floor(kj.GRAND_TOTAL * bm), }, smt_updates: { "1_R_KANNO": rts.KANNO, @@ -667,6 +654,7 @@ "1_M_VAT": kj.VAT, "1_M_TOT": kj.FINAL_SUPPLY, "1_M_KWNGP": kj.GOV_MAT, + "2_M_TOT": revKj.FINAL_SUPPLY, }, costn_memo_updates: ctx.uiState.editedSmtMap || {}, }; diff --git a/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동.STC b/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동.STC new file mode 100644 index 0000000000000000000000000000000000000000..1f356d3590b8dd719c4ce707eb5845077b9dc810 GIT binary patch literal 57540 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 E0Kc_vQ~&?~ literal 0 HcmV?d00001 diff --git a/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/BDQTY.DBF b/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/BDQTY.DBF new file mode 100644 index 0000000000000000000000000000000000000000..3828cb4d19709316af627e55cb819ff93ea730c7 GIT binary patch literal 351893 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 literal 0 HcmV?d00001 diff --git a/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/BOQ.DBF b/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/BOQ.DBF new file mode 100644 index 0000000000000000000000000000000000000000..8ef7e00e5c2c67bec12fe0c85b404f94273ffe06 GIT binary patch literal 2690 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

g5^qO8#C>)f*ocW!`ri?IL;&wdCZX*HBB26~9LG zI+naP(~z(It5>hSaqFFPYU}mH4L`DaM3#@l8*-+})_cZ8O>d*kYxvy{ElI>EH_Pfu z78u`57Dx5+w8uoAJSLdNHkl}38DNV=gGOnm(8Nwl=mqo=kF*XICaTRO>qD=K9+s)5 zb;c|k$_-#P&dpF#iR=EjWR~jZ8T3kXub}J=e=16xA`+(RZmp5fYhu48^r{{a?Gn)| z>&VJ6>*}@%aHac%kmKB}E4sQExQ(`#XV8n;y(SKWlx!^;C~*8_&uz2`y(ad?DMPP= zZ@=>H-o3qhum1JK_GkO=zxvnLe*FjeR#pD~)I2WT#oiob<=8YLm)+3Hah!`vOafP% z4*g85kEiWk!Y5G~*e|=IbxHaUfl@_}lPZDE<^GIPoT;-UVU!xkm(8NW@q~+WFQ?xS z+K%CYDobZZiJ0W~C_EIf$|ox&sgj7cROTAd%V?goap6^Sy|b8R$ZAhhuIo8&SJYp# zNVI|U{83bozt_5ykm{YH0XR(b-9|el>jtNZMmQwpV|ar_U$1Ct@6fq}uibcO=V#Y{ zG|_IqY>AhIUIRW|TG|1g`0RqsYe~X59r0l}N^zzxAPJ+?Kqg7d#fv$AIfdKM0s;?I zS!a9h6=`XeWIUE#Ur-qa)8O6cc|B;>wLQl&YdT0Xi$pfw%u%Xm?zKK)xTL!MNf@OD zhF)#Djg}0Q=-uF>f0U`m*DC+SV|gxmW!cTQ4&UDXV3jgYsVi<*r1hy}(+b(*a8+~Q zO(}6up{xqyc`tB-e2vq;jDcR%vKB>C7x{&S({Yw0jB7U;X^0x7I8zspgi&gs=vC(( nvD!z+kBHwU>dv|`9J&rDugvS literal 0 HcmV?d00001 diff --git a/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/COSTA.DBF b/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/COSTA.DBF new file mode 100644 index 0000000000000000000000000000000000000000..24addf7bedce52c33935bd4dc7d62fc402b8ad64 GIT binary patch literal 1730 zcmai!%}&EG5QKw@g2aysSKb2XkxOVIl#-v)xT@gd7vbf2GcpqgB`bI0LpSypd$!qG zr$3jsNk4wma)me@7yV@0=0#ZBBBo(7h9;|L{CNZ+cIEeszZ!mQN*9)R{#rg!O8E0C@OMXZg#*{*B;AX3ZBW{NkHW$A|C6X_Ox_ zS9p?y`CXa($!i{Qo(~dHzJK?-kN`8KS;ma|i28@`LmsRDl-v4O3*Wz9;N1du3mp2Y zzR*`3`ieteap)`mKwoj_D-M0dp|AW2eZ`@#IP?|Y<@5f1n0O11?rZNui!j*!D01iX zz6bhO$!-7BU;cojqWw#M2~K|rPX7o_{|HY12u^VtXqW4?gR#nUL#rfUiA6MUKiU0rr literal 0 HcmV?d00001 diff --git a/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/COSTN.DBF b/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/COSTN.DBF new file mode 100644 index 0000000000000000000000000000000000000000..80196c16db11aec368f6bcb286b545fab400a224 GIT binary patch literal 307314 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 literal 0 HcmV?d00001 diff --git a/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/COSTN.SMT b/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/COSTN.SMT new file mode 100644 index 0000000000000000000000000000000000000000..dce8e41fd3d0e6fa1ed6821dbdd1d084bb1d6834 GIT binary patch literal 42100 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 literal 0 HcmV?d00001 diff --git a/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/GRASS.DBF b/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/GRASS.DBF new file mode 100644 index 0000000000000000000000000000000000000000..0ee27a74a07d428753dc1e51b90a26df113ffec3 GIT binary patch literal 66 jcmZRsVc}r_0!IdR5QPDpT%7$~T*1Q5Ad(GD1+NqUZlMC{ literal 0 HcmV?d00001 diff --git a/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/KONGJONG.DBF b/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/KONGJONG.DBF new file mode 100644 index 0000000000000000000000000000000000000000..4a0e49c32382985ade84ddf47b3f4174a9cf8057 GIT binary patch literal 199 zcmZS1VCQ3GU|?uua0QZ>z}epgCgBW{&7=je+fFNY={>=}huo>#$80Rm#7G&z(M E0FDL@;Q#;t literal 0 HcmV?d00001 diff --git a/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/PRJLST.DBF b/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/PRJLST.DBF new file mode 100644 index 0000000000000000000000000000000000000000..fdbd82fa70e517ba27297cb9720f4944ab94b0d3 GIT binary patch literal 2075 zcmds%%}(1u5XTJ_2wIf~;DEL_da1nY#YqkbSx&45{IRu72q#~-Azp!Z;Q^3>AO{Kv z5QlJvYfng(Djoo(x7xEwBW;#hab+!ewfmbH|7T~%zYjmn%~+Q8W&Uq9O$`xmN25)@ znpYGH5qnWf?g8IZxt}ygJg(3Oh5H6B{LsrXa035X#Xs_sETs=tDT@LpbO|IOsz-=yMGE5Dxkf4*C!d`VbEKxIrJnK_9|FAHqQ&!hdwT@u)%I zeyU9r7`T}5u*y>P?{?`p{wtgrxMScPIcz)cS~UJM*MkZT=!{cM6eK7FzB#n}uir z*Pd_ENeegZyy_pc5CnEW>;-FM(XtlG TdXF=N`3-5>BrgMT%9j5D_T$7s literal 0 HcmV?d00001 diff --git a/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/PRJLST.SMT b/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/PRJLST.SMT new file mode 100644 index 0000000000000000000000000000000000000000..111d7b99790e115367eb55640c6623a33b35e504 GIT binary patch literal 3152 zcmeHJ%Wm8{49&Vge`T&^TYfAITzNcjG`8%yexwPCf~zizZu9wUZ<~$4`9v`|~GN;On5K``&*0{OPV**xnwuCi(p7szy-PZKUTH zy}~xT=dS{Sy?`rp^Lm?~$%+teO>S`S9tqRKX5-2Dc(-zGIJ#g*}Kkw1Fy<#2fV#rZ;uGun?JT6`*M9&s}B%M z2}W%m>aoR$WR;dhQF8e;_5n6hmeo->A%85L?y&~mgRO^xdn3|HCL&3FH@OXOhHa#d z?%YlV$C&2vt}Laf`6n_CJvU&@sQx0)q|CE~qvB=gez!6Bqc^zEof@06#OV0#{n1Us zm&v^=Lo2T;zUc{Rh-uXozE+7#CGa<;nrOJrE0&xaOoKs1aK~vFqi6HVjesVv9MA#_ zbex@iX42Dh^w^p1gd$+x*(<$b-hM4(1+)odZSIc%sAdkzf3 zwGT%Wy2jm#C8h><0Suf-42``$eO62l{hXqXrA))%3JZhAY2p-JQ$_6xGwh zqh%UHBia)8<&>K}tt^ki{S;Kt~xn>qIT8q7=eLW?)opljFx%Rn>`YFGJecq=-_K zc*|(RO&w20T(iVZWg&51+DT&I1&65+Ql|Jed&AUmY?QcA@nkX7T|Lh*8aMv~dzqQc literal 0 HcmV?d00001 diff --git a/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/QCODE.DBF b/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/QCODE.DBF new file mode 100644 index 0000000000000000000000000000000000000000..d192c65069649316d7511d8ce14c553b72694ef8 GIT binary patch literal 514 zcmaD_!@|P=1dL4gK@4GG8_5s)_~Aa6oI-jsm683B270`e9F@ayix#sLK?&X literal 0 HcmV?d00001 diff --git a/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/QCODE.SMT b/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/QCODE.SMT new file mode 100644 index 0000000000000000000000000000000000000000..a395880237f3026763c53c8c669e88f77fef0c56 GIT binary patch literal 512 bcmd;JU|?_n;$Y7T-_+cEAZrwiq!0iAx6A_T literal 0 HcmV?d00001 diff --git a/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/RATE.DBF b/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/RATE.DBF new file mode 100644 index 0000000000000000000000000000000000000000..84ee348a346b9319307eaf4dfcbef9d417b8ac01 GIT binary patch literal 5315 zcmd6qJ(AQg5QT?=gsSBN8#yIWNwO^4Apt1?#RUjC0=MURz0>_^*umO@VrGNcH?5Xl z|EXK^_Q(5&kEhe=`&NGT*+NTC|ekWY~J=$A0tITIWM z-iTlJGKXTDYY;q$3iT)GS2zHCL*jxkGMDs{ctjZ6TzXWxJiZn20PBP;-vhi9c6qCx z&$++QH}7?(6>oFCzE}|nTU9q?)x+CtzOGM0iS23)I%tK}^uXnFx6Oes0`hQ3(o2hN3X^$EVhxPlP;JrF zQUdpLVwm^HJ;|%>rE$X;k}YT=?FUV%v>s=R3W-HvS26ndlM#M*WANf?h*QY0blojY zwaoB1hShY~-4dD)50%`Up`3WY>}>EJwEeT3BcZP&x*PZQ=#x01_Y(7*G*-^8QbAchgk8=?U;IU(u16zGzZn=LBNnl>G?7_np=XMOcQhKoeACP7 z=cv%!IO3~bW_Zu$K6xZA`n*rJwlMFFxaYY_k6FpZ(Dl$BklWAaKHO@Kud8?afP54R;38dp?90$h*&v}); zW-3qU#}`%YeVbuiy;10z`7OZkXV33qzi1jho$zwdp)Su}P}e3~FR^>s9%>Uw1dcPB z4BlmOz;y1LSk2w~v#_;HVQ-n7yX|cD!9e{km)oBtHW)69c-c4(1{&Q(T#+089OZA~ V_C4j1;9#KseG_+C_fM4`e*vF@4$%Mr literal 0 HcmV?d00001 diff --git a/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/RATE_M.DBF b/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/RATE_M.DBF new file mode 100644 index 0000000000000000000000000000000000000000..b48ae2b4c46d5dd7dcfa881ecd2077850bd0a789 GIT binary patch literal 3379 zcmeHJI}XAy3@xG~h#97wplWE+mXU##0dWCVZoutvs1iFOCWXoq%}^{qJI}wGF7M@L zTNK4@@qp+1xg4*jdQhL;&#H`V9Ii9?K7%(I++=W@!P^YpW$-?OA3oq~^*Y*CHJm{< zl?}3u{T*_rh^)s=bYVk^l6VSd=`TvNc z1!Ah!_ZZ&k#>-q)UV2(oTDUq_tGQjb`f z;G4`65(q)C#4JE3P(q$kF7Sm`hJUtX<=DiglnZ=+o)6dK&=2Sh_N>Lh;i3lLWR_#* zLvfdi>%|GU!JLWx>mgo=h=AKxWZD(^DplXw(|*(a90fs*IC=O&9-h>O>Z#1yP(V)J FJppsX>_`9r literal 0 HcmV?d00001 diff --git a/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/RATE_R.DBF b/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/RATE_R.DBF new file mode 100644 index 0000000000000000000000000000000000000000..71779feef4e7e932627f8b7035dff44388268bd6 GIT binary patch literal 22204 zcmeHO%aWuv5FCdm!Wa7oeBuifNP?z0`monMIDGey_~MW8e>xe0s#Ny~@z5;IV-C9+ zq5vtgs#KEbpZ|IP#l5|~{rmpkPx$ZY@6SK}`u2BeyY}zhKfk_r|LR|Vy?esgb)UFi zC9c$k-9CUO0qxZaLmw`JmbfwC;0OT{(PLj--`aPG$sB{gRM7q@p$hm zxVo*lw>XEFUFj7iS$u9tnr$!zPG)qyO*!-cA4IH)9Khc$(h#A*fCkP zPP&;UN6MYe`Rp6MIvve@zBeVxwaF0-k(O@@&Fxz*`^`k+$e4m-1GeUliekD*KVwcdrTry3F{Pt18*i#PbJ8xyyPHnuS|`~R>!h1;n?&Jm zM2bby%yukhmv0Nrd{;JZvps0;05~$HVK{Myxum^B`tgOsT<2)7>hASLnk(un*xO1= z(g4#jvt>;7MNJ22Van18wx-FJ?We4b*oMfmHGMCDbrR0Q;T*NET55;=-DXIS^xn;; z1_&d&%K>I#7?XX$B(eaZFe(_^=NdfDhx#3dx@sRp$})%L>gSs0Kp6QjBfw6h1d$|1 z&TIpbbYaK>)cQ;_TU(;#6*A9{DUCr%B!kjt+jE&2|6CsjfPBk|b4+2O;KBPer z7&eM?k!VegT~DODs=~fpo(eEm-*P=?vpkz?0M7V+Td2li-X+qul^aJei-9?*k0f-D z+kp|b+xGdPKSO4E>}Rrl_6@mSoa;GmhwGlXW8aNPTvhTQQ8>gRDe0m7oL9!X5h+F@ zzDVuYNzdu-5~<7fG2(t?JI<3(F&ty=iSdSY4;-!^WPnjMNjqb*M@jwpLN(ld(9)dk zV>YpNN_SWiNT0_XrKt}h9)uC10}Kx(krb0XM3VMEuo%&7AM={4{W&W@7>yXlP8X-} zT!{v@hcNo}3=0r$5$OV!?YX3$f;ocECL~A~q66%xoiW)LjYc5^lU)g5O-GE`{%l0A z8Shw5AJW}rv+>-9pC`(^5@7nV6@O63Hi#HWgTOMkVed}c8MFPA6vsB?i8un+NX23n zFMH18uxSo+RN<9S2q5G_7)^tW$p*rRO&}Nx!gE~em^kk*GTzEWP zLl~JS0*qs6iX_Ek4`HOB02UiyEyqKw_Pm2I1)o_+6bmxR2bjxl#$=CTL8GUkbQh*U ziNe7C%%sm9`|b;exdYy#eS!3~Np&P&`5+xrVFGLso_&tS*FVxXU~We~6`SLi;1CJF z!Wy5rV%`_4zGC*&-hC#9No?7B>3l251hIB{Z(zTdc63@6t-v~elvD^%5dj-55NIa? z?OGIszf0wcPIo0rn$P%|VY@zaFNA(YKS6F;HVr(w+ozNw0x3uE_%Zp-<6Z}G#eVvi zq#qI7`GwreeHef5(kR5cY-N{4aCdL%Iq4proP73p|nUlGr5$Ed@i*H~0=u*PQ7Fy`MY{)6Ig6o0GuJH;Oq ze;oHyt@xGrkrF>r;zvsSNQoaQ@gpUEq{NSu`1y4FZmZK(yPB{6V^;-m=GiV8&V4?Y z43`Y^ij@gy>@S zS^(b(NJ?eN@|;}Fs$vvy2r>rKUY7w#Nk_0z%5_ps++IYy1th*p?x1cSJdADgq~#s) zoEgn<N!z$nda7_k)BeUgrhBE_98fh_03wLCY;YQ7H1FOd70eiPsw}+?; zOn@UqE`Z&_`V2NNOTw18w5(}c05bqNI>B`~Ej(l{tqBspWdckBn8Ax)4f4DKn^+|D z>md$eP1^{#*U1c6v~&Pg45F(E1;Cmh@mm(an|#+a=+tfrHVjn0lts9S9BYMv)6 z2@eDiU=AZl+(;m?SwP~uQ?&G4O6vzp3uEKK0N4X!!$DhYCeGEA76Xvq91(2X8$;O- zh|K~L-{lhzwWKpsTFnH&GyQqMlLREHR+gd)loqeavnVaD6kg89i7H9PNyn5cKOFuUO gUV3m#^j`q~mHn2;#u9y&43`Y^Mr4W7TEEZxPpc)0RR910 literal 0 HcmV?d00001 diff --git a/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/SET_REP.DBF b/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/SET_REP.DBF new file mode 100644 index 0000000000000000000000000000000000000000..f24d94b65807f171db31cc21a7ffcb83307c7eb2 GIT binary patch literal 29805 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 literal 0 HcmV?d00001 diff --git a/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/START8X.INI b/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/START8X.INI new file mode 100644 index 000000000..52ff2cfad --- /dev/null +++ b/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/START8X.INI @@ -0,0 +1,154 @@ +[START] +ARENM=1 +BMKNM=TLMS +ACDNM=1 +KCDNM=1 +ZCDNM=2 +CHGNM=1 +CHNNM=1 +BCDNM=65 +DCDNM=121 +ICDNM=0 +LCDNM=20 +MCDNM=116 +PCDNM=13 +QCDNM=0 +SCDNM=35 +WCDNM=0 +XCDNM=30 +SUBNM=³²ºÎÁö¹æ»긲û +LMGNM=20 +MKRNM=4 +TMGNM=10 +JEMNM=123456 +JMOK1=Á¶´ް¡°Ý +JMOK2=¹°°¡Àڷá +JMOK3=¹°°¡Á¤º¸ +JMOK4=°ŷ¡°¡°Ý +JMOK5=°ßÀû´ܰ¡ +JMOK6=Àû¿ë ´ܰ¡ +JMK10=Á¶´Þ +JMK20=¹°ÀÚ +JMK30=¹°Á¤ +JMK40=°ŷ¡ +JMK50=°ßÀû +JUKNM=6 +YCDNM=0 +JCDNM=0 +ECDNM=0 +BPNNM=1 +OPTNM=SML +CHBNM=1 +S_JDA=1 +USRPG=1 +CUTNM=0 + +[PRINT] +ORDNM= +FONT=±¼¸²ü +F_COL0=clBlack +F_COL1=clBlack +F_COL2=clRed +SH_TYP0=0 +SAN_TYP=1 +BMK_STR1=Àç ·á ºñ +BMK_STR2=³ë ¹« ºñ +BMK_STR3=°æ ºñ +BMK_STR4=ÇÕ °è +EQ_TYP=1 +SH_TYP1=1 +SH_TYP2=1 +SH_TYP3=2 +FLT_JAB=2 +CAP_CODE=Äڵå¹øȣ +CAP_NO=ȣǥ +CAP_IBRD=ºзù¹øȣ +CAP_EQCOD=½ü³Äڵå +CAP_ITNUM=°ø Á¾ +CAP_NAME=¸í Ī +CAP_SIZE=±Ô °Ý +CAP_QTY=¼ö ·® +CAP_SUNIT=´ÜÀ§ +CAP_AMT=´Ü °¡ +CAP_PAGE=ÆäÀÌÁö +CAP_AMOUNT=±Ý ¾× +CAP_BIGO=ºñ °í +FMT_LEFT=- +FMT_RIGHT=- +RPOS_PAGE=0 +RPOS_COP=3 +RPOS_QTY=2 +RPOS_SIZE=0 +RPOS_BIGO=1 +LNP_CNT=20 +P_BIGO=1 +TITL_1LN=0 +P_SHAMT=0 +DISP_N1=¼Ұè +DISP_N2=°è +DISP_N3=Çհè +DISP_N4=ÃѰè +DISP_N5=ÃÑÇհè +DISP_N6=ÃѴë°è +DISP_EX=Á¦¿ܱݾ× +DISP_TOT=ÃÑ °è +DISP_N7=±¤¿ª°è +DISP_N8=±¤¿ªÃѰè +DISP_N9=±¤¿ª´ë°è +CH_PRN_COD=0 +COD_FMT_0=0 +COD_FMT_1=³빫 +COD_FMT_2=ÀÚÀç +COD_FMT_3=°æºñ +COD_FMT_4=´밡 +COD_FMT_5=Á߱â +COD_FMT_6=»ê±Ù +COD_FMT_7=±âŸ +COD_FMT_8=½ÇÀû +EDTNM= +CH_PRN_ORD=0 +CH_MIN_COD=5 +UPDNCAP=»ó´Ü:´çÃÊ , ÇϴÜ:º¯°æ +KAN_TYP=0 + +[EQUIPMENT] +RXXNM=1/8*16/12*25/20 +RXTNM= +EXLNM1=1289 +EXHNM1=1289 +EXLNM2=844.7 +EXHNM2=844.7 +EXLNM3=1187.8 +EXHNM3=1187.8 +EXLNM4=1187.8 +EXHNM4=1187.8 +CONLD=L00008L00009L00010 +CONTD= +CON1D= +CON2D= +CON3D= +CON4D= +EXRNM=0 +RX1NM= +RX2NM= +RX3NM= +RX4NM= +EXEUR1=1000 +EXYEN1=1000 +EXEUR2=1000 +EXYEN2=1000 + +[PROJECT] +PCODE=XXXX +PMODE=1 +PNAME=2024³⵵ »êºÒÁøȭÀӵµ ½ǽü³°è(2°³¼Ò)-24³â 3¿ù ºÀÈ +P_DIR= +RGrpTo=0 +CBoxUpIns=0 +PRG_V=24.04 + +[NAG_HAL] +ST_MHAL=0 +EQ_LHAL=0 +EQ_MHAL=0 +EQ_SHAL=0 diff --git a/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/STINI.MEM b/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/STINI.MEM new file mode 100644 index 000000000..52ff2cfad --- /dev/null +++ b/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/STINI.MEM @@ -0,0 +1,154 @@ +[START] +ARENM=1 +BMKNM=TLMS +ACDNM=1 +KCDNM=1 +ZCDNM=2 +CHGNM=1 +CHNNM=1 +BCDNM=65 +DCDNM=121 +ICDNM=0 +LCDNM=20 +MCDNM=116 +PCDNM=13 +QCDNM=0 +SCDNM=35 +WCDNM=0 +XCDNM=30 +SUBNM=³²ºÎÁö¹æ»긲û +LMGNM=20 +MKRNM=4 +TMGNM=10 +JEMNM=123456 +JMOK1=Á¶´ް¡°Ý +JMOK2=¹°°¡Àڷá +JMOK3=¹°°¡Á¤º¸ +JMOK4=°ŷ¡°¡°Ý +JMOK5=°ßÀû´ܰ¡ +JMOK6=Àû¿ë ´ܰ¡ +JMK10=Á¶´Þ +JMK20=¹°ÀÚ +JMK30=¹°Á¤ +JMK40=°ŷ¡ +JMK50=°ßÀû +JUKNM=6 +YCDNM=0 +JCDNM=0 +ECDNM=0 +BPNNM=1 +OPTNM=SML +CHBNM=1 +S_JDA=1 +USRPG=1 +CUTNM=0 + +[PRINT] +ORDNM= +FONT=±¼¸²ü +F_COL0=clBlack +F_COL1=clBlack +F_COL2=clRed +SH_TYP0=0 +SAN_TYP=1 +BMK_STR1=Àç ·á ºñ +BMK_STR2=³ë ¹« ºñ +BMK_STR3=°æ ºñ +BMK_STR4=ÇÕ °è +EQ_TYP=1 +SH_TYP1=1 +SH_TYP2=1 +SH_TYP3=2 +FLT_JAB=2 +CAP_CODE=Äڵå¹øȣ +CAP_NO=ȣǥ +CAP_IBRD=ºзù¹øȣ +CAP_EQCOD=½ü³Äڵå +CAP_ITNUM=°ø Á¾ +CAP_NAME=¸í Ī +CAP_SIZE=±Ô °Ý +CAP_QTY=¼ö ·® +CAP_SUNIT=´ÜÀ§ +CAP_AMT=´Ü °¡ +CAP_PAGE=ÆäÀÌÁö +CAP_AMOUNT=±Ý ¾× +CAP_BIGO=ºñ °í +FMT_LEFT=- +FMT_RIGHT=- +RPOS_PAGE=0 +RPOS_COP=3 +RPOS_QTY=2 +RPOS_SIZE=0 +RPOS_BIGO=1 +LNP_CNT=20 +P_BIGO=1 +TITL_1LN=0 +P_SHAMT=0 +DISP_N1=¼Ұè +DISP_N2=°è +DISP_N3=Çհè +DISP_N4=ÃѰè +DISP_N5=ÃÑÇհè +DISP_N6=ÃѴë°è +DISP_EX=Á¦¿ܱݾ× +DISP_TOT=ÃÑ °è +DISP_N7=±¤¿ª°è +DISP_N8=±¤¿ªÃѰè +DISP_N9=±¤¿ª´ë°è +CH_PRN_COD=0 +COD_FMT_0=0 +COD_FMT_1=³빫 +COD_FMT_2=ÀÚÀç +COD_FMT_3=°æºñ +COD_FMT_4=´밡 +COD_FMT_5=Á߱â +COD_FMT_6=»ê±Ù +COD_FMT_7=±âŸ +COD_FMT_8=½ÇÀû +EDTNM= +CH_PRN_ORD=0 +CH_MIN_COD=5 +UPDNCAP=»ó´Ü:´çÃÊ , ÇϴÜ:º¯°æ +KAN_TYP=0 + +[EQUIPMENT] +RXXNM=1/8*16/12*25/20 +RXTNM= +EXLNM1=1289 +EXHNM1=1289 +EXLNM2=844.7 +EXHNM2=844.7 +EXLNM3=1187.8 +EXHNM3=1187.8 +EXLNM4=1187.8 +EXHNM4=1187.8 +CONLD=L00008L00009L00010 +CONTD= +CON1D= +CON2D= +CON3D= +CON4D= +EXRNM=0 +RX1NM= +RX2NM= +RX3NM= +RX4NM= +EXEUR1=1000 +EXYEN1=1000 +EXEUR2=1000 +EXYEN2=1000 + +[PROJECT] +PCODE=XXXX +PMODE=1 +PNAME=2024³⵵ »êºÒÁøȭÀӵµ ½ǽü³°è(2°³¼Ò)-24³â 3¿ù ºÀÈ +P_DIR= +RGrpTo=0 +CBoxUpIns=0 +PRG_V=24.04 + +[NAG_HAL] +ST_MHAL=0 +EQ_LHAL=0 +EQ_MHAL=0 +EQ_SHAL=0 diff --git a/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/SYSINFO.DBF b/tools/stmate-test/work_dbf/2024년_산불진화임도_실시설계_기번41_현동/SYSINFO.DBF new file mode 100644 index 0000000000000000000000000000000000000000..a06675cc3700abfc21f78d07f096f0d60043825f GIT binary patch literal 994 zcmZRpVd3FmU|=}NkOCx80V9wb;20DF6?F#DB2W&D@(cBaGeHayP8b(L`}n)V1bjdY zkeSH9*&_(X1)FaK<3VW`#}HQ-6GVgDiVS#Nd8=bL=g*zEz1?$P-$pa`jrF(g*?$i^ zc7EMHvuSzTFP3@e`&~SKP|8Y8_wjztBN>+N{dW0TANHF?e!N$3;C$zCvGPT7)21EY z-=8<5ZTkC2#s;hF&;Iw7cj>k7ufKnPTi^EQ&t1