From d1df48c45f59c1e7157960111f28819d9be5d87c Mon Sep 17 00:00:00 2001 From: umsangdon Date: Fri, 2 Oct 2026 01:36:27 +0900 Subject: [PATCH] =?UTF-8?q?fix(m02-df):=20=EB=B3=80=ED=99=98=20=EB=B3=80?= =?UTF-8?q?=EC=88=98=20=EC=98=88=EC=8B=9C=EA=B0=92=20=3D=20=EC=8B=9C?= =?UTF-8?q?=ED=97=98=EC=9E=85=EB=A0=A5=20=C2=B7=20=EC=97=86=EC=9C=BC?= =?UTF-8?q?=EB=A9=B4=20=EC=99=BC=EC=AA=BD=20=EC=8B=9C=ED=97=98=20=EA=B3=84?= =?UTF-8?q?=EC=82=B0=20=EA=B8=B0=EB=B3=B8=EA=B0=92(master=5Fauto)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 고르기 첫 값 · 범위 아래 끝 · 표에서 가장 낮은 값 — /logic/auto 와 같은 규칙(GF000004 횡단경사 55) · 글 수 → 수 Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01VBToTCGk5dqDKeXCEP3vhk --- M02_MasterTemplete/DataFlow/M02_DF_Convert.py | 19 +++++++++++++------ resources/tester/test_m02_df_convert.py | 5 ++++- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/M02_MasterTemplete/DataFlow/M02_DF_Convert.py b/M02_MasterTemplete/DataFlow/M02_DF_Convert.py index 37153d371..949f0f2d3 100644 --- a/M02_MasterTemplete/DataFlow/M02_DF_Convert.py +++ b/M02_MasterTemplete/DataFlow/M02_DF_Convert.py @@ -87,12 +87,19 @@ class _Flow: self.links.append(one | ({"rule": rule} if rule else {})) def design(self) -> None: - """설계 값 상자 — 예시값 = 줄의 시험입력 · 없으면 check_master.시험입력 기본.""" - given = store.cm.시험입력(self.row) - try: - given = mf._inputs(self.row, given) # 글로 적힌 수 → 수(옛 엔진과 같음) - except mf.FormulaError: - pass + """설계 값 상자 — 예시값 = 줄의 시험입력 · 없으면 왼쪽 시험 계산 기본값(master_auto).""" + given = store.mau.values(self.master, self.row) + given.update(self.row.get("시험입력") or {}) + for ( + k, + v, + ) in given.items(): # 글로 적힌 수 → 수(고르기 값은 그대로 · 옛 엔진 _inputs 와 같음) + spec = self.specs.get(k) or {} + if isinstance(v, str) and "고르기" not in spec: + try: + given[k] = Decimal(v.strip()) + except ArithmeticError: + pass variables = [] for s in self.row.get("입력") or []: pick = s.get("고르기") diff --git a/resources/tester/test_m02_df_convert.py b/resources/tester/test_m02_df_convert.py index 35486a4af..1305f70ef 100644 --- a/resources/tester/test_m02_df_convert.py +++ b/resources/tester/test_m02_df_convert.py @@ -275,7 +275,7 @@ def test_전수_대조_옛_셈_같음() -> None: def test_변수_예시값_합계_끝수() -> None: _copy() - got = _shape("GF000007", "GF000226") + got = _shape("GF000007", "GF000226", "GF000004") for key, one in got.items(): flow = one["flow"] design = next(b for b in flow["boxes"] if b["id"] == "in-design") @@ -284,3 +284,6 @@ def test_변수_예시값_합계_끝수() -> None: box = next(b for b in got["GF000226"]["flow"]["boxes"] if b["id"] == "in-design") vars226 = {v["name"]: v["example"] for v in box["input"]["variables"]} assert vars226["직경"] == 60 # 줄의 시험입력(글 「60.0」 → 수) + box = next(b for b in got["GF000004"]["flow"]["boxes"] if b["id"] == "in-design") + vars4 = {v["name"]: v["example"] for v in box["input"]["variables"]} + assert vars4["횡단경사"] == 55 # 왼쪽 시험 계산 기본값(master_auto)