wip(802-4b-1): 중지 — 빈 산근 = 엑셀 0 원 줄(전후 다름 6 블록 고침 · 시험 한 건)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-07 20:30:28 +09:00
co-authored by Claude Opus 5.5
parent 8406fd2367
commit 32208c3577
2 changed files with 24 additions and 0 deletions
+15
View File
@@ -293,10 +293,25 @@ def derive(sk: dict, ctx: tuple | None = None, whole: Any = None) -> dict:
_numbers(doc, keep) _numbers(doc, keep)
head = {k: (meta.get("원본") or {}).get(k) for k in HEAD if (meta.get("원본") or {}).get(k)} head = {k: (meta.get("원본") or {}).get(k) for k in HEAD if (meta.get("원본") or {}).get(k)}
marks = list((meta.get("원본") or {}).get("표지") or []) 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 {}) doc["가져온"] = head | {"표지": marks} | ({"알림": notes} if notes else {})
return {**doc, "키": str(sk.get("키") or key), "이름": str(sk.get("이름") or doc.get("이름"))} 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: class _Row:
"""변환 색인 — 이 SK 줄만 고친 줄(소요량 중간 더함)로 · 그 밖 그대로.""" """변환 색인 — 이 SK 줄만 고친 줄(소요량 중간 더함)로 · 그 밖 그대로."""
@@ -296,3 +296,12 @@ def test_ts_view_mirror() -> None:
assert ts_ == py assert ts_ == py
assert _var(ts_[0], "보통인부")["연결"] == {"갈래": "숫자", "값": 100000.0} assert _var(ts_[0], "보통인부")["연결"] == {"갈래": "숫자", "값": 100000.0}
assert ts_[0]["변수"][-1]["연결"]["갈래"] == "단가산출" # 형제 SK = 늘 연결 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