마스터 전후 대조: 표가 옮겨 붙은 공종 8(12-02·12-17-01·01-01-02·05-34·08-02-03·09-07-01·09-11-01·14-02) · 일위대가 453 제목 금액 변화 0 · 12-02 가짜 갈래 둘이 12-17-01 로만 옮김 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
30 lines
1.6 KiB
Python
30 lines
1.6 KiB
Python
"""표 읽기 ②(2026-09-14 · PLAN 1장) — 「못 붙은 줄」 로 잘못 서던 자리를 **상태가 움직이는지**로 잼.
|
|
|
|
9-21 제근 고르기형 표 안내 글이 `unmatched` 에 들어가 못 붙은 줄로 섬 — 밑수는 사용자 확정
|
|
(건설품셈 1,000㎡당 빌림)이라 안내는 비고(`known_gap_note`)로 옮김(사유는 안 사라짐)
|
|
12-2 표면 마무리 원본이 12-17-1 [주] 문장을 절 제목으로 읽어 표 7장·가짜 갈래 #설치·#철거 가 붙음
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from B09_Estimation.B09_Estimation_KnownGaps import known_gap_note
|
|
from B09_Estimation.B09_Estimation_ResourceAxis import load_work_item_master
|
|
from B09_Estimation.B09_Estimation_UnitPrice import cached_build
|
|
|
|
|
|
def test_제근은_못_붙은_줄이_아니고_교차참조_사유는_비고에_남음() -> None:
|
|
build = cached_build()
|
|
assert not build.unattached.get("FP-09-21"), build.unattached.get("FP-09-21")
|
|
assert sum(1 for code in build.book.titles if code.startswith("B-FP-09-21#")) == 6
|
|
note = known_gap_note("FP-09-21")
|
|
assert "교차 참조" in note and "1,000㎡당" in note
|
|
|
|
|
|
def test_표면_마무리엔_미장공_표만_있고_가짜_갈래가_없음() -> None:
|
|
nodes = {n["work_item_code"]: n for n in load_work_item_master()["work_items"]}
|
|
assert [t["pum_table_id"] for t in nodes["FP-12-02"]["tables"]] == ["F0334"]
|
|
assert "F0356" in [t["pum_table_id"] for t in nodes["FP-12-17-01"]["tables"]]
|
|
build = cached_build()
|
|
assert [c for c in build.book.titles if c.startswith("B-FP-12-02")] == ["B-FP-12-02"]
|
|
assert not build.unattached.get("FP-12-02")
|