fix(802-4b-1): M02 파생 SK 옵션 값 = M01 문서 기본(자재지역 자동값 0 → 포항) — 받은 값이 이김 · 금액 그대로

- `M02_Doc_Copy.given_of` = M01 수식 탭 기본(`master_equation.given_of` · 자동값 › 기본 제안) › SK 받은 값(빈 값 = 기본) — 옛 = 엔진 자동값만(입력 기본 없는 자재지역 = 0)
- SK 파생 · 일위대가 · SC 줄 문서 · 가져온 식 문서 모두 같은 길 · 8004 GC000211 바탕 SK 자재지역 포항 · 계 124,419 그대로
- 시험 test_802_4a 옵션 값 한 건(빈 입력 · 빈 글 = M01 기본 · 울진 = 울진 · 금액 = 옛 셈) · 795_1 · 795_2 · 795_3 · 795_4 · 802_4a · 802_4b1 통과

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-07 20:29:18 +09:00
co-authored by Claude Opus 5.5
parent 5799ccbe90
commit 8406fd2367
2 changed files with 21 additions and 5 deletions
+5 -5
View File
@@ -32,7 +32,6 @@ _SCRIPTS = str(Path(__file__).resolve().parents[1] / "resources/master_data/scri
if _SCRIPTS not in sys.path: if _SCRIPTS not in sys.path:
sys.path.insert(0, _SCRIPTS) sys.path.insert(0, _SCRIPTS)
import master_auto as mau # noqa: E402
import master_doc as md # noqa: E402 import master_doc as md # noqa: E402
import master_doc_calc as mc # noqa: E402 import master_doc_calc as mc # noqa: E402
import master_doc_convert as cv # noqa: E402 import master_doc_convert as cv # noqa: E402
@@ -225,14 +224,15 @@ def _apart(doc: dict, lines: list[dict], n: int) -> None:
def given_of(whole: Any, code: str, given: Any) -> dict: def given_of(whole: Any, code: str, given: Any) -> dict:
"""옛 `run_line` 과 같은 입력 — 빈 입력 = 자동값(M01 줄) › 받은 값.""" """문서 옵션 값 — M01 수식 탭 기본(자동값 › 기본 제안 · `master_equation.given_of`) ›
받은 값(빈 값 = 기본 · 802-4b-1 자재지역 자동값 0 이 「포항」 을 덮던 흠)."""
from M01_MasterData import M01_MasterData_Store as m01 from M01_MasterData import M01_MasterData_Store as m01
mine = {k: v for k, v in m01._dec(given or {}).items() if v not in (None, "")}
try: try:
auto = {k: v for k, v in mau.values(whole, whole.logic(code)).items() if v is not None} return cv.meq.given_of(whole, whole.logic(code), mine)
except _ERR: except _ERR:
auto = {} return mine
return {**auto, **m01._dec(given or {})}
def apart_of(marks: Any, mats: Any) -> list[int]: def apart_of(marks: Any, mats: Any) -> list[int]:
+16
View File
@@ -258,3 +258,19 @@ def test_delete_tolerant_and_blank(world):
empty = _sk(me) empty = _sk(me)
got = _calc(me, _doc(me, empty)) got = _calc(me, _doc(me, empty))
assert got["기준"] is None and "빈 문서" in got["수식셈"]["까닭"] assert got["기준"] is None and "빈 문서" in got["수식셈"]["까닭"]
def test_option_value_is_m01_default_not_auto(world):
"""파생 SK 옵션 값 = M01 문서 기본(자재지역 · 자동값 0 아님) · 받은 값이 이김 · 금액 = 옛 셈."""
me = world["personal"]
m01 = next(v for v in dc.folder()[FORM]["변수"] if v["열쇠"] == "자재지역")["연결"]["값"]
for given, want in (({}, m01), ({"자재지역": ""}, m01), ({"자재지역": "울진"}, "울진")):
key = _sk(me, 바탕={"로직": FORM}, 입력값=given)
got = _at(me, path.read, key)
assert next(v for v in got["문서"]["변수"] if v["열쇠"] == "자재지역")["연결"]["값"] == want
token = dsk.OLD.set(True)
try:
old = _sum(me, key)
finally:
dsk.OLD.reset(token)
assert got["셈"]["계"] == old == _sum(me, key)