From 32208c3577982c83ec1586b12619291746ae0d03 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sat, 7 Nov 2026 20:30:28 +0900 Subject: [PATCH] =?UTF-8?q?wip(802-4b-1):=20=EC=A4=91=EC=A7=80=20=E2=80=94?= =?UTF-8?q?=20=EB=B9=88=20=EC=82=B0=EA=B7=BC=20=3D=20=EC=97=91=EC=85=80=20?= =?UTF-8?q?0=20=EC=9B=90=20=EC=A4=84(=EC=A0=84=ED=9B=84=20=EB=8B=A4?= =?UTF-8?q?=EB=A6=84=206=20=EB=B8=94=EB=A1=9D=20=EA=B3=A0=EC=B9=A8=20?= =?UTF-8?q?=C2=B7=20=EC=8B=9C=ED=97=98=20=ED=95=9C=20=EA=B1=B4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- M02_MasterTemplete/M02_Doc_Import.py | 15 +++++++++++++++ resources/tester/test_802_4b1_import_doc.py | 9 +++++++++ 2 files changed, 24 insertions(+) diff --git a/M02_MasterTemplete/M02_Doc_Import.py b/M02_MasterTemplete/M02_Doc_Import.py index d6c8c96de..455275b2f 100644 --- a/M02_MasterTemplete/M02_Doc_Import.py +++ b/M02_MasterTemplete/M02_Doc_Import.py @@ -293,10 +293,25 @@ def derive(sk: dict, ctx: tuple | None = None, whole: Any = None) -> dict: _numbers(doc, keep) head = {k: (meta.get("원본") or {}).get(k) for k in HEAD if (meta.get("원본") or {}).get(k)} marks = list((meta.get("원본") or {}).get("표지") or []) + if not (doc.get("금액") or doc.get("결과") or row["호표"] or row.get("덧줄")): + _empty(doc) # 빈 산근 = 엑셀 0 원(줄 없음 합) — 「—」 아님 + marks.append(EMPTY) doc["가져온"] = head | {"표지": marks} | ({"알림": notes} if notes else {}) return {**doc, "키": str(sk.get("키") or key), "이름": str(sk.get("이름") or doc.get("이름"))} +EMPTY = "참고 · 빈 산근 — 엑셀 줄 없음 · 금액 0 그대로" + + +def _empty(doc: dict) -> None: + """줄 없는 엑셀 산근 — 0 묶음 줄 하나(엑셀 금액 0 = 줄 없는 합 · 지은 값 아님).""" + doc["변수"].append( + {"열쇠": "P_빈", "기호": "P", "아래": "빈", "위": "", "이름": "빈 산근", "단위": "", + "연결": {"갈래": "숫자", "값": dict.fromkeys(imp.COSTS, Decimal(0))}} + ) # fmt: skip + doc["금액"] = [{"이름": "빈 산근", "단위": "식", "비목": "묶음", "단가": "P_빈"}] + + class _Row: """변환 색인 — 이 SK 줄만 고친 줄(소요량 중간 더함)로 · 그 밖 그대로.""" diff --git a/resources/tester/test_802_4b1_import_doc.py b/resources/tester/test_802_4b1_import_doc.py index a54dfcc8b..e1c141ff8 100644 --- a/resources/tester/test_802_4b1_import_doc.py +++ b/resources/tester/test_802_4b1_import_doc.py @@ -296,3 +296,12 @@ def test_ts_view_mirror() -> None: assert ts_ == py assert _var(ts_[0], "보통인부")["연결"] == {"갈래": "숫자", "값": 100000.0} assert ts_[0]["변수"][-1]["연결"]["갈래"] == "단가산출" # 형제 SK = 늘 연결 + + +def test_empty_block_is_excel_zero_not_dash() -> None: + """줄 없는 엑셀 산근 = 0 원(옛 엔진 · 엑셀과 같음) · 표지 · 우리 단가로도 0.""" + doc = _doc([]) + root = dim.derive(doc) + assert dim.EMPTY in root["가져온"]["표지"] + assert dim.run(root, doc)["계"] == 0 == dim.run(root, _ours(doc))["계"] + assert imp.check(doc)["셈"]["계"] == 0