- 층 단추 · 나무 → 수평선 → 구조물 도면 → 일위대가 → 면적산출(재료산출 · 자재 조합은 sub6 몫으로 그대로) - 하위마다 맨 위 「전체 항목」 — 누르면 SideOptions.onAll(kind)(화면은 39-5) · 양식 · 다른 보기가 열리면 고름 지움 - 이름 「일위대가」(하위 제목 · 대시보드 카드 글) · 해시 open=일위대가 = 일위대가 하위 펼침 + 전체 항목 - 일위대가 열 줄은 SU 번호(39-1a) 뒤 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BVPp2o6Mh2FZJr72yW3ofZ
52 lines
2.5 KiB
Python
52 lines
2.5 KiB
Python
"""좌측 패널 일위대가(PLAN 39-2) — 맨 위 「일위대가 조합」 컨테이너 · 조합 나무 · 둘째 층 단추 벌 지움 ·
|
|
일위대가는 구조물 조합 하위(구조물 도면 → 일위대가 → 면적산출). 글 검사(화면은 ORCA).
|
|
|
|
옛 일위대가 라이브러리 나무 시험(PLAN 27-2b · 30-3 · 30-5)은 나무를 지우며 이 검사로 갈음.
|
|
"""
|
|
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parents[2]
|
|
M02 = ROOT / "M02_MasterTemplete"
|
|
|
|
|
|
def _text(name: str) -> str:
|
|
return (M02 / name).read_text("utf-8")
|
|
|
|
|
|
def test_일위대가_나무_파일과_이음이_없음():
|
|
assert not (M02 / "M02_MasterTemplete_Labor.ts").exists()
|
|
assert not (M02 / "M02_MasterTemplete_Labor_Tree.ts").exists()
|
|
page = _text("M02_MasterTemplete_UI_Page.ts")
|
|
assert "buildLaborSection" not in page and 'layerBar("일위대가"' not in page
|
|
side = _text("M02_MasterTemplete_UI_Side.ts")
|
|
assert "LaborSection" not in side and "labor?." not in side
|
|
|
|
|
|
def test_나무_부품에_일위대가_전용_칸_없음():
|
|
panel = _text("M02_MasterTemplete_TreePanel.ts")
|
|
for gone in ("maxDepth", "opt.item", "opt.clipKind", "clipKind?:"):
|
|
assert gone not in panel, gone
|
|
|
|
|
|
def test_하위_차례_전체_항목_이름():
|
|
side = _text("M02_MasterTemplete_UI_Side.ts")
|
|
kinds = side.split("const COLUMN_KINDS")[1].split("];")[0]
|
|
order = [kinds.index(f'kind: "{k}"') for k in ("structure", "labor", "area")]
|
|
assert order == sorted(order) # 구조물 도면 → 일위대가 → 면적산출
|
|
assert 'label: () => L("M02_KindLabor"), all: true' in kinds
|
|
assert "onAll?: (kind: AllKind) => void;" in side # 화면은 ItemList(39-5) · 페이지가 이음
|
|
assert "if (!opt.onAll || allPicked === kind || !(await opt.confirmLeave())) return;" in side
|
|
assert 'return void selectAll("labor");' in side # 해시 open=일위대가
|
|
locale = (ROOT / "ui_template" / "ui_template_locale_m2.ts").read_text("utf-8")
|
|
assert 'M02_KindLabor: ["일위대가"' in locale and 'M02_ItemsAll: ["전체 항목"' in locale
|
|
assert 'B01_Dashboard_CardUnitCombo: ["일위대가",' in locale
|
|
css = _text("M02_MasterTemplete_UI_Style.css")
|
|
assert ".m02-side__rule {" in css and "border-top: 1px solid var(--color-border);" in css
|
|
|
|
|
|
def test_층_단추는_구조물_조합_한_벌():
|
|
page = _text("M02_MasterTemplete_UI_Page.ts")
|
|
assert page.count('layerBar("') == 1 # 구조물 조합 줄 아래 하나
|
|
assert 'layerBar("구조물조합", tree.add, () => void main.openTable(layer)),' in page
|