Merge remote-tracking branch 'origin/sub_laptop_3' into main_laptop_1

This commit is contained in:
2026-11-01 16:33:47 +09:00
4 changed files with 53 additions and 7 deletions
+14 -1
View File
@@ -14,6 +14,7 @@ from M01_MasterData import M01_MasterData_Store_Sheet as sheet # noqa: E402
from M02_MasterTemplete import M02_Logic_Standard as standard # noqa: E402
msl = sheet.msl
num = standard.labor_inputs._num # Decimal → JSON 수(두 길 같은 규칙)
def _text(key: str) -> dict:
@@ -36,6 +37,18 @@ def test_line_keys_and_bundle():
assert any(line["묶음"] == "인력" for line in lines)
def test_machine_spread():
"""714-1b — 장비 줄 「펼침」 = 부른 기계경비 로직 계산서(조종원 · 연료 · 손료) · 시간당 계."""
lines = _lines(_text("GF000103"))
spread = next(line for line in lines if line.get("장비"))["펼침"]
assert spread["키"].startswith("GC0002") and spread["단위"] == "시간"
names = " ".join(one["이름"] for one in spread["줄"])
assert "조종원" in names and "손료" in names
sums = [v for v in spread["소계"].values() if v is not None]
assert spread["계"] == sum(sums) and spread["계"] > 0
assert not any(line.get("펼침") for line in lines if not line.get("장비"))
def test_uses_follow_middle_values():
"""중간값을 거슬러 입력까지 — 돌쌓기 석공 품은 높이 · 쌓기 · 돌 입력을 씀."""
lines = _lines(_text("GF000219"))
@@ -59,4 +72,4 @@ def test_two_routes_same_shape():
for a, b in zip(m01, m02):
assert set(b) == {"이름", "글", "금액", *msl.KEYS}
assert a["이름"] == b["이름"]
assert [a.get(k) for k in msl.KEYS] == [b.get(k) for k in msl.KEYS]
assert num([a.get(k) for k in msl.KEYS]) == [b.get(k) for k in msl.KEYS]