From 84f9eb42483ef87768abbe0a0600bad254bb02cc Mon Sep 17 00:00:00 2001 From: umsangdon Date: Thu, 12 Nov 2026 13:03:05 +0900 Subject: [PATCH] =?UTF-8?q?feat(est-test):=20=EC=97=B0=EC=B0=A8=20?= =?UTF-8?q?=EC=B0=A8=EC=88=98=20=EC=A4=91=EA=B0=84=20=EC=82=BD=EC=9E=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- tools/est-test/PLAN.md | 2 ++ tools/est-test/native-business-actions.js | 9 +++++++++ tools/est-test/native-extra.js | 1 + 3 files changed, 12 insertions(+) diff --git a/tools/est-test/PLAN.md b/tools/est-test/PLAN.md index 71ae02077..925580dc4 100644 --- a/tools/est-test/PLAN.md +++ b/tools/est-test/PLAN.md @@ -487,6 +487,8 @@ ative-standard.js에 표준시장단가 원천(SilJukDat)과 내역 행(EstMainD - 남음: 구성비·요율 전환(CalcBase), 약어 표시(SName), 제비율 기준 문서 보기(원본 한글 파일). - [x] 수량산출서 검색·전체보기(원본 TFRMMULLANG btnSerch·btnAllDisplay — 빈칸·|·괄호 무시 포함 검색) — 고르기 줄을 `native-quantity-sheets.js` 로 옮겨 700줄 제한 유지. - 검증완료: `test_est_quantity_sheets.py` 검색 시험 포함 수량 시험 22개 통과. ORCA 브라우저에서 「집수」 검색 → 항목에 집수정이 있는 「배수」만·선택 이동, 전체보기 → 3개 복귀, 샘플 복구. + - [x] 연차 차수 중간 삽입(원본 TFRMESTMULTIEDIT popInsert) — 차수 줄의 「위에 삽입」: 고른 차수 앞에 새 차수([기준]) 넣기. + - 검증완료: 바인딩 시험 통과. ORCA 브라우저에서 1차·2차 → 2번째 위 삽입 → 1차·3차·2차, 차수 비워 복구. - [x] 블럭 파일로 저장하기·블럭 파일에서 붙여넣기(원본 mnuBlockSaveToFile·mnuLoadFromFile) — 복사·잘라낸 행 묶음을 `.estblock.json`(종류 est-web-block-1, 표 이름·행)으로 내려받고, 파일을 읽어 같은 종류 화면에 붙여넣음(다른 공사로 옮기기). - 검증완료: 바인딩 시험 통과. ORCA 브라우저에서 자재 2행 복사 → 파일 저장(2,559 바이트) → 같은 내용 읽어 붙여넣기 30→32행, 잘못된 파일 거부, 샘플 복구. - [x] 인쇄 용지 A0·A1·B4 와 인쇄 기본양식(원본 TFRMSCHEDULE mnuA0~B4 · TFRMESTPREVIEW2 mnuFormatSave·mnuFromatOpen) — 용지 A4·A3·B4·A1·A0(A0·A1 은 mm 크기, 가로면 바꿔 씀), 인쇄 창 「기본양식저장」(용지·여백·글자·줄 수 등, 서식 고르기·본문 글 제외 — 양식 보관함 종류 print) · 「기본양식열기」. diff --git a/tools/est-test/native-business-actions.js b/tools/est-test/native-business-actions.js index 830cd5aa2..aad34f9e4 100644 --- a/tools/est-test/native-business-actions.js +++ b/tools/est-test/native-business-actions.js @@ -632,6 +632,15 @@ const EstBusinessActions = (() => { (typeof EstBlockFile !== "undefined" && EstBlockFile.handle(name, state)) ) { EstApp.render(); + } else if (name === "insert-annual") { + // 원본 열(차수) 삽입(TFRMESTMULTIEDIT popInsert): 고른 차수 앞에 새 차수 + const at = Math.max(0, Math.min(project.annual.length, Number(node.dataset.row) || 0)); + EstApp.change(() => { + project.annual.splice(at, 0, { + name: EstBusiness.newAnnualName(project.annual), + formula: "[기준]", + }); + }, false); } else if (name === "load-contract" || name === "load-bid") { purpose = name; documentKey = state.documentKey; diff --git a/tools/est-test/native-extra.js b/tools/est-test/native-extra.js index cb7dee5c1..7f1ef4ca4 100644 --- a/tools/est-test/native-extra.js +++ b/tools/est-test/native-extra.js @@ -328,6 +328,7 @@ const EstExtra = (() => { "↓", `data-row="${index}" data-direction="1" ${index === project.annual.length - 1 ? "disabled" : ""}`, ) + + button("insert-annual", "위에 삽입", `data-row="${index}"`) + button("delete-extra", "삭제", `data-section="annual" data-row="${index}"`), ]), ),