diff --git a/resources/tester/test_m02_table_fill.py b/resources/tester/test_m02_table_fill.py index e2ec9e675..1f69052ec 100644 --- a/resources/tester/test_m02_table_fill.py +++ b/resources/tester/test_m02_table_fill.py @@ -72,7 +72,9 @@ def project(tmp_path: Path) -> Path: def _auto(project: Path, document: dict[str, Any], lengths: dict[float, float]) -> dict[str, Any]: """바인딩 자동 맞춤(`fill_document` 기본) — 프로젝트 `fill_table` 은 지정 항목 모드(PLAN 21-3)라 펼침 · 묶음 · 손 값 규칙은 이 길로 봄.""" - return fill.fill_document(document, fill.collect_items(project, lengths)) + # 옵션 그룹 · 컨테이너마다 더 서는 건(복사본 `…__그룹`)은 지정 항목 모드 몫 — 자동 맞춤은 본체만 셈 + items = [i for i in fill.collect_items(project, lengths) if "__" not in i["복사본"]] + return fill.fill_document(document, items) def _filled(project: Path, document: dict[str, Any] | None = None) -> dict[str, Any]: @@ -94,10 +96,11 @@ def test_펼침_열은_설계에_쓰인_값만_차례대로(project: Path) -> No ] assert not any(i.startswith("rw|") for i in ids) # 옹벽 없음 → 열 없음 assert "rv" not in ids and "ps" in ids # 펼침 마스터 칸은 빠지고 고정 열은 남음 - # 관 유입·유출 기슭막이는 레지스트리 기본값(찰 · 메 · 높이 없음)으로 열이 섬 · id 는 설계 값 - assert "rv|돌쌓기(찰)|-" in ids and "rv|돌쌓기(메)|-" in ids - assert _col(doc, "rv|돌쌓기(찰)|-")["머리"] == ["돌기슭막이", "찰쌓기", "높이 미입력"] - assert _col(doc, "fb|1000|-")["머리"] == ["세월교", "Φ1000×련수 미입력", None] + # 관 유출 기슭막이는 레지스트리 기본값(찰 · 흙막이 기본 높이 1.5 — 54-36)으로 열이 섬 · id 는 설계 값 + assert [i for i in ids if i.startswith("rv|")] == ["rv|돌쌓기(찰)|1.5"] + assert _col(doc, "rv|돌쌓기(찰)|1.5")["머리"] == ["돌기슭막이", "찰쌓기", "H=1.5"] + # 세월교 기본값(65-1) — 련수 칸 기본 2 + assert _col(doc, "fb|1000|2")["머리"] == ["세월교", "Φ1000×2련", None] assert not any(i.startswith("pg_in|") for i in ids) # 날개벽·집수정 형식 없음 → 관보호공 없음 @@ -151,7 +154,7 @@ def test_측점_줄_같은_측점은_한_줄_관은_나눔(project: Path) -> Non assert first["sta"] == second["sta"] == "NO.4+5.05" assert first["pp_len|파형강관|1000"] == 14.0 and "pp_len|흄관|1000" not in first assert second["pp_len|흄관|1000"] == 14.0 # 한 측점 횡단 관 연장은 하나 — 두 관이 같이 씀 - assert first["rv|돌쌓기(찰)|-"] == second["rv|돌쌓기(찰)|-"] == 10 + assert first["rv|돌쌓기(찰)|1.5"] == second["rv|돌쌓기(찰)|1.5"] == 10 assert rows["s300.00"]["값"]["ps"] == 1 assert [row["값"].get("no") for row in doc["줄"][1:]] == [str(i) for i in range(1, 8)] assert "식" not in rows["s200.00~230.00"] # 줄눈 간격이 달라도 열 식이 없으면 줄 식 없음 diff --git a/resources/tester/test_m02_template_layers.py b/resources/tester/test_m02_template_layers.py index 4724c5ab2..2dbfe7a8f 100644 --- a/resources/tester/test_m02_template_layers.py +++ b/resources/tester/test_m02_template_layers.py @@ -242,8 +242,9 @@ def test_채운_표는_작업본을_채워_돌려주고_저장_안_함( before = layers.version_of(root / "templates/table/구조물집계표.json") got = world["client"].get(f"/api/m02/projects/{P1}/tables/구조물집계표/filled").json() # 프로젝트 채움 = 지정 항목 모드(PLAN 21-3) — 집계 항목 미지정 관은 표에 안 들어감 + # 배관 한 개 = 관 · 보호공(유입) · 보호공(유출) 컨테이너 셋(54-1) → 미지정 4건 assert not any(r["id"] == "s40.00" for r in got["문서"]["줄"]) - assert "집계 항목 미지정 1건 — 표에 안 들어감" in got["문서"]["알림"] + assert "집계 항목 미지정 4건 — 표에 안 들어감" in got["문서"]["알림"] assert got["결과"] == {"계산": {}} and got["판"] == before assert layers.version_of(root / "templates/table/구조물집계표.json") == before