From 4ccf42c4018fe470b025ec95b9fabb4b141c4bfd Mon Sep 17 00:00:00 2001 From: umsangdon Date: Mon, 21 Sep 2026 20:12:03 +0900 Subject: [PATCH] =?UTF-8?q?docs(M01):=20=EC=8B=9D=20=ED=95=B4=EC=84=9D?= =?UTF-8?q?=EA=B8=B0(3-3)=20=EB=8B=A4=EB=A5=B8=20=EC=B0=BD=20=EA=B2=80?= =?UTF-8?q?=EC=A6=9D=20=E2=80=94=20=EA=B2=AC=EB=B3=B8=2014=EA=B0=9C=20?= =?UTF-8?q?=EC=A0=84=EB=B6=80=20=EB=9C=BB=EB=8C=80=EB=A1=9C=20=EB=8F=99?= =?UTF-8?q?=EC=9E=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 옮기기 규칙(마스터요소 하나=호표 · 비목만 정함=덧줄 · 나머지=중간) 확인 - 검사(단위·돌고돎·중복정의·안쓰임·못읽음·비목합이름·항당요소하나) 전부 막힘 - 저장·계산은 임시 폴더에서만(실 저장소 안 건드림) — check_saved·/calc 일치 --- resources/master_data/ref/_검증_식_해석기.md | 37 ++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 resources/master_data/ref/_검증_식_해석기.md diff --git a/resources/master_data/ref/_검증_식_해석기.md b/resources/master_data/ref/_검증_식_해석기.md new file mode 100644 index 00000000..c2014f06 --- /dev/null +++ b/resources/master_data/ref/_검증_식_해석기.md @@ -0,0 +1,37 @@ +# 3-3 식 해석기 검증 (sub2 작업 · 다른 창의 읽기 전용 검증) + +대상: `scripts/master_draft.py`(dev `be8868ca`) · `POST /api/m01/logic/draft`. 실 저장소는 안 건드림 — 임시 폴더에 정본 데이터를 복사해 그 위에서만 저장·계산. + +방법: `logic_draft(text, decided, head, save)` 를 견본 14개로 직접 부름(라우터와 같은 호출) · 저장된 로직은 `/calc` 로 손 계산과 대조 · 저장은 임시 폴더뿐이라 지우기·키대장 되돌리기 불필요. + +## 결과 — 어긋난 것 없음 + +① 정상 식(자재비) — 손 계산 216,805.6800 = 서버 계산 · `logic_new` 저장 200(= `check_saved` 통과) · 옮기기 규칙 셋 다 뜻대로: 마스터요소(보통인부) 하나가 호표 줄이 되고 나머지 인자(인부)가 수량 · 비목만 정한 변수(잡재료비)는 덧줄 · 나머지(품·넓이·인부)는 중간(쓰는 차례로 정렬). + +②③④⑤⑥⑦⑧⑨⑩⑪⑭ — 막혀야 할 것 전부 막힘, 문제 없이 통과한 것 없음: + +| 견본 | 넣은 것 | 막힌 갈래 · 말 | +|---|---|---| +| ② | 길이(m) + 넓이(㎡) | 단위 — 「+」 양쪽 단위가 다름 — m + ㎡ | +| ②-2 | 무게(kg) + 길이(m) | 단위 — 「+」 양쪽 단위가 다름 — kg + m | +| ③ | 가 = 나+1, 나 = 가*2 | 돌고돎 — 가 → 나 → 가 | +| ④ | 가를 두 줄에서 정의 | 두번정의 — 「가」 을 1줄에서 이미 정함 | +| ⑤ | 나를 정의만 하고 안 씀 | 안쓰임 — 「나」 을 어디서도 안 씀 | +| ⑥ | 결과 아닌 변수 다수(가·나 각각 한 줄) | 안쓰임 — 마지막 줄(나) 만 결과 · 가는 안쓰임으로 잡힘(아래 비고) | +| ⑦ | 「가 = 1 +」(연산자로 끝) | 못읽음 — 이름 없음(자리까지 정확) | +| ⑧ | 「가 = (1 + 2」(괄호 안 닫힘) | 못읽음 — 「)」 없음 | +| ⑨ | 「그냥숫자」(= 없음) | 못읽음 — 「이름 = 식」 이 아님 | +| ⑩ | 「가 =」(오른쪽 빔) | 못읽음 — 「가」 오른쪽이 빔 | +| ⑪ | 「노무비 = 1」(비목합 이름 재사용) | 이름 — 「노무비」 은 비목 합 이름 | +| ⑭ | 한 항에 마스터요소 둘(인부1*인부2) | 항 — 한 항에 마스터요소가 둘 | + +⑫ 무차원(퍼센트) 정상 통과 — 「100 * (1 + 증가율 / 100)」 걸리지 않음(비율은 단위 없음 처리 확인). +⑬ 돈 아닌 로직(결과단위 `㎡`) — 호표 없이 중간+결과 식으로 옮겨짐 · 손 계산 24 = 서버 계산 24. + +## 비고 — 「결과 변수가 둘」은 이 설계에서 애초에 못 만듦 + +요청받은 견본 중 "결과 변수가 둘"은 해석기 구조상 재현 불가 — `_scan()` 이 결과를 **항상 마지막 줄의 왼쪽 이름 하나**로 고정하기 때문에(옆 코드: `결과 = 성함[-1]["이름"]`), 결과가 두 개로 갈리는 입력 자체가 존재하지 않음. 대신 "결과가 아니면서 안 쓰이는 변수"(⑥, 가)가 그 자리를 메꿔 잡힘 — 결함 아님, 설계가 이미 그 경우를 없앤 것으로 확인. + +## 결론 + +옮기기 규칙(마스터요소 하나=호표, 비목만 정함=덧줄, 나머지=중간) · 검사(단위·돌고돎·중복정의·안쓰임·못읽음·비목합이름·항당마스터요소 하나) · 저장(`check_saved` 재사용 · `/calc` 일치) 모두 뜻대로 동작 — 이번 14개 견본에서 어긋난 동작 없음.