docs(M01): 식 해석기(3-3) 다른 창 검증 — 견본 14개 전부 뜻대로 동작
- 옮기기 규칙(마스터요소 하나=호표 · 비목만 정함=덧줄 · 나머지=중간) 확인 - 검사(단위·돌고돎·중복정의·안쓰임·못읽음·비목합이름·항당요소하나) 전부 막힘 - 저장·계산은 임시 폴더에서만(실 저장소 안 건드림) — check_saved·/calc 일치
This commit is contained in:
@@ -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개 견본에서 어긋난 동작 없음.
|
||||
Reference in New Issue
Block a user