feat(845-1): 수식 문서 변수 단위 채움 — 원본 · 식 셈 · 금액 줄 역산 규칙 한 벌(변환 끝 · 금액 무관)

- 새 규칙 `master_doc_unit.fill` — 변환(`master_doc_convert.convert`) 끝에서 부름 · 빌더 · 실행 중 변환(SK 사본) 한 벌 · 보이는 변수 `단위` 칸만(연결 안 단위 · 셈 안 건드림)
- 근거: 표 값칸 단위 · 「줄 따름」 류 = 고를 수 있는 행 단위 한 가지 · 기계 칸 = 기계 표 단위(천원 · 10^-7/시간 · ℓ/hr · ㎾h/hr · % · 인/일) · 노임 원/일 · 재료 · 유가 원/단위 · 부른 문서 결과단위 · 식 셈(천원 × 1000 · % ÷ 100 · 2 배 안 보정 계수) · 금액 줄 역산(줄 단위 = 단가 단위일 때 더하기로만 이은 변수)
- 저장본 다시 지음: 1,520 문서 중 1,486 문서의 변수 단위 칸만 바뀜(채움 7,816 · 자리표시 「구분 따름」 · 「수」 · 나열 고침 982 · 표기 25) · 금액 대조 기본 1,520 같음 · 옵션 표본 18,873 중 다름 3 = 채택 1 원 셋 그대로
- 짐작은 안 채움(목록 tmp/845_1 · 시간환산 1/8 · 측량 직종 칸 · 식 속 수 상수 등)
- 지킴 시험 test_845_1: 다시 채워도 바뀔 단위 0 · 자리표시 0 · 금액 줄 단위 = 단가 단위 · 사용자 그림 문서 · 단위 셈

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-15 22:32:39 +09:00
co-authored by Claude Opus 5.5
parent 0377e45d6c
commit 54d49c1a82
61 changed files with 9496 additions and 8824 deletions
@@ -13,6 +13,7 @@
· 덧줄 = 금액 줄(단가 = 식) ·
`줄.'이름'` · 앞 덧줄 이름 = 그 금액 줄 기호 · 끝수 결과 · 표시 = 식 안 반올림
· 금액 끝수 = 문서 `끝수`.
- 변수 단위 = 끝에 `master_doc_unit.fill`(845-1 · 빈 단위를 원본 · 식 셈 · 금액 줄 역산으로).
옛 엔진 셈은 안 함(기호 · 이름 보기만 export 를 씀).
"""
@@ -22,6 +23,7 @@ import re
from decimal import Decimal
import master_doc as md
import master_doc_unit as mdu
import master_equation as meq
import master_equation_edit as mee
import master_equation_sign as mes
@@ -344,7 +346,10 @@ def convert(master, row: dict, given: dict | None = None) -> tuple[dict, list[st
c.reg.settle()
doc = _build(c, row, given, lone_steps)
c.notes += c.reg.notes
return slim_doc(doc), sorted(set(c.notes))
doc = slim_doc(doc)
if hasattr(master, "numbers"): # 빌더 · 실행 중 변환 한 벌 — 변수 단위 채움(845-1)
mdu.fill(doc, master)
return doc, sorted(set(c.notes))
def _is(node, value) -> bool: