fix(M01): 이름 꼴 식이 표 열쇠 별칭을 밑이름으로 풀어쓰던 흠 고침

별칭 이름이 QC001882 처럼 표 열쇠 그대로면 요소 열쇠로 읽혀 밑이름 풀어쓴 글자가 나옴. 요소 테이블(LB·EQ·MT·MP·MO)만 이름으로 풀고 그 밖은 별칭 이름 그대로.
로직 전수 1,291 — 새는 줄 0 (옛 동작과 다른 로직 196) · 값 식·계 그대로 · 시험 추가(21 통과).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
This commit is contained in:
2026-09-21 23:56:03 +09:00
co-authored by Claude Sonnet 5
parent 2aeb3d4937
commit f50bf7e494
3 changed files with 19 additions and 0 deletions
@@ -24,3 +24,8 @@
## 뺀 것 — 검증 도구 자체의 오탐(제품 결함 아님)
GC000996 짝=6·7 — 별칭 값칸 이름이 「그라우팅 믹서(190×2ℓ)」처럼 **띄어쓰기가 든 값칸 키**라, 이번 검증 스크립트가 공백으로 토큰을 가르다 오탐(값칸 이름 자체는 별칭 목록의 실제 값칸과 그대로 같음 — 실제 어긋남 아님, 목록에서 뺌).
## 고친 뒤 (2026-09-21)
원인 — 별칭 이름이 표 열쇠 그대로(`QC001882`)면 식 읽기가 그것을 「요소 열쇠」 로 읽어 이름을 밑이름 풀어쓴 글자로 바꿈. `master_text._elem_name` 이 요소 테이블(LB·EQ·MT·MP·MO)만 이름으로 풀고 그 밖 열쇠(QC·QF…)는 별칭 이름 그대로 두게 고침.
로직 전수 1,291 — 이름 식에 별칭 목록 밖 열쇠·풀어쓴 밑이름이 새는 줄 **0**. 이전 동작과 비교하면 이름 식이 달라지는 로직은 **196**(표본 2건이 아니라 같은 꼴 196). 값 식·계는 그대로. 시험 `test_m01_text.py` 에 GC001008 추가(21 통과).
@@ -19,6 +19,7 @@ import master_formula as mf
PLACES = Decimal("0.0001") # 화면 `formatNumber` 와 같음(소수 넷째 자리까지)
PRICE_TAIL = {"인력": "노임", "기계": "손료"} # 단가 자리의 이름 꼬리(그 밖은 「단가」)
ELEM_KEYS = ("LB", "EQ", "MT", "MP", "MO") # 요소 테이블 — 그 밖의 열쇠(QC · QF …)는 별칭 이름
ELEM_TAIL = {"LB": "노임", "EQ": "손료"} # 식 안 요소 키의 이름 꼬리(그 밖은 「단가」)
_PREC = {"또는": 1, "그리고": 2, "==": 3, "!=": 3, "<": 3, "<=": 3, ">": 3, ">=": 3}
_PREC |= {"+": 4, "-": 4, "*": 5, "/": 5}
@@ -86,6 +87,10 @@ def named(show, real, env: dict, master, depth: int = 0) -> str:
def _elem_name(master, ref: str) -> str:
"""식 안 요소 한 줄의 이름 — 「석공노임」 꼴(같은 이름의 중간 값과 헷갈리지 않게)."""
if (
str(ref)[:2] not in ELEM_KEYS
): # 별칭 이름이 표 열쇠 그대로인 것(QC…) — 밑이름을 풀어쓰지 않음
return ref
try:
name = mc.plain(master.get(ref).get("이름"))
except mf.FormulaError: