From d3f48bce110438ff0f9eda78bcbc7a47e5322c05 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Tue, 22 Sep 2026 01:14:30 +0900 Subject: [PATCH] =?UTF-8?q?knowledge(M01):=20=EB=B3=B8=EB=AC=B8=20?= =?UTF-8?q?=EB=8C=80=EC=A1=B0=20=EC=98=A4=ED=83=90=20=EB=91=98=20=EC=A0=95?= =?UTF-8?q?=EB=A6=AC=20=E2=80=94=201-2-4=20=EB=AF=B8=EC=98=AC=EB=A6=BC=20?= =?UTF-8?q?=EB=92=B7=ED=95=AD=20=EC=A0=9C=EC=99=B8=20=C2=B7=20=EC=B9=B8=20?= =?UTF-8?q?=EC=95=88=20=EC=A4=84=EB=B0=94=EB=80=9C=20=EC=88=98=20=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=20=EC=9D=BD=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - CC000337 결손 18 = 1-2-4 5·6항 표 미올림 · CC000074 결손 51 = 원문 규격 5,150 줄바뀜 · 본문 대조 0건 Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj --- resources/master_data/ref/_마감_수치.md | 5 +++++ resources/master_data/scripts/check_master.py | 9 +++++++++ 2 files changed, 14 insertions(+) diff --git a/resources/master_data/ref/_마감_수치.md b/resources/master_data/ref/_마감_수치.md index 09531a42..97e6e6ae 100644 --- a/resources/master_data/ref/_마감_수치.md +++ b/resources/master_data/ref/_마감_수치.md @@ -29,3 +29,8 @@ | 로직 합 | 1,354 | 같음 | | 조합 | 0 | — | | 요율 · 환율 | 19 · 5 | — | + +## 고친 뒤 (일감 26) + +- 본문 대조 0건 — 도구가 잘못 읽은 것 둘: ① CC000337 은 1-2-4 의 5항(발생재 공제율)·6항(강관배관 부자재율) 표가 아직 마스터에 없어 뜬 것(3항 표 47줄은 원문과 같음) → 검사가 5항 앞까지만 대조 ② CC000074 는 원문 규격 칸 「5,1
50」(PDF 줄바뀜 · 5,150)을 51 로 읽은 것 → 칸 안에서 줄바뀐 천 단위 수는 이어 붙여 읽음. +- CC000337 은 2026-09-21 08:26(8f5566e7)에 새로 생김 — 그 절에 표가 처음 생겨 대조 대상이 된 것 · CC000074 표는 밤 사이 안 바뀜(마지막 수정 09-20). diff --git a/resources/master_data/scripts/check_master.py b/resources/master_data/scripts/check_master.py index 8745073b..097e0b64 100644 --- a/resources/master_data/scripts/check_master.py +++ b/resources/master_data/scripts/check_master.py @@ -484,6 +484,8 @@ def _canon(token: str) -> str: def numbers_in(text: str) -> set[str]: + # 칸 안에서 줄바뀐 천 단위 수(「5,1
50」)는 이어 붙임 + text = re.sub(r"(?<=\d,\d)
(?=\d{2})", "", text) return {_canon(t) for _, line in md_lines(text) for t in _NUM.findall(line)} @@ -499,6 +501,10 @@ def _flat(value) -> set[str]: return set() +# 절 안에서 아직 표로 안 올린 뒷항의 머리 — 그 앞까지만 결손 대조(1-2-4 5항 발생재 공제율 · 6항 강관배관 부자재율) +UNBUILT = {"1-2-4": "5\\. 발생재의 처리"} + + def check_body(files: dict[str, dict]) -> list[str]: """표마다 허구 · 절마다 결손.""" out, by_section = [], {} @@ -530,6 +536,9 @@ def check_body(files: dict[str, dict]) -> list[str]: if md2 == md and ident2.startswith(ident + "-"): mine = mine | mine2 tables = tables + tables2 + cut = UNBUILT.get(ident) + if cut and cut in text: + text = text[: text.index(cut)] # 표로 안 올린 뒷항은 결손 대조에서 뺌 table_text = "\n".join(line for line in text.split("\n") if line.lstrip().startswith("|")) lack = numbers_in(table_text) - mine if lack: