From db02fa99948ee9cc76edb5a7f6a9d7c04e29f2d4 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sat, 7 Nov 2026 10:56:50 +0900 Subject: [PATCH] feat(est): edit review summary in workflow --- resources/tester/test_est_review_workflow.py | 14 ++++++++++++++ tools/est-test/native-review.js | 11 ++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/resources/tester/test_est_review_workflow.py b/resources/tester/test_est_review_workflow.py index 47329f9e2..8cb1539fc 100644 --- a/resources/tester/test_est_review_workflow.py +++ b/resources/tester/test_est_review_workflow.py @@ -1,6 +1,20 @@ from test_est_rea_parity import run +def test_review_summary_updates_the_print_document_and_active_settings(): + result = run( + "math", + """(()=>{ + const handlers={},p=EstNative.empty();p.printSettings={form:'173',notes:'old'}; + globalThis.document={addEventListener:(name,fn)=>handlers[name]=fn}; + globalThis.EstApp={state:{project:p},change:fn=>fn(),render:()=>{}}; + EstReview.install();handlers.change({target:{dataset:{reviewSummary:''},value:'review summary'}}); + return {document:p.documents['173'],notes:p.printSettings.notes}; + })()""", + ) + assert result == {"document": "review summary", "notes": "review summary"} + + def test_review_rejects_unallocated_fixed_amounts_and_ambiguous_targets(): result = run( "math", diff --git a/tools/est-test/native-review.js b/tools/est-test/native-review.js index 59bda4231..db1cfba7b 100644 --- a/tools/est-test/native-review.js +++ b/tools/est-test/native-review.js @@ -115,7 +115,7 @@ const EstReview = (() => { ({ row }) => editable(row) && (row.Name || row.Code), ); byId("work-content").innerHTML = - `
계약심사기존 ${number(output.before)} · 심사 ${number(output.after)} · 차액 ${number(output.after - output.before)}

심사 수량과 비목별 단가를 직접 입력합니다. 고정금액 행은 비목별 금액을 입력합니다. 원래 내역은 유지되며 심사 사본에서 변경됩니다.

${esc(output.errors.join(" / "))}

${["코드", "품명", "기존 수량", "심사 수량", "노무", "재료", "경비", "실적", "기존 금액", "심사 금액", "차액", "심사 사유", "작업"].map((value) => ``).join("")}${rows + `
계약심사기존 ${number(output.before)} · 심사 ${number(output.after)} · 차액 ${number(output.after - output.before)}

심사 수량과 비목별 단가를 직접 입력합니다. 고정금액 행은 비목별 금액을 입력합니다. 원래 내역은 유지되며 심사 사본에서 변경됩니다.

${esc(output.errors.join(" / "))}

${value}
${["코드", "품명", "기존 수량", "심사 수량", "노무", "재료", "경비", "실적", "기존 금액", "심사 금액", "차액", "심사 사유", "작업"].map((value) => ``).join("")}${rows .map(({ row, index }) => { const key = rowKey(row, index), input = edits[key] || {}, @@ -136,6 +136,15 @@ const EstReview = (() => { function install() { document.addEventListener("change", (event) => { const node = event.target; + if (node.dataset.reviewSummary !== undefined) { + EstApp.change(() => { + const project = EstApp.state.project; + (project.documents ||= {})["173"] = node.value; + if (String(project.printSettings?.form) === "173") + project.printSettings.notes = node.value; + }, false); + return; + } if (!node.dataset.review) return; const field = node.dataset.review, value = field === "Reason" ? node.value : Number(node.value),
${value}