feat(b08): 건설 형태 미판정 166 → 151 — 품 단위·자재 소요표·장비 사용시간 잣대
브레인 B18 ②. 잣대는 원문 ↔ 마스터 어긋남 건수. - 판정 셋 더함(`_FormsConst`) · 칸에 `인/ton`·`인/개소` — **그 단위당 사람 몫**이라 소요량 표(13-1-1 플랜트 배관 여덟) · 머리에 「품명·명칭」+「단위」 — 자재 소요량 표 · 머리에 「사용시간」 — 장비를 몇 시간 쓰는지 적은 소요량 표(13-9-1 수중펌프) - ⚠ 산림 미판정 0 그대로 — 건설 층은 산림이 못 가렸을 때만 돎 - 남은 151 갈래: 표지 없음 77 · 머리 두 단 63 · 구간 6 · 원문이 품을 안 적음 5 - 건설 밑수 미확보 438 → 448(새로 판정된 표가 밑수 셈에 들어온 만큼) - 전체 시험 2,445 통과 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
This commit is contained in:
@@ -188,7 +188,19 @@ def judged_const_form(table: dict[str, Any], _twice: bool = False) -> tuple[str,
|
||||
if nums and all(0 < n <= 1 for n in nums):
|
||||
return "coefficient", "현장조건별 값이 모두 1 이하 — 작업효율·계수표"
|
||||
|
||||
# ⑰ 머리가 두 단인 표 — **위 단을 버리지 않고 아래 단을 머리에 더해** 한 번 더 본다.
|
||||
# ⑰ 품 단위가 칸에 적힌 표 — `인/ton`·`인/개소` 는 **그 단위당 사람 몫**이라 소요량 표다
|
||||
if found := next((c for c in _cells(table) if _PERSON_PER_RE.search(_squeeze(c))), None):
|
||||
return "requirement", f"'{_squeeze(found)[:12]}' — 단위당 사람 몫"
|
||||
|
||||
# ⑱ 머리에 이름 칸과 단위 칸이 함께 — 자재 소요량 표(`품명 | 규격 | 단위 | 수량`)
|
||||
if any(h in ("품명", "명칭", "자재명") for h in headers) and any("단위" in h for h in headers):
|
||||
return "requirement", "머리에 '품명'+'단위' — 자재 소요량 표"
|
||||
|
||||
# ⑲ 머리에 「사용시간」 — 장비를 몇 시간 쓰는지 적은 **소요량** 표(13-9-1 수중펌프 설치)
|
||||
if any("사용시간" in h for h in headers):
|
||||
return "requirement", "머리에 '사용시간' — 장비 소요시간"
|
||||
|
||||
# ⑳ 머리가 두 단인 표 — **위 단을 버리지 않고 아래 단을 머리에 더해** 한 번 더 본다.
|
||||
# ⚠ 평탄화가 아니다(위 단에 밑수·갈래가 든다) · 한 번만 되본다(두 단이 셋이 되진 않는다).
|
||||
if not _twice and (sub := _sub_header_row(table)):
|
||||
merged = {
|
||||
@@ -210,6 +222,8 @@ _TIME_ROW_RE = re.compile(r"시간\(|\(분\)|사이클|주기\(")
|
||||
_AMOUNT_ROW_RE = re.compile(r"사용량|소요량|사용수량")
|
||||
#: 조건별 계수표 머리 — 「현장조건」·「작업조건」·「토질명」으로 갈리고 값이 1 이하인 표(작업효율 E).
|
||||
_CONDITION_RE = re.compile(r"현장조건|작업조건|토질명|토질별작업|시공조건")
|
||||
#: 「인/ton」·「인/개소」 꼴 — 그 단위당 사람 몫이라 품 표다.
|
||||
_PERSON_PER_RE = re.compile(r"인/(?:ton|톤|개소|개|매|본|㎡|㎥|m|km|대|조|식)")
|
||||
#: 다짐 기준표 머리 — 두께·횟수·규격을 정한 시방 기준.
|
||||
_COMPACT_RE = re.compile(r"다짐두께|다짐횟수|다짐기계|다짐")
|
||||
|
||||
|
||||
@@ -7284,7 +7284,7 @@
|
||||
"name_ko": "형태 미판정 표",
|
||||
"summary": "생산량형인지 소요량형인지 못 정한 표.",
|
||||
"shape": "list",
|
||||
"rows": 166,
|
||||
"rows": 151,
|
||||
"columns": [
|
||||
{
|
||||
"key": "pum_table_id",
|
||||
@@ -7340,7 +7340,7 @@
|
||||
"name_ko": "밑수 미확보 표",
|
||||
"summary": "기준 수량을 못 찾은 표.",
|
||||
"shape": "list",
|
||||
"rows": 438,
|
||||
"rows": 448,
|
||||
"columns": [
|
||||
{
|
||||
"key": "pum_table_id",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"dataset_id": "data_work_item_master_manifest",
|
||||
"generated_at": "2026-09-18T14:37:31+09:00",
|
||||
"generated_at": "2026-09-18T16:51:53+09:00",
|
||||
"built_by": "B08_Quantity/B08_Quantity_Build_WorkItemMaster.py",
|
||||
"source": {
|
||||
"dataset_id": "pum_forest",
|
||||
@@ -12,7 +12,7 @@
|
||||
"files": [
|
||||
{
|
||||
"file": "work_item_master_2026-01-01.json",
|
||||
"sha256": "eba4d71093f730296ff74de519949e8bfb573fea129b45b9be31b763db20307a",
|
||||
"sha256": "784464a30f59368e90c729ed3fcdf18a564c3a72355504ac2bee31a2c41aa82f",
|
||||
"size_bytes": 1095122
|
||||
},
|
||||
{
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"dataset_id": "data_work_item_master_manifest",
|
||||
"generated_at": "2026-09-18T14:38:23+09:00",
|
||||
"generated_at": "2026-09-18T16:52:46+09:00",
|
||||
"built_by": "B08_Quantity/B08_Quantity_Build_WorkItemMaster.py",
|
||||
"source": {
|
||||
"dataset_id": "pum_const",
|
||||
@@ -12,18 +12,18 @@
|
||||
"files": [
|
||||
{
|
||||
"file": "const_work_item_master_2026-01-01.json",
|
||||
"sha256": "717ed8edf3aa8f0ecf38634f28ae0ed8c7f47bffbe3a4ede8af6a279396d9933",
|
||||
"size_bytes": 4730739
|
||||
"sha256": "15ad4b6948ca6e720f8993ab776cf5921b1dc9c75e56e06792bc4f73e0041629",
|
||||
"size_bytes": 4730145
|
||||
},
|
||||
{
|
||||
"file": "const_form_undetermined_2026-01-01.json",
|
||||
"sha256": "efda17341aa6fbf4b51f7ce84a34de803256cb8f02b0facadfdb3e047c06cf69",
|
||||
"size_bytes": 99099
|
||||
"sha256": "83a0f02edfe4e82ac987639596a054aeb068df2db76833ee51eced78187df366",
|
||||
"size_bytes": 89561
|
||||
},
|
||||
{
|
||||
"file": "const_basis_missing_2026-01-01.json",
|
||||
"sha256": "1cc0da818a26917bedeeae714ae9b39ea8d64fd38099c0480df0491372e35ea4",
|
||||
"size_bytes": 115094
|
||||
"sha256": "dedd132b16c97fb358f6ce7c39657e8f08b673e1b75ae702123d2e8331276a67",
|
||||
"size_bytes": 117598
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -2433,6 +2433,20 @@
|
||||
"line": 156,
|
||||
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1641",
|
||||
"section": "13-1 플랜트 배관13-1-1 플랜트 배관 설치('92, '03년 보완)",
|
||||
"pum_form": "requirement",
|
||||
"line": 163,
|
||||
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1642",
|
||||
"section": "기계설비부문 제13장 플랜트설비공사",
|
||||
"pum_form": "requirement",
|
||||
"line": 8,
|
||||
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1643",
|
||||
"section": "기계설비부문 제13장 플랜트설비공사",
|
||||
@@ -2447,6 +2461,13 @@
|
||||
"line": 53,
|
||||
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1645",
|
||||
"section": "기계설비부문 제13장 플랜트설비공사",
|
||||
"pum_form": "requirement",
|
||||
"line": 67,
|
||||
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1646",
|
||||
"section": "기계설비부문 제13장 플랜트설비공사",
|
||||
@@ -2454,6 +2475,20 @@
|
||||
"line": 98,
|
||||
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1647",
|
||||
"section": "기계설비부문 제13장 플랜트설비공사",
|
||||
"pum_form": "requirement",
|
||||
"line": 126,
|
||||
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1648",
|
||||
"section": "기계설비부문 제13장 플랜트설비공사",
|
||||
"pum_form": "requirement",
|
||||
"line": 142,
|
||||
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1649",
|
||||
"section": "기계설비부문 제13장 플랜트설비공사",
|
||||
@@ -2468,6 +2503,13 @@
|
||||
"line": 187,
|
||||
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1651",
|
||||
"section": "기계설비부문 제13장 플랜트설비공사",
|
||||
"pum_form": "requirement",
|
||||
"line": 200,
|
||||
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1652",
|
||||
"section": "기계설비부문 제13장 플랜트설비공사",
|
||||
@@ -2475,6 +2517,20 @@
|
||||
"line": 231,
|
||||
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1653",
|
||||
"section": "기계설비부문 제13장 플랜트설비공사",
|
||||
"pum_form": "requirement",
|
||||
"line": 256,
|
||||
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1654",
|
||||
"section": "기계설비부문 제13장 플랜트설비공사",
|
||||
"pum_form": "requirement",
|
||||
"line": 275,
|
||||
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1656",
|
||||
"section": "13-1-2 관만곡(Pipe Bending) 설치",
|
||||
@@ -2916,6 +2972,13 @@
|
||||
"line": 3434,
|
||||
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1866",
|
||||
"section": "84313-9-3 산기장치 설치('04년 신설)",
|
||||
"pum_form": "requirement",
|
||||
"line": 3446,
|
||||
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1867",
|
||||
"section": "13-9-4 오수처리시설 설치('04년 신설)",
|
||||
@@ -2923,6 +2986,13 @@
|
||||
"line": 3458,
|
||||
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1868",
|
||||
"section": "13-9-4 오수처리시설 설치('04년 신설)",
|
||||
"pum_form": "requirement",
|
||||
"line": 3471,
|
||||
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1869",
|
||||
"section": "84413-10 운반기계설비13-10-1 OPEN BELT CONVEYOR 설치('92년 보완)Belt폭과 길이에 따른 Belt Conveyor 설치품은 아래의 산출식에 의한다.",
|
||||
|
||||
@@ -3614,278 +3614,6 @@
|
||||
],
|
||||
"reason": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1641",
|
||||
"section": "13-1-1 플랜트 배관 설치",
|
||||
"headers": [
|
||||
"배 관 구 분"
|
||||
],
|
||||
"first_rows": [
|
||||
[
|
||||
"옥 내 배 관",
|
||||
"",
|
||||
"",
|
||||
"옥 외 배 관",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
[
|
||||
"나 사 식",
|
||||
"",
|
||||
"인/ ton",
|
||||
"용 접 식",
|
||||
"",
|
||||
"",
|
||||
"나 사 식",
|
||||
"",
|
||||
"",
|
||||
"인/ ton"
|
||||
]
|
||||
],
|
||||
"reason": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1642",
|
||||
"section": "13-1-1 플랜트 배관 설치",
|
||||
"headers": [
|
||||
"배 관 구 분"
|
||||
],
|
||||
"first_rows": [
|
||||
[
|
||||
"옥 내 배 관",
|
||||
"",
|
||||
"",
|
||||
"옥 외 배 관",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
[
|
||||
"나 사 식",
|
||||
"",
|
||||
"인/ ton",
|
||||
"용 접 식",
|
||||
"",
|
||||
"",
|
||||
"나 사 식",
|
||||
"",
|
||||
"",
|
||||
"인/ ton"
|
||||
]
|
||||
],
|
||||
"reason": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1645",
|
||||
"section": "13-1-1 플랜트 배관 설치",
|
||||
"headers": [
|
||||
"배 관 구 분"
|
||||
],
|
||||
"first_rows": [
|
||||
[
|
||||
"옥 내 배 관",
|
||||
"",
|
||||
"",
|
||||
"옥 외 배 관",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
[
|
||||
"나 사 식",
|
||||
"",
|
||||
"인/ ton",
|
||||
"용 접 식",
|
||||
"",
|
||||
"",
|
||||
"나 사 식",
|
||||
"",
|
||||
"",
|
||||
"인/ ton"
|
||||
]
|
||||
],
|
||||
"reason": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1647",
|
||||
"section": "13-1-1 플랜트 배관 설치",
|
||||
"headers": [
|
||||
"배 관 구 분"
|
||||
],
|
||||
"first_rows": [
|
||||
[
|
||||
"옥 내 배 관",
|
||||
"",
|
||||
"",
|
||||
"옥 외 배 관",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
[
|
||||
"나 사 식",
|
||||
"",
|
||||
"인/ ton",
|
||||
"용 접 식",
|
||||
"",
|
||||
"",
|
||||
"나 사 식",
|
||||
"",
|
||||
"",
|
||||
"인/ ton"
|
||||
]
|
||||
],
|
||||
"reason": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1648",
|
||||
"section": "13-1-1 플랜트 배관 설치",
|
||||
"headers": [
|
||||
"배 관 구 분"
|
||||
],
|
||||
"first_rows": [
|
||||
[
|
||||
"옥 내 배 관",
|
||||
"",
|
||||
"",
|
||||
"옥 외 배 관",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
[
|
||||
"나 사 식",
|
||||
"",
|
||||
"인/ ton",
|
||||
"용 접 식",
|
||||
"",
|
||||
"",
|
||||
"나 사 식",
|
||||
"",
|
||||
"",
|
||||
"인/ ton"
|
||||
]
|
||||
],
|
||||
"reason": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1651",
|
||||
"section": "13-1-1 플랜트 배관 설치",
|
||||
"headers": [
|
||||
"배 관 구 분"
|
||||
],
|
||||
"first_rows": [
|
||||
[
|
||||
"옥 내 배 관",
|
||||
"",
|
||||
"",
|
||||
"옥 외 배 관",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
[
|
||||
"나 사 식",
|
||||
"",
|
||||
"인/ ton",
|
||||
"용 접 식",
|
||||
"",
|
||||
"",
|
||||
"나 사 식",
|
||||
"",
|
||||
"",
|
||||
"인/ ton"
|
||||
]
|
||||
],
|
||||
"reason": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1653",
|
||||
"section": "13-1-1 플랜트 배관 설치",
|
||||
"headers": [
|
||||
"배 관 구 분"
|
||||
],
|
||||
"first_rows": [
|
||||
[
|
||||
"옥 내 배 관",
|
||||
"",
|
||||
"",
|
||||
"옥 외 배 관",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
[
|
||||
"나 사 식",
|
||||
"",
|
||||
"인/ ton",
|
||||
"용 접 식",
|
||||
"",
|
||||
"",
|
||||
"나 사 식",
|
||||
"",
|
||||
"",
|
||||
"인/ ton"
|
||||
]
|
||||
],
|
||||
"reason": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1654",
|
||||
"section": "13-1-1 플랜트 배관 설치",
|
||||
"headers": [
|
||||
"배 관 구 분"
|
||||
],
|
||||
"first_rows": [
|
||||
[
|
||||
"옥 내 배 관",
|
||||
"",
|
||||
"",
|
||||
"옥 외 배 관",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
[
|
||||
"나 사 식",
|
||||
"",
|
||||
"인/ ton",
|
||||
"용 접 식",
|
||||
"",
|
||||
"",
|
||||
"나 사 식",
|
||||
"",
|
||||
"",
|
||||
"인/ ton"
|
||||
]
|
||||
],
|
||||
"reason": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1655",
|
||||
"section": "13-1-1 플랜트 배관 설치",
|
||||
@@ -4696,185 +4424,6 @@
|
||||
],
|
||||
"reason": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1719",
|
||||
"section": "13-4-3 STORAGE TANK",
|
||||
"headers": [
|
||||
"품 명",
|
||||
"규 격",
|
||||
"단위",
|
||||
"용 량 별"
|
||||
],
|
||||
"first_rows": [
|
||||
[
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"3,000",
|
||||
"5,000",
|
||||
"7,000",
|
||||
"10,000(㎥)"
|
||||
],
|
||||
[
|
||||
"S t e e l p l a t e p i p e 〃 C h a n n e l A n g l e 전 기 용 접 봉 〃 〃 모 래 화 목 광 명 단 페 인 트 보 일 유 산 소 아 세 틸 렌 시 너",
|
||||
"4.5t×4'×8' 6t×5'×20' 16t×5'×20' 14t×5'×20' 12t×5'×20' 10t×5'×20' 8t×5'×20' 11t×5'×20' 9t×5'×20' 7t×5'×20' ø12〃 ø10〃 125×65×6 200×90×5 75×75×9 ø4×440 ø3.2×350 ø2.5×330 외부(1회) 외부(2회)",
|
||||
"매 〃 〃 〃 〃 〃 〃 매 〃 〃 ㎏ 〃 〃 〃 〃 개 〃 〃 ㎥ ㎏ ℓ 〃 〃 〃 〃 〃",
|
||||
"103 94 - - - - 10 - - 10 2,920 6,040 2,360 610 4,450 6,790 1,705 48 50 109 134 37 28,728 15,048 37",
|
||||
"147 97 - - - 12 - 12 12 12 4,250 - 8,780 2,580 740 8,359 9,960 2,660 128 100 140 160 45 43,092 22,572 45",
|
||||
"220 115 15 15 15 15 15 - - - 11,280 - 14,620 2,350 1,040 11,201 12,989 3,647 170 150 186 213 60 67,830 35,530 60",
|
||||
"295 149 17 17 17 17 17 - - - 11,280 - 14,620 2,350 1,040 12,834 18,176 4,826 206 200 225 258 73 80,997 42,427 73"
|
||||
]
|
||||
],
|
||||
"reason": "단위·밑수·직종 표지 없음 · 값은 있는데 표지가 없음 — 사람이 봐야 함"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1775",
|
||||
"section": "13-6-3 수문 제작",
|
||||
"headers": [
|
||||
"품 명",
|
||||
"규 격",
|
||||
"단 위",
|
||||
"수 문"
|
||||
],
|
||||
"first_rows": [
|
||||
[
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"Tainter",
|
||||
"Roller"
|
||||
],
|
||||
[
|
||||
"산 소 아 세 틸 렌 함 석 용 접 봉 모 래 Nozzle 광 명 단 전 력",
|
||||
"6,000ℓ입 4,500ℓ입 #31×3'×6' 4ø×350ℓ",
|
||||
"병 병 매 ㎏ ㎥ 개 ℓ ㎾h",
|
||||
"3.76 3.23 0.71 24.99 0.262 0.5 2.5 370",
|
||||
"3.0 2.58 0.62 20.0 0.242 0.5 2.2 310"
|
||||
]
|
||||
],
|
||||
"reason": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1781",
|
||||
"section": "13-6-4 수문 설치",
|
||||
"headers": [
|
||||
"품 명",
|
||||
"규 격",
|
||||
"단 위",
|
||||
"Tainter",
|
||||
"Roller"
|
||||
],
|
||||
"first_rows": [
|
||||
[
|
||||
"산 소 아 세 틸 렌 용 접 봉 코 크 스 광 명 단 페 인 트",
|
||||
"6,000ℓ입 4,500ℓ입 4ø×350ℓ 에나멜",
|
||||
"병 병 ㎏ ㎏ ℓ ℓ",
|
||||
"0.53 0.45 6.2 - 2.5 5.0",
|
||||
"0.46 0.39 5.4 27 2.2 4.4"
|
||||
]
|
||||
],
|
||||
"reason": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1862",
|
||||
"section": "13-9-1 수중펌프 설치",
|
||||
"headers": [
|
||||
"장 비 명",
|
||||
"규 격",
|
||||
"사용시간(hr)"
|
||||
],
|
||||
"first_rows": [
|
||||
[
|
||||
"",
|
||||
"",
|
||||
"7.5㎾",
|
||||
"15㎾",
|
||||
"30㎾"
|
||||
],
|
||||
[
|
||||
"크 레 인",
|
||||
"30톤",
|
||||
"4",
|
||||
"4",
|
||||
"4"
|
||||
]
|
||||
],
|
||||
"reason": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1864",
|
||||
"section": "13-9-2 모노레일 설치",
|
||||
"headers": [
|
||||
"장 비 명",
|
||||
"규 격",
|
||||
"사용시간(hr)"
|
||||
],
|
||||
"first_rows": [
|
||||
[
|
||||
"트 럭 탑 재 형 크 레 인",
|
||||
"5톤",
|
||||
"1.3"
|
||||
],
|
||||
[
|
||||
"용 접 기",
|
||||
"15KVA",
|
||||
"7.6"
|
||||
]
|
||||
],
|
||||
"reason": "단위·밑수·직종 표지 없음 · 값은 있는데 표지가 없음 — 사람이 봐야 함"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1866",
|
||||
"section": "13-9-3 산기장치 설치",
|
||||
"headers": [
|
||||
"장 비 명",
|
||||
"규 격",
|
||||
"단 위",
|
||||
"사용시간(hr)"
|
||||
],
|
||||
"first_rows": [
|
||||
[
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"산기 분기관 제작",
|
||||
"산기장치 설치"
|
||||
],
|
||||
[
|
||||
"알 곤 용 접 기",
|
||||
"300Amp",
|
||||
"대/개",
|
||||
"0.285",
|
||||
"0.285"
|
||||
]
|
||||
],
|
||||
"reason": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1868",
|
||||
"section": "13-9-4 오수처리시설 설치",
|
||||
"headers": [
|
||||
"장 비 명",
|
||||
"규 격",
|
||||
"단 위",
|
||||
"사용시간(hr)"
|
||||
],
|
||||
"first_rows": [
|
||||
[
|
||||
"크 레 인",
|
||||
"50톤",
|
||||
"대/조",
|
||||
"8"
|
||||
],
|
||||
[
|
||||
"살 수 차",
|
||||
"5,500ℓ",
|
||||
"대/조",
|
||||
"12"
|
||||
]
|
||||
],
|
||||
"reason": "단위·밑수·직종 표지 없음 · 값은 있는데 표지가 없음 — 사람이 봐야 함"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "C1890",
|
||||
"section": "13-11-4 가설자재 손료율",
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"effective_date": "2026-01-01",
|
||||
"pum_edition": "2026-01-01",
|
||||
"toc_edition": "2026-01-01",
|
||||
"generated_at": "2026-09-18T14:38:23+09:00",
|
||||
"generated_at": "2026-09-18T16:52:46+09:00",
|
||||
"dataset_version": {
|
||||
"dataset_id": "pum_const",
|
||||
"effective_date": "2026-01-01",
|
||||
@@ -38,10 +38,10 @@
|
||||
"tables_total": 2274,
|
||||
"tables_attached": 2274,
|
||||
"tables_orphan": 0,
|
||||
"form_undetermined": 166,
|
||||
"form_undetermined": 151,
|
||||
"basis_found": 713,
|
||||
"basis_missing": 438,
|
||||
"basis_absent_in_source": 436,
|
||||
"basis_missing": 448,
|
||||
"basis_absent_in_source": 446,
|
||||
"basis_unparsed": 2,
|
||||
"basis_grouped": 69,
|
||||
"axis_roles": {
|
||||
@@ -51,8 +51,8 @@
|
||||
"empty": 26
|
||||
},
|
||||
"keys_newly_issued": 0,
|
||||
"variant_keys_newly_issued": 0,
|
||||
"variant_keys": 591,
|
||||
"variant_keys_newly_issued": 1,
|
||||
"variant_keys": 592,
|
||||
"toc_duplicate_rows": 0,
|
||||
"toc_corrections": 0
|
||||
},
|
||||
@@ -151543,8 +151543,8 @@
|
||||
"pum_table_id": "C1641",
|
||||
"section": "13-1-1 플랜트 배관 설치",
|
||||
"source_line": 163,
|
||||
"pum_form": "undetermined",
|
||||
"form_basis": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음",
|
||||
"pum_form": "requirement",
|
||||
"form_basis": "건설 꼴 — '인/ton' — 단위당 사람 몫",
|
||||
"basis_quantity": null,
|
||||
"basis_unit": null,
|
||||
"basis_source": null,
|
||||
@@ -151664,8 +151664,8 @@
|
||||
"pum_table_id": "C1642",
|
||||
"section": "13-1-1 플랜트 배관 설치",
|
||||
"source_line": 8,
|
||||
"pum_form": "undetermined",
|
||||
"form_basis": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음",
|
||||
"pum_form": "requirement",
|
||||
"form_basis": "건설 꼴 — '인/ton' — 단위당 사람 몫",
|
||||
"basis_quantity": null,
|
||||
"basis_unit": null,
|
||||
"basis_source": null,
|
||||
@@ -152297,8 +152297,8 @@
|
||||
"pum_table_id": "C1645",
|
||||
"section": "13-1-1 플랜트 배관 설치",
|
||||
"source_line": 67,
|
||||
"pum_form": "undetermined",
|
||||
"form_basis": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음",
|
||||
"pum_form": "requirement",
|
||||
"form_basis": "건설 꼴 — '인/ton' — 단위당 사람 몫",
|
||||
"basis_quantity": null,
|
||||
"basis_unit": null,
|
||||
"basis_source": null,
|
||||
@@ -152939,8 +152939,8 @@
|
||||
"pum_table_id": "C1647",
|
||||
"section": "13-1-1 플랜트 배관 설치",
|
||||
"source_line": 126,
|
||||
"pum_form": "undetermined",
|
||||
"form_basis": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음",
|
||||
"pum_form": "requirement",
|
||||
"form_basis": "건설 꼴 — '인/ton' — 단위당 사람 몫",
|
||||
"basis_quantity": null,
|
||||
"basis_unit": null,
|
||||
"basis_source": null,
|
||||
@@ -153096,8 +153096,8 @@
|
||||
"pum_table_id": "C1648",
|
||||
"section": "13-1-1 플랜트 배관 설치",
|
||||
"source_line": 142,
|
||||
"pum_form": "undetermined",
|
||||
"form_basis": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음",
|
||||
"pum_form": "requirement",
|
||||
"form_basis": "건설 꼴 — '인/ton' — 단위당 사람 몫",
|
||||
"basis_quantity": null,
|
||||
"basis_unit": null,
|
||||
"basis_source": null,
|
||||
@@ -153717,8 +153717,8 @@
|
||||
"pum_table_id": "C1651",
|
||||
"section": "13-1-1 플랜트 배관 설치",
|
||||
"source_line": 200,
|
||||
"pum_form": "undetermined",
|
||||
"form_basis": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음",
|
||||
"pum_form": "requirement",
|
||||
"form_basis": "건설 꼴 — '인/ton' — 단위당 사람 몫",
|
||||
"basis_quantity": null,
|
||||
"basis_unit": null,
|
||||
"basis_source": null,
|
||||
@@ -154326,8 +154326,8 @@
|
||||
"pum_table_id": "C1653",
|
||||
"section": "13-1-1 플랜트 배관 설치",
|
||||
"source_line": 256,
|
||||
"pum_form": "undetermined",
|
||||
"form_basis": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음",
|
||||
"pum_form": "requirement",
|
||||
"form_basis": "건설 꼴 — '인/ton' — 단위당 사람 몫",
|
||||
"basis_quantity": null,
|
||||
"basis_unit": null,
|
||||
"basis_source": null,
|
||||
@@ -154519,8 +154519,8 @@
|
||||
"pum_table_id": "C1654",
|
||||
"section": "13-1-1 플랜트 배관 설치",
|
||||
"source_line": 275,
|
||||
"pum_form": "undetermined",
|
||||
"form_basis": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음",
|
||||
"pum_form": "requirement",
|
||||
"form_basis": "건설 꼴 — '인/ton' — 단위당 사람 몫",
|
||||
"basis_quantity": null,
|
||||
"basis_unit": null,
|
||||
"basis_source": null,
|
||||
@@ -165993,8 +165993,8 @@
|
||||
"pum_table_id": "C1719",
|
||||
"section": "13-4-3 STORAGE TANK",
|
||||
"source_line": 1592,
|
||||
"pum_form": "undetermined",
|
||||
"form_basis": "단위·밑수·직종 표지 없음 · 값은 있는데 표지가 없음 — 사람이 봐야 함",
|
||||
"pum_form": "requirement",
|
||||
"form_basis": "건설 꼴 — 머리에 '품명'+'단위' — 자재 소요량 표",
|
||||
"basis_quantity": 1.0,
|
||||
"basis_unit": "대",
|
||||
"basis_source": "본문",
|
||||
@@ -171123,8 +171123,8 @@
|
||||
"pum_table_id": "C1775",
|
||||
"section": "13-6-3 수문 제작",
|
||||
"source_line": 2353,
|
||||
"pum_form": "undetermined",
|
||||
"form_basis": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음",
|
||||
"pum_form": "requirement",
|
||||
"form_basis": "건설 꼴 — 머리에 '품명'+'단위' — 자재 소요량 표",
|
||||
"basis_quantity": 1.0,
|
||||
"basis_unit": "ton",
|
||||
"basis_source": "본문",
|
||||
@@ -171649,8 +171649,8 @@
|
||||
"pum_table_id": "C1781",
|
||||
"section": "13-6-4 수문 설치",
|
||||
"source_line": 2459,
|
||||
"pum_form": "undetermined",
|
||||
"form_basis": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음",
|
||||
"pum_form": "requirement",
|
||||
"form_basis": "건설 꼴 — 머리에 '품명'+'단위' — 자재 소요량 표",
|
||||
"basis_quantity": 1.0,
|
||||
"basis_unit": "ton",
|
||||
"basis_source": "본문",
|
||||
@@ -176627,8 +176627,8 @@
|
||||
"pum_table_id": "C1862",
|
||||
"section": "13-9-1 수중펌프 설치",
|
||||
"source_line": 3403,
|
||||
"pum_form": "undetermined",
|
||||
"form_basis": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음",
|
||||
"pum_form": "requirement",
|
||||
"form_basis": "건설 꼴 — 머리에 '사용시간' — 장비 소요시간",
|
||||
"basis_quantity": 1.0,
|
||||
"basis_unit": "대",
|
||||
"basis_source": "본문",
|
||||
@@ -176640,7 +176640,11 @@
|
||||
"formula_rows": [],
|
||||
"special_glyphs": [],
|
||||
"capacity_formula_here": false,
|
||||
"variant_key": [],
|
||||
"variant_key": [
|
||||
"7.5㎾",
|
||||
"15㎾",
|
||||
"30㎾"
|
||||
],
|
||||
"notes": [
|
||||
"[주] 본 장비는 펌프설치시 기본적인 장비이므로 현장여건, 작업조건 등에 따라 필요한 장비를 별도 계상한다."
|
||||
],
|
||||
@@ -176767,8 +176771,8 @@
|
||||
"pum_table_id": "C1864",
|
||||
"section": "13-9-2 모노레일 설치",
|
||||
"source_line": 3425,
|
||||
"pum_form": "undetermined",
|
||||
"form_basis": "단위·밑수·직종 표지 없음 · 값은 있는데 표지가 없음 — 사람이 봐야 함",
|
||||
"pum_form": "requirement",
|
||||
"form_basis": "건설 꼴 — 머리에 '사용시간' — 장비 소요시간",
|
||||
"basis_quantity": 1.0,
|
||||
"basis_unit": "ton",
|
||||
"basis_source": "본문",
|
||||
@@ -176884,8 +176888,8 @@
|
||||
"pum_table_id": "C1866",
|
||||
"section": "13-9-3 산기장치 설치",
|
||||
"source_line": 3446,
|
||||
"pum_form": "undetermined",
|
||||
"form_basis": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음",
|
||||
"pum_form": "requirement",
|
||||
"form_basis": "건설 꼴 — 머리에 '사용시간' — 장비 소요시간",
|
||||
"basis_quantity": null,
|
||||
"basis_unit": null,
|
||||
"basis_source": null,
|
||||
@@ -176897,7 +176901,10 @@
|
||||
"formula_rows": [],
|
||||
"special_glyphs": [],
|
||||
"capacity_formula_here": false,
|
||||
"variant_key": [],
|
||||
"variant_key": [
|
||||
"산기 분기관 제작",
|
||||
"산기장치 설치"
|
||||
],
|
||||
"notes": [
|
||||
"[주] 본 장비는 산기 분기관 제작 및 산기장치 설치시 일반적인 장비이므로 현장여건, 작업조건 등에 따라 필요한 장비를 별도 계상한다."
|
||||
],
|
||||
@@ -176942,7 +176949,8 @@
|
||||
"division": "기계설비부문",
|
||||
"variant_keys": [
|
||||
"산 기 분 기 관 제 작",
|
||||
"분기관 및 산기장치 설치"
|
||||
"분기관 및 산기장치 설치",
|
||||
"산기장치 설치"
|
||||
],
|
||||
"work_item_key": "CW-01201",
|
||||
"variants": [
|
||||
@@ -176955,6 +176963,11 @@
|
||||
"variant_key": "02",
|
||||
"name": "분기관 및 산기장치 설치",
|
||||
"name_clean": "분기관 및 산기장치 설치"
|
||||
},
|
||||
{
|
||||
"variant_key": "03",
|
||||
"name": "산기장치 설치",
|
||||
"name_clean": "산기장치 설치"
|
||||
}
|
||||
],
|
||||
"toc_code": "CP-04-13-09-03",
|
||||
@@ -177027,8 +177040,8 @@
|
||||
"pum_table_id": "C1868",
|
||||
"section": "13-9-4 오수처리시설 설치",
|
||||
"source_line": 3471,
|
||||
"pum_form": "undetermined",
|
||||
"form_basis": "단위·밑수·직종 표지 없음 · 값은 있는데 표지가 없음 — 사람이 봐야 함",
|
||||
"pum_form": "requirement",
|
||||
"form_basis": "건설 꼴 — 머리에 '사용시간' — 장비 소요시간",
|
||||
"basis_quantity": null,
|
||||
"basis_unit": null,
|
||||
"basis_source": null,
|
||||
|
||||
@@ -11997,10 +11997,11 @@
|
||||
}
|
||||
},
|
||||
"CW-01201": {
|
||||
"next_serial": 3,
|
||||
"next_serial": 4,
|
||||
"slots": {
|
||||
"산기분기관제작": "01",
|
||||
"분기관및산기장치설치": "02"
|
||||
"분기관및산기장치설치": "02",
|
||||
"산기장치설치": "03"
|
||||
}
|
||||
},
|
||||
"CW-01291": {
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"effective_date": "2026-01-01",
|
||||
"pum_edition": "2026-01-01",
|
||||
"toc_edition": "산림청고시제2025-82호",
|
||||
"generated_at": "2026-09-18T14:37:31+09:00",
|
||||
"generated_at": "2026-09-18T16:51:53+09:00",
|
||||
"dataset_version": {
|
||||
"dataset_id": "pum_forest",
|
||||
"effective_date": "2026-01-01",
|
||||
|
||||
@@ -85,7 +85,7 @@ def test_건설_공종_축도_같은_길(client: TestClient) -> None:
|
||||
# 2026-09-18 랩탑 메인 — 건설 표 모양 판정층으로 미판정 891 → 276 이 되며 품 표가 늘어 줄도 늘었다.
|
||||
# 2026-09-18 합침 — 다른 창이 원문 md 의 뭉친 줄·표를 더 풀어(건설 표 2,202 → 2,270) 공종·줄이 또 늘었다.
|
||||
# 값이 바뀐 것이 아니라 **원문에 있던 표가 더 읽힌 것**이다(직접공사비 5,983,724 그대로).
|
||||
assert table["stats"] == {"work_items": 1046, "units": 1502} and table["total"] == 1502
|
||||
assert table["stats"] == {"work_items": 1046, "units": 1503} and table["total"] == 1503
|
||||
assert sum(1 for r in table["rows"] if "#" in r["@id"]) > 0
|
||||
rows = table["rows"]
|
||||
assert all(r["@id"].startswith("CW-") for r in rows)
|
||||
|
||||
Reference in New Issue
Block a user