From f9ad8e60ae33b4a0ba35b22db7ec9a1227f52b43 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Thu, 12 Nov 2026 17:34:57 +0900 Subject: [PATCH] =?UTF-8?q?test(822-1b):=20test=5F821=5F4=20=EB=A5=BC=20?= =?UTF-8?q?=EC=A7=84=EC=A7=9C=20=EB=A7=88=EC=8A=A4=ED=84=B0=20=EB=B3=84?= =?UTF-8?q?=EC=B9=AD=EC=97=90=20=EC=95=88=20=EA=B8=B0=EB=8C=80=EA=B2=8C=20?= =?UTF-8?q?=E2=80=94=20=EB=B3=84=EC=B9=AD=20=EB=B9=84=EC=9A=B4=20=EC=82=AC?= =?UTF-8?q?=EB=B3=B8(no=5Faliases)=EC=97=90=EC=84=9C=20=EB=AA=BB=20?= =?UTF-8?q?=EC=9D=B4=EC=9D=80=20=EA=B8=B0=EA=B3=84=20=EA=B2=AC=EB=B3=B8=20?= =?UTF-8?q?=EC=9E=AC=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 까닭: 파워트로웰이 품셈 기계(EQ000534 별칭)로 이어져 「못 이은 기계」 견본이 사라짐. 820-1 정리 시험만 진짜 마스터. 504 시험 = 별칭 없을 때 내 기계 예정 · 별칭 있을 때 EQ000534 · 금액 546 그대로. Co-Authored-By: Claude Sonnet 5.5 --- .../tester/test_821_4_import_my_machine.py | 34 +++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/resources/tester/test_821_4_import_my_machine.py b/resources/tester/test_821_4_import_my_machine.py index f2ab13905..5b0910e21 100644 --- a/resources/tester/test_821_4_import_my_machine.py +++ b/resources/tester/test_821_4_import_my_machine.py @@ -30,6 +30,7 @@ from M02_MasterTemplete import M02_Sangeun_Copy as skc from M02_MasterTemplete import M02_Sangeun_FromHopyo as fh from M02_MasterTemplete import M02_Sangeun_Imported as imp from resources.tester.test_m02_labor_ref import world # noqa: F401 — 같은 임시 층 +from resources.tester.test_815_1_import_link import aliases, no_aliases # M01 별칭 칸 임시 ROOT = Path(__file__).resolve().parents[2] MAIN = ROOT / "resources/knowledge/original/경쟁사 프로그램/EST Plus 2/다산소프트/2026-07-main.estx" @@ -37,6 +38,16 @@ GEN = "E0000001016" # EST main 발전기 5.5kW GONE = [f"EQ{n:06d}" for n in range(656, 669)] +@pytest.fixture(autouse=True) +def _blank_aliases(request): + """진짜 마스터 기계 별칭(파워트로웰 = EQ000534 등) 유무와 무관 — 별칭 없는 사본에서 잼(820-1 정리 시험만 진짜 마스터).""" + if request.node.name == "test_cleanup_820_1": + yield + return + with no_aliases("EQ"): + yield + + @lru_cache(maxsize=1) def _main_raw() -> bytes: return MAIN.read_bytes() @@ -108,7 +119,7 @@ def test_direct_without_make() -> None: # ── ② 층 저장 길 ────────────────────────────────────────────────────── -TROWEL = 504 # EST main 「콘크리트 바닥 마감(Power Trowel)」 — 파워트로웰 3.73kW = 이제 품셈에 없음 +TROWEL = 504 # EST main 「콘크리트 바닥 마감(Power Trowel)」 — 파워트로웰 3.73kW = 별칭 없는 사본에서 못 이음(별칭 있으면 EQ000534) WANT = ("파워트로웰", "3.73kW") @@ -207,10 +218,21 @@ def test_blank_input_name_roundtrip() -> None: assert got and got["입력"]["전력 계약종별"] == "'일반용(갑)Ⅰ 저압'" -def test_main_504_amount_same() -> None: - """EST main 504 「콘크리트 바닥 마감(Power Trowel)」 = 원파일 저장 금액 546(파워트로웰 = 이제 못 이음 · 엑셀 값).""" +def test_main_504_amount_same(world) -> None: + """EST main 504 = 원파일 저장 금액 546 그대로 — 별칭 없는 사본 = 내 기계 예정 · 별칭 있으면 품셈 EQ000534.""" import test_810_2_native_doc as t - out = fn.emit(_main(), 504) - _, _, got = t.doc_and_money(out) - assert float(got["계"]) == 546 + def plan() -> tuple[dict, list]: + out = fn.emit(_main(), 504) + with store.at(world["company"]): # 개인 층 아님 = 안 만들고 예정만 적음 + mm.attach(out, _main()["기계구성"]) + return out, out["원본"].get("내기계예정") or [] + + out, todo = plan() + assert {"이름": WANT[0], "규격": WANT[1]} in todo + assert float(t.doc_and_money(out)[2]["계"]) == 546 + with aliases("EQ", {"EQ000534": "파워트로웰"}): # 승인 별칭 = 품셈 기계로 이어짐 + out, todo = plan() + assert not [m for m in todo if m["이름"] == WANT[0]] + assert "EQ000534" in json.dumps(out, ensure_ascii=False, default=str) + assert float(t.doc_and_money(out)[2]["계"]) == 546