Files
Aislo/resources/tester/test_160_2_b08_unassigned.py
T
eomsangdonandClaude Opus 5.5 5e25f418cc refactor(b08): 탭 표 자료 읽기 · 표 짜기를 화면 없는 파일로 꺼냄 — 구조물 집계표 · 자재 · 토공 · 수리 입력 · 거리이정표 · 화면은 같은 함수를 씀 · 동작 그대로 (302-3)
- 새 파일 = B08_Quantity_Summary_Table · Material_Tables · Earthwork_Tables · Hydro_Table · Milestone_Table
- 화면 UI 파일 = 불러오기 · 그리기만 · 옛 B08 시험 = 옮긴 글 자리 따라 읽는 파일 더함

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Se7ytqbohmBQnfYpwYFnYf
2026-10-13 08:03:23 +09:00

72 lines
2.5 KiB
Python

"""160-2 B08 구조물 집계표 빈 조합 칸 글(198-1 부터 미연결 램프 호버 글 · 「미지정」 열 · 칸 표기는 지움).
`B08_Quantity_Summary_Data.ts` 를 `common_util_summary_item.ts` 와 이어 붙여 node 로 돌림(61-1 시험과 같은 꼴).
"""
import json
from pathlib import Path
from test_61_1_b08_summary_table import _item, _run
ROOT = Path(__file__).resolve().parents[2]
def _slot(copy: str, group, item=None, linked=False) -> dict:
return {"copy": copy, "group": group, "item": item, "linked": linked}
FACILITIES = [
{
"id": "pipe@100",
"type_id": "pipe",
"name": "배관",
"facility": "pipe",
"chainage_m": 100.0,
"slots": [
_slot("pipe@100", None),
_slot("pipe@100__gpipe", "관", _item("SS2")),
_slot("pipe@100__gin", "관 보호공(유입)", _item("SS3"), linked=True),
],
},
{
"id": "s1",
"type_id": "ford_bridge",
"name": "세월교",
"facility": None,
"chainage_m": 100.004,
"slots": [_slot("s1__gfordout", "유출 구조", {"key": "깨짐"})], # 모양 틀림 = 조합 없음
},
{
"id": "s2",
"type_id": "box",
"name": "BOX",
"facility": None,
"chainage_m": 160.0,
"slots": [_slot("s2", None, _item("SS1"), linked=True)], # 빈 칸 없음 = 이름만
},
]
def test_빈_조합_칸_글():
out = _run(
f"\nconst f = {json.dumps(FACILITIES, ensure_ascii=False)};"
"\nconst at = (s) => unlinkedAt(f, s);"
"\nconsole.log(JSON.stringify({"
" t100: unassignedText(at(100), '본체'), t160: unassignedText(at(160), '본체'),"
" t0: unassignedText(at(0), '본체') }));"
)
assert out["t100"] == "배관: 본체 · 관 / 세월교: 유출 구조"
assert out["t160"] == "BOX" and out["t0"] == ""
def test_화면_연결():
summary = (ROOT / "B08_Quantity/B08_Quantity_UI_Summary.ts").read_text(encoding="utf-8") + (
ROOT / "B08_Quantity/B08_Quantity_Summary_Table.ts"
).read_text(encoding="utf-8")
assert (
'unassignedText(unlinkedAt(unlinked, station), L("B08_Quantity_Link_Body"))' in summary
) # 칸 이름 = 모달과 같은 규칙
assert 'key: "unassigned"' not in summary and "unassignedCombos" not in summary # 198-1
locale = (ROOT / "ui_template/ui_template_locale_b4.ts").read_text(encoding="utf-8")
assert "B08_Quantity_Summary_Unassigned" not in locale