diff --git a/resources/tester/test_m02_hopyo_stmate.py b/resources/tester/test_m02_hopyo_stmate.py index 82ad43569..671a2daf9 100644 --- a/resources/tester/test_m02_hopyo_stmate.py +++ b/resources/tester/test_m02_hopyo_stmate.py @@ -3,7 +3,8 @@ 여섯 파일 올라감(봉화 45 · 영월 23 · 울진대흥 설계 · 착공 34 · 영덕 9 · 울진소광 25 호표) · 봉화 줄 216(구성 209 + 근거글 7) · 단산 103 · 노임 30 · 호표 22 · 줄 코드 갈래 · 노임 이름 어긋남 0 · 블록 자원 품 · 이음 열쇠(M~Z 열 코드 꼴 첫 것) · -문서 보안(장수 · 진안) 400 글 · 원본 엑셀 · master_data 그대로. +문서 보안(장수 · 진안) 400 글 · 원본 엑셀 · master_data 그대로 · +영월 정답 자리(`y_ids` — 338 실험 C1 `labels_y` Y000~Y035 = D · X 고유 줄 차례 · 골든 시험이 씀). """ import hashlib @@ -183,3 +184,34 @@ def test_여섯_파일_올라감(client): assert view.status_code == 200, view.text # 맞춤 보기가 STmate 줄을 받음 assert {tag: hashlib.sha256(_path(tag).read_bytes()).hexdigest() for tag in FILES} == sources assert master_hash() == before + + +def y_ids(book: dict) -> dict[str, dict]: + """영월 정답 자리 — D · X 줄을 (이름, 규격, 단위, 코드) 고유로 처음 나온 차례 → + `{"Y000": {호표, 차례, 열쇠}}`(338 실험 C1 `s09_stmate` 와 같은 번).""" + out: dict[str, dict] = {} + seen: set[tuple] = set() + for hopyo in book["호표"]: + for line in hopyo["줄"]: + key = (line["이름"], line["규격"], line["단위"], line["코드"]) + if line["코드"][0] in "DX" and key not in seen: + seen.add(key) + out[f"Y{len(out):03d}"] = {"호표": hopyo["번"], "차례": line["차례"], "열쇠": key} + return out + + +def test_영월_정답_자리(books): + got = y_ids(books["영월"]) + assert len(got) == 36 # 정답 34 + 우리에 없음 둘(Y004 · Y007) + assert got["Y000"] == { + "호표": 2, + "차례": 1, + "열쇠": ("무근콘크리트타설", "인력운반타설", "M3", "D02058"), + } + assert got["Y005"]["열쇠"] == ("크레인(타이어)", "10톤", "시간", "X02104") + assert got["Y010"]["열쇠"][3] == "D00060" and got["Y035"]["열쇠"][3] == "D01810" + by = {h["번"]: h for h in books["영월"]["호표"]} + for one in got.values(): + line = by[one["호표"]]["줄"][one["차례"]] + assert (line["이름"], line["규격"], line["단위"], line["코드"]) == one["열쇠"] + assert line["갈래"] == "기계" or "근거" in line # 단산 줄은 블록 이음