feat(tester): 기계 규격 437 줄을 원문과 맞대기 시작 · 기초단가 어긋남 61 → 24 로 가름(원문 부재 / 잣대 못 알아봄)

**① 기계 못 보는 자리 25 → 13**
  · **규격을 맞대기 시작** — 원문 손료표 「규 격」 칸을 읽어 손료·가격·연료 세 벌에 다 걸어 맞댐.
    **437 줄이 원문과 같음을 확인**(그 전엔 한 줄도 안 재던 칸). 토막이 코드 수와 안 맞는 줄은
    자료 값으로 갈음되니 지어 채우는 일 없음.
  · 「안 잰 칸」 아홉은 **원문 밖 말**이라 할 일 아님 칸으로 뺌 — 프로그램 이름(alias·rule_id) ·
    사람 메모(note) · 살림살이(parse_method) · 낳은 값(loss_coefficient_per_hour = 계 계수 ÷ 10⁷) ·
    자리 표시(source_section·section) · 원문 조건을 영어로 줄인 이름(exception·exclusion)

**② 기초단가 장부 49 줄을 두 갈래로 가르고 줄마다 사유·주인**
  · **원문 부재 32** — 값이 원문·원천에 없거나 원문 밖 말(㉮ 25 는 집계에서 뺌 · ㉰ 7 은 남김)
  · **잣대 못 알아봄 17** — 값은 원문에 있는데 전사·읽기가 못 가름 ⇒ 고치면 풀림
    – **랩탑 서브 15**: 9020 이어 표 일곱 · 8201 손료표 머리 뭉개짐 둘 · 양수기 7993-0020 셋 ·
      손료보정 `2510` 가름 · 5220·7995 계수 칸(PDF 에 있는지 확인)
    – **랩탑 메인 2**: 겸용 연료(`73.7+휘발유54.5` · `1.87㎾ 휘발유1.3`) 갈라 읽기
  ⇒ 할 일 **61 → 24**(㉯ 17 · ㉰ 7) · 할 일 아님 칸 34

**③ 랩탑 메인 것을 받아 다시 뽑음** — 건설 형태 미판정 196 → **175** · 밑수 확보 711 → **713** ·
  기계 값 바뀜 0 · 갈래 열쇠 장부는 합집합 209(내 CW-00326 · 랩탑 CW-00370 둘 다 살림)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QsGw1Dz9HmhuAxGisxmDPF
This commit is contained in:
2026-09-18 14:15:05 +09:00
co-authored by Claude Opus 5
parent 7f1b0ff8a7
commit 16883b1941
11 changed files with 2339 additions and 1349 deletions
@@ -2,11 +2,11 @@
"schema_version": "1.0",
"dataset_id": "mach_base",
"effective_date": "2026-01-01",
"generated_at": "2026-09-18T13:19:25+09:00",
"generated_at": "2026-09-18T14:02:50+09:00",
"sources": [
{
"path": "resources/knowledge/original/원가계산/건설공사_표준품셈/01_공통부문/제8장_건설기계.md",
"sha256": "b820290a56d7ebeed9bcdbb8128ccf6ecbaf5de6cc395b2efd8c75a4e99dbc72",
"sha256": "4234e47cc9a27841430d165b1eb63a42eadc572204832897521317d2addcca6f",
"role": "primary"
}
],
@@ -15105,7 +15105,7 @@
"source_tables": [
{
"section": "8-4 운전경비 산정('08, '09, '10, '11, '12, '13, '14, '15, '16, '17년 보완)8-4-1 [00]토공기계",
"line": 3735,
"line": 3786,
"headers": [
"분류번호",
"기계명",
@@ -15367,7 +15367,7 @@
},
{
"section": "8-4 운전경비 산정('08, '09, '10, '11, '12, '13, '14, '15, '16, '17년 보완)8-4-1 [00]토공기계",
"line": 3771,
"line": 3822,
"headers": [
"분류번호",
"기계명",
@@ -15597,7 +15597,7 @@
},
{
"section": "8-4-2 [10]다짐기계",
"line": 3803,
"line": 3854,
"headers": [
"분류번호",
"기계명",
@@ -15867,7 +15867,7 @@
},
{
"section": "8-4-3 [20]운반 및 하역기계('21년 보완)",
"line": 3840,
"line": 3891,
"headers": [
"분류번호",
"기계명",
@@ -16089,7 +16089,7 @@
},
{
"section": "8-4-3 [20]운반 및 하역기계('21년 보완)",
"line": 3871,
"line": 3922,
"headers": [
"분류번호",
"기계명",
@@ -16415,7 +16415,7 @@
},
{
"section": "8-4-4 [30]포장기계",
"line": 3915,
"line": 3966,
"headers": [
"분류번호",
"기계명",
@@ -16645,7 +16645,7 @@
},
{
"section": "8-4-5 [40]콘크리트기계",
"line": 3947,
"line": 3998,
"headers": [
"분류번호",
"기계명",
@@ -16699,7 +16699,7 @@
},
{
"section": "8-4-5 [40]콘크리트기계",
"line": 3957,
"line": 4008,
"headers": [
"분류번호",
"기계명",
@@ -16881,7 +16881,7 @@
},
{
"section": "8-4-6 [50]골재생산기계 등",
"line": 3983,
"line": 4034,
"headers": [
"분류번호",
"기계명",
@@ -16983,7 +16983,7 @@
},
{
"section": "8-4-6 [50]골재생산기계 등",
"line": 3999,
"line": 4050,
"headers": [
"분류번호",
"기계명",
@@ -17069,7 +17069,7 @@
},
{
"section": "8-4-7 [60]기초공사용 기계('21년 보완)",
"line": 4013,
"line": 4064,
"headers": [
"분류번호",
"기계명",
@@ -17251,7 +17251,7 @@
},
{
"section": "8-4-8 [70]기타기계('24년 보완)",
"line": 4039,
"line": 4090,
"headers": [
"분류번호",
"기계명",
@@ -17553,7 +17553,7 @@
},
{
"section": "8-4-8 [70]기타기계('24년 보완)",
"line": 4080,
"line": 4131,
"headers": [
"분류번호",
"기계명",
@@ -17711,7 +17711,7 @@
},
{
"section": "8-4-9 [90]해상기계(9010) 펌프준설선 ('10, '11년 보완)",
"line": 4111,
"line": 4162,
"headers": [
"명 칭",
"단위",
@@ -17879,7 +17879,7 @@
},
{
"section": "8-4-9 [90]해상기계(9010) 펌프준설선 ('10, '11년 보완)",
"line": 4124,
"line": 4175,
"headers": [
"명 칭",
"단위",
@@ -18020,7 +18020,7 @@
},
{
"section": "8-4-9 [90]해상기계(9010) 펌프준설선 ('10, '11년 보완)",
"line": 4137,
"line": 4188,
"headers": [
"명 칭",
"단위",
@@ -18110,7 +18110,7 @@
},
{
"section": "8-4-9 [90]해상기계(9010) 펌프준설선 ('10, '11년 보완)",
"line": 4147,
"line": 4198,
"headers": [
"명 칭",
"단위",
@@ -18186,7 +18186,7 @@
},
{
"section": "8-4-9 [90]해상기계(9010) 펌프준설선 ('10, '11년 보완)",
"line": 4158,
"line": 4209,
"headers": [
"명 칭",
"단위",
@@ -18258,7 +18258,7 @@
},
{
"section": "8-4-9 [90]해상기계(9010) 펌프준설선 ('10, '11년 보완)",
"line": 4168,
"line": 4219,
"headers": [
"명 칭",
"단위",
@@ -18306,7 +18306,7 @@
},
{
"section": "8-4-9 [90]해상기계(9010) 펌프준설선 ('10, '11년 보완)",
"line": 4178,
"line": 4229,
"headers": [
"명 칭",
"단위",
@@ -18480,7 +18480,7 @@
},
{
"section": "8-4-9 [90]해상기계(9010) 펌프준설선 ('10, '11년 보완)",
"line": 4190,
"line": 4241,
"headers": [
"명 칭",
"단위",
File diff suppressed because it is too large Load Diff
@@ -7552,7 +7552,7 @@
"name_ko": "갈래 열쇠 장부",
"summary": "공종 열쇠 아래 갈래마다 번호를 매긴 것. 사라진 갈래의 번호는 다시 쓰지 않는다.",
"shape": "map",
"rows": 208,
"rows": 209,
"columns": [
{
"key": "@key",
@@ -1,7 +1,7 @@
{
"schema_version": "1.0",
"dataset_id": "data_work_item_master_manifest",
"generated_at": "2026-09-18T13:27:21+09:00",
"generated_at": "2026-09-18T14:03:13+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": "170b13a97e07bec53f1ba361a8b89664b3c1d0330598ca69ae88debe94d3825b",
"sha256": "febd3791e3c930e849d1c96006221034bea8bacce198f16f69a377871c963dbb",
"size_bytes": 1095122
},
{
@@ -1,28 +1,28 @@
{
"schema_version": "1.0",
"dataset_id": "data_work_item_master_manifest",
"generated_at": "2026-09-18T13:28:12+09:00",
"generated_at": "2026-09-18T14:04:40+09:00",
"built_by": "B08_Quantity/B08_Quantity_Build_WorkItemMaster.py",
"source": {
"dataset_id": "pum_const",
"effective_date": "2026-01-01",
"sha256": "df4de0d8194bc0f30b4078dbfd4b50d3c59d38ee53225e0d8eb056e7b0da9f55",
"sha256": "34ab95d783c4922b21da428b4bca5743247a86ab606a84860940d6faa6249a28",
"file": "pum_const_2026.json"
},
"files": [
{
"file": "const_work_item_master_2026-01-01.json",
"sha256": "f2e53cf68ea6d051d02aefea798d9da380d893a99b6502885bba3678b5c68616",
"size_bytes": 4718431
"sha256": "51ab45d186c2093fe9cc829c30e01dae9c101e5fdc42c4b5e8992d31d15c6291",
"size_bytes": 4723647
},
{
"file": "const_form_undetermined_2026-01-01.json",
"sha256": "16745ba1e2da669dc43febb2dcbc4c52acce7c146debb1ad72dd5cb6216ca81d",
"size_bytes": 104333
"sha256": "39e1592db24410243ff076dbacc708e102beae67c072f46c8ee756b3ece23454",
"size_bytes": 103992
},
{
"file": "const_basis_missing_2026-01-01.json",
"sha256": "03854c4fa9421f70f0decb6c0d89a58b0f21be34616de81e54720cf049013bcb",
"sha256": "42541cbe3e9ec1f75500cdf57d68d442429d7d304001a8f4f55fb49059ad2d25",
"size_bytes": 115094
}
]
@@ -456,623 +456,623 @@
"pum_table_id": "C0423",
"section": "8-1-3 운반 및 수송('10, '17년 보완)",
"pum_form": "requirement",
"line": 74,
"line": 78,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0428",
"section": "5-3.2-5.5-타 이 어-----3.1-4.0-5.7",
"pum_form": "requirement",
"line": 192,
"line": 196,
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(㎥/hr)' 라 밑수로 안 받음"
},
{
"pum_table_id": "C0434",
"section": "5-3.2-5.5-타 이 어-----3.1-4.0-5.7",
"pum_form": "requirement",
"line": 272,
"line": 276,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0447",
"section": "8-2-6 모터 스크레이퍼Q = ⋅q⋅f⋅E cm여기서Q: 시간당 작업량(㎥/hr)q: 적재함용적×적재계수(k)f: 체적환산계수E: 작업효율cm : 1회 싸이클 시간",
"pum_form": "productivity",
"line": 446,
"line": 450,
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(㎥/hr)' 라 밑수로 안 받음"
},
{
"pum_table_id": "C0449",
"section": "8-2-6 모터 스크레이퍼Q = ⋅q⋅f⋅E cm여기서Q: 시간당 작업량(㎥/hr)q: 적재함용적×적재계수(k)f: 체적환산계수E: 작업효율cm : 1회 싸이클 시간",
"pum_form": "productivity",
"line": 485,
"line": 489,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0450",
"section": "8-2-6 모터 스크레이퍼Q = ⋅q⋅f⋅E cm여기서Q: 시간당 작업량(㎥/hr)q: 적재함용적×적재계수(k)f: 체적환산계수E: 작업효율cm : 1회 싸이클 시간",
"pum_form": "requirement",
"line": 493,
"line": 497,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0452",
"section": "8-2-6 모터 스크레이퍼Q = ⋅q⋅f⋅E cm여기서Q: 시간당 작업량(㎥/hr)q: 적재함용적×적재계수(k)f: 체적환산계수E: 작업효율cm : 1회 싸이클 시간",
"pum_form": "requirement",
"line": 516,
"line": 520,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0472",
"section": "8-2-13 대형브레이커('14, '17, '25년 보완)※ 굴착(깎기, 터파기) 작업에 대형 브레이커를 활용하는 하는 경우 해당항목의 일당시공량을 우선 적용하며, 해당 품의 작업조건과 상이하다고 판단되는 경우 본 항목을 활용하여 작업능력을 계상하여 적용한다.",
"pum_form": "productivity",
"line": 861,
"line": 876,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0475",
"section": "8-2-15 법면다짐기",
"pum_form": "productivity",
"line": 900,
"line": 915,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0484",
"section": "8-2-19 콘크리트 운반",
"pum_form": "productivity",
"line": 1012,
"line": 1027,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0491",
"section": "8-2-19 콘크리트 운반",
"pum_form": "productivity",
"line": 1098,
"line": 1113,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0493",
"section": "8-2-19 콘크리트 운반",
"pum_form": "requirement",
"line": 1113,
"line": 1128,
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(인/일)' 라 밑수로 안 받음"
},
{
"pum_table_id": "C0494",
"section": "8-2-23 유압 파일 해머",
"pum_form": "requirement",
"line": 1129,
"line": 1144,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0495",
"section": "8-2-23 유압 파일 해머",
"pum_form": "requirement",
"line": 1139,
"line": 1154,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0497",
"section": "8-2-23 유압 파일 해머",
"pum_form": "requirement",
"line": 1170,
"line": 1185,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0499",
"section": "8-2-23 유압 파일 해머",
"pum_form": "requirement",
"line": 1214,
"line": 1229,
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(인/일)' 라 밑수로 안 받음"
},
{
"pum_table_id": "C0500",
"section": "8-2-23 유압 파일 해머",
"pum_form": "requirement",
"line": 1224,
"line": 1239,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0507",
"section": "8-2-24 진동파일 해머('96, '26년 보완)",
"pum_form": "requirement",
"line": 1290,
"line": 1305,
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(인/ 일)' 라 밑수로 안 받음"
},
{
"pum_table_id": "C0514",
"section": "8-2-24 진동파일 해머('96, '26년 보완)",
"pum_form": "requirement",
"line": 1366,
"line": 1381,
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(인/일)' 라 밑수로 안 받음"
},
{
"pum_table_id": "C0518",
"section": "8-2-25 진동파일해머(워터제트 병용 압입공)",
"pum_form": "requirement",
"line": 1414,
"line": 1429,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0521",
"section": "8-2-25 진동파일해머(워터제트 병용 압입공)",
"pum_form": "requirement",
"line": 1451,
"line": 1466,
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(인/ 일)' 라 밑수로 안 받음"
},
{
"pum_table_id": "C0526",
"section": "8-2-25 진동파일해머’를 따른다.8-2-26 유압식 압입 인발기(유압식 압입 인발공)",
"pum_form": "requirement",
"line": 1503,
"line": 1518,
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(인/일)' 라 밑수로 안 받음"
},
{
"pum_table_id": "C0533",
"section": "8-2-29 펌프식 준설선('10, '11년 보완)",
"pum_form": "requirement",
"line": 1596,
"line": 1611,
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(㎥/hr)' 라 밑수로 안 받음"
},
{
"pum_table_id": "C0534",
"section": "8-2-29 펌프식 준설선('10, '11년 보완)",
"pum_form": "requirement",
"line": 1618,
"line": 1633,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0535",
"section": "8-2-29 펌프식 준설선('10, '11년 보완)",
"pum_form": "requirement",
"line": 1625,
"line": 1647,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0536",
"section": "8-2-29 펌프식 준설선('10, '11년 보완)",
"pum_form": "requirement",
"line": 1639,
"line": 1661,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0537",
"section": "8-2-29 펌프식 준설선('10, '11년 보완)",
"pum_form": "requirement",
"line": 1663,
"line": 1685,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0550",
"section": "8-2-30 그래브 준설선('10, '11년 보완)Q = q⋅k⋅f⋅Ecm여기서Q: 1시간당 준설량(㎥/hr)q: 버킷 또는 디퍼의 용량(㎥)k: 버킷 및 디퍼의 계수f: 현 지반의 토량을 기준하였을 때와의 준설토량의 변화율(체적 환산계수)cm : 1회 싸이클시간(초)E: 작업효율223제8장 건설기계",
"pum_form": "requirement",
"line": 1794,
"line": 1844,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0555",
"section": "8-2-30 그래브 준설선('10, '11년 보완)Q = q⋅k⋅f⋅Ecm여기서Q: 1시간당 준설량(㎥/hr)q: 버킷 또는 디퍼의 용량(㎥)k: 버킷 및 디퍼의 계수f: 현 지반의 토량을 기준하였을 때와의 준설토량의 변화율(체적 환산계수)cm : 1회 싸이클시간(초)E: 작업효율223제8장 건설기계",
"pum_form": "requirement",
"line": 1839,
"line": 1889,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0568",
"section": "8-3 기계손료8-3-1 [00]토공기계('19년 보완)(0101) 불도저(무한궤도)",
"pum_form": "requirement",
"line": 1975,
"line": 2025,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0569",
"section": "8-3 기계손료8-3-1 [00]토공기계('19년 보완)(0101) 불도저(무한궤도)",
"pum_form": "requirement",
"line": 1990,
"line": 2040,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0570",
"section": "8-3 기계손료8-3-1 [00]토공기계('19년 보완)(0101) 불도저(무한궤도)",
"pum_form": "requirement",
"line": 2000,
"line": 2050,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0571",
"section": "8-3 기계손료8-3-1 [00]토공기계('19년 보완)(0101) 불도저(무한궤도)",
"pum_form": "requirement",
"line": 2020,
"line": 2070,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0572",
"section": "8-3 기계손료8-3-1 [00]토공기계('19년 보완)(0101) 불도저(무한궤도)",
"pum_form": "requirement",
"line": 2027,
"line": 2077,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0574",
"section": "8-3 기계손료8-3-1 [00]토공기계('19년 보완)(0101) 불도저(무한궤도)",
"pum_form": "requirement",
"line": 2042,
"line": 2092,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0575",
"section": "8-3 기계손료8-3-1 [00]토공기계('19년 보완)(0101) 불도저(무한궤도)",
"pum_form": "requirement",
"line": 2058,
"line": 2108,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0576",
"section": "8-3 기계손료8-3-1 [00]토공기계('19년 보완)(0101) 불도저(무한궤도)",
"pum_form": "requirement",
"line": 2075,
"line": 2125,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0577",
"section": "8-3 기계손료8-3-1 [00]토공기계('19년 보완)(0101) 불도저(무한궤도)",
"pum_form": "requirement",
"line": 2089,
"line": 2139,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0578",
"section": "8-3 기계손료8-3-1 [00]토공기계('19년 보완)(0101) 불도저(무한궤도)",
"pum_form": "requirement",
"line": 2102,
"line": 2152,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0579",
"section": "8-3 기계손료8-3-1 [00]토공기계('19년 보완)(0101) 불도저(무한궤도)",
"pum_form": "requirement",
"line": 2111,
"line": 2161,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0589",
"section": "8-3-2 [10]다짐기계(1106) 머캐덤 롤러(자주식)",
"pum_form": "requirement",
"line": 2218,
"line": 2268,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0596",
"section": "8-3-3 [20]운반 및 하역기계(2101) 크레인(무한궤도)",
"pum_form": "requirement",
"line": 2313,
"line": 2363,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0597",
"section": "8-3-3 [20]운반 및 하역기계(2101) 크레인(무한궤도)",
"pum_form": "requirement",
"line": 2322,
"line": 2372,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0598",
"section": "8-3-3 [20]운반 및 하역기계(2101) 크레인(무한궤도)",
"pum_form": "requirement",
"line": 2330,
"line": 2380,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0599",
"section": "8-3-3 [20]운반 및 하역기계(2101) 크레인(무한궤도)",
"pum_form": "requirement",
"line": 2338,
"line": 2388,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0603",
"section": "8-3-3 [20]운반 및 하역기계(2101) 크레인(무한궤도)",
"pum_form": "requirement",
"line": 2377,
"line": 2427,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0608",
"section": "8-3-4 [30]포장기계(3108) 아스팔트 믹싱플랜트",
"pum_form": "requirement",
"line": 2430,
"line": 2480,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0609",
"section": "8-3-4 [30]포장기계(3108) 아스팔트 믹싱플랜트",
"pum_form": "requirement",
"line": 2438,
"line": 2488,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0610",
"section": "8-3-4 [30]포장기계(3108) 아스팔트 믹싱플랜트",
"pum_form": "requirement",
"line": 2450,
"line": 2500,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0614",
"section": "8-3-4 [30]포장기계(3108) 아스팔트 믹싱플랜트",
"pum_form": "requirement",
"line": 2495,
"line": 2545,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0615",
"section": "8-3-4 [30]포장기계(3108) 아스팔트 믹싱플랜트",
"pum_form": "requirement",
"line": 2502,
"line": 2552,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0616",
"section": "8-3-4 [30]포장기계(3108) 아스팔트 믹싱플랜트",
"pum_form": "requirement",
"line": 2510,
"line": 2560,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0617",
"section": "8-3-4 [30]포장기계(3108) 아스팔트 믹싱플랜트",
"pum_form": "requirement",
"line": 2517,
"line": 2567,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0620",
"section": "8-3-5 [40]콘크리트기계(4108) 콘크리트 배치플랜트",
"pum_form": "requirement",
"line": 2550,
"line": 2600,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0621",
"section": "8-3-5 [40]콘크리트기계(4108) 콘크리트 배치플랜트",
"pum_form": "requirement",
"line": 2564,
"line": 2614,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0623",
"section": "8-3-5 [40]콘크리트기계(4108) 콘크리트 배치플랜트",
"pum_form": "productivity",
"line": 2582,
"line": 2632,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0624",
"section": "8-3-5 [40]콘크리트기계(4108) 콘크리트 배치플랜트",
"pum_form": "productivity",
"line": 2592,
"line": 2642,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0640",
"section": "8-3-6 [50]골재생산기계 등(5105) 크러셔(이동식) ('11년 보완)",
"pum_form": "productivity",
"line": 2768,
"line": 2819,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0651",
"section": "5220-00151.5㎾8,0002,500(5330) 드릴웨곤",
"pum_form": "requirement",
"line": 2895,
"line": 2946,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0652",
"section": "5220-00151.5㎾8,0002,500(5330) 드릴웨곤",
"pum_form": "requirement",
"line": 2903,
"line": 2954,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0653",
"section": "5220-00151.5㎾8,0002,500(5330) 드릴웨곤",
"pum_form": "requirement",
"line": 2910,
"line": 2961,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0656",
"section": "8-3-7 [60]기초공사용 기계(6105) 그라우팅 믹서",
"pum_form": "requirement",
"line": 2944,
"line": 2995,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0677",
"section": "8-3-7 [60]기초공사용 기계(6105) 그라우팅 믹서",
"pum_form": "requirement",
"line": 3178,
"line": 3229,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0680",
"section": "8-3-7 [60]기초공사용 기계(6105) 그라우팅 믹서",
"pum_form": "requirement",
"line": 3210,
"line": 3261,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0682",
"section": "8-3-7 [60]기초공사용 기계(6105) 그라우팅 믹서",
"pum_form": "requirement",
"line": 3232,
"line": 3283,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0715",
"section": "50-2.6m5,0008-3-9 [80]스마트 건설장비(8201) 3D GNSS 머신 가이던스(굴착기용) ('23년 신설)",
"pum_form": "requirement",
"line": 3562,
"line": 3613,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0717",
"section": "50-2.6m5,0008-3-9 [80]스마트 건설장비(8201) 3D GNSS 머신 가이던스(굴착기용) ('23년 신설)",
"pum_form": "requirement",
"line": 3576,
"line": 3627,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0718",
"section": "50-2.6m5,0008-3-9 [80]스마트 건설장비(8201) 3D GNSS 머신 가이던스(굴착기용) ('23년 신설)",
"pum_form": "requirement",
"line": 3583,
"line": 3634,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0727",
"section": "8-4 운전경비 산정('08, '09, '10, '11, '12, '13, '14, '15, '16, '17년 보완)8-4-1 [00]토공기계",
"pum_form": "requirement",
"line": 3735,
"line": 3786,
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(ℓ/hr)' 라 밑수로 안 받음"
},
{
"pum_table_id": "C0728",
"section": "8-4 운전경비 산정('08, '09, '10, '11, '12, '13, '14, '15, '16, '17년 보완)8-4-1 [00]토공기계",
"pum_form": "requirement",
"line": 3771,
"line": 3822,
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(ℓ/hr)' 라 밑수로 안 받음"
},
{
"pum_table_id": "C0729",
"section": "8-4-2 [10]다짐기계",
"pum_form": "requirement",
"line": 3803,
"line": 3854,
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(ℓ/hr)' 라 밑수로 안 받음"
},
{
"pum_table_id": "C0730",
"section": "8-4-3 [20]운반 및 하역기계('21년 보완)",
"pum_form": "requirement",
"line": 3840,
"line": 3891,
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(ℓ/hr)' 라 밑수로 안 받음"
},
{
"pum_table_id": "C0731",
"section": "8-4-3 [20]운반 및 하역기계('21년 보완)",
"pum_form": "requirement",
"line": 3871,
"line": 3922,
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(ℓ/hr)' 라 밑수로 안 받음"
},
{
"pum_table_id": "C0732",
"section": "8-4-4 [30]포장기계",
"pum_form": "requirement",
"line": 3915,
"line": 3966,
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(ℓ/hr)' 라 밑수로 안 받음"
},
{
"pum_table_id": "C0733",
"section": "8-4-5 [40]콘크리트기계",
"pum_form": "requirement",
"line": 3947,
"line": 3998,
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(ℓ/hr)' 라 밑수로 안 받음"
},
{
"pum_table_id": "C0734",
"section": "8-4-5 [40]콘크리트기계",
"pum_form": "requirement",
"line": 3957,
"line": 4008,
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(ℓ/hr)' 라 밑수로 안 받음"
},
{
"pum_table_id": "C0735",
"section": "8-4-6 [50]골재생산기계 등",
"pum_form": "requirement",
"line": 3983,
"line": 4034,
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(ℓ/hr)' 라 밑수로 안 받음"
},
{
"pum_table_id": "C0736",
"section": "8-4-6 [50]골재생산기계 등",
"pum_form": "requirement",
"line": 3999,
"line": 4050,
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(ℓ/hr)' 라 밑수로 안 받음"
},
{
"pum_table_id": "C0737",
"section": "8-4-7 [60]기초공사용 기계('21년 보완)",
"pum_form": "requirement",
"line": 4013,
"line": 4064,
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(ℓ/hr)' 라 밑수로 안 받음"
},
{
"pum_table_id": "C0738",
"section": "8-4-8 [70]기타기계('24년 보완)",
"pum_form": "requirement",
"line": 4039,
"line": 4090,
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(ℓ/hr)' 라 밑수로 안 받음"
},
{
"pum_table_id": "C0739",
"section": "8-4-8 [70]기타기계('24년 보완)",
"pum_form": "requirement",
"line": 4080,
"line": 4131,
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(ℓ/hr)' 라 밑수로 안 받음"
},
{
"pum_table_id": "C0740",
"section": "8-4-9 [90]해상기계(9010) 펌프준설선 ('10, '11년 보완)",
"pum_form": "requirement",
"line": 4111,
"line": 4162,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0741",
"section": "8-4-9 [90]해상기계(9010) 펌프준설선 ('10, '11년 보완)",
"pum_form": "requirement",
"line": 4124,
"line": 4175,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0742",
"section": "8-4-9 [90]해상기계(9010) 펌프준설선 ('10, '11년 보완)",
"pum_form": "requirement",
"line": 4137,
"line": 4188,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0743",
"section": "8-4-9 [90]해상기계(9010) 펌프준설선 ('10, '11년 보완)",
"pum_form": "requirement",
"line": 4147,
"line": 4198,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0744",
"section": "8-4-9 [90]해상기계(9010) 펌프준설선 ('10, '11년 보완)",
"pum_form": "requirement",
"line": 4158,
"line": 4209,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0745",
"section": "8-4-9 [90]해상기계(9010) 펌프준설선 ('10, '11년 보완)",
"pum_form": "requirement",
"line": 4168,
"line": 4219,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0746",
"section": "8-4-9 [90]해상기계(9010) 펌프준설선 ('10, '11년 보완)",
"pum_form": "requirement",
"line": 4178,
"line": 4229,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
"pum_table_id": "C0747",
"section": "8-4-9 [90]해상기계(9010) 펌프준설선 ('10, '11년 보완)",
"pum_form": "requirement",
"line": 4190,
"line": 4241,
"why": "원문 부재 — 원문에 밑수가 아예 없음(채우면 지어내는 꼴)"
},
{
@@ -494,15 +494,26 @@
],
"first_rows": [
[
"포 장 도 로 ( 고속4 차선) 포 장 도 로 ( 고속2 차선) 포 장 도 로 사 리 도 로 ( 양 호 ) 사 리 도 로 ( 불 량 )",
"60 50 40 25 10",
"- - 25 15 10",
"- - 30 15 10",
"- - 25 15 10",
"- - 35 25 10",
"- 50 40 25 10",
"- 50 40 20 10",
"- - 25 15 10"
"포 장 도 로 ( 고속4 차선)",
"60",
"-",
"-",
"-",
"-",
"-",
"-",
"-"
],
[
"포 장 도 로 ( 고속2 차선)",
"50",
"-",
"-",
"-",
"-",
"50",
"50",
"-"
]
],
"reason": "단위·밑수·직종 표지 없음 · 값은 있는데 표지가 없음 — 사람이 봐야 함"
@@ -1892,9 +1903,9 @@
],
[
"점 토 질 토 사",
"연 니 ( 軟 泥 ) 연 질 보 통 질 경 질 최 경 질 극 경 질",
"4이하 410 1020 2030 3040 4050",
"1.00 0.95 0.90 0.85 0.85 0.80"
"연 니 ( 軟 泥 )",
"4이하",
"1.00"
]
],
"reason": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음"
@@ -1918,15 +1929,15 @@
],
[
"점 토 질 토 사",
"연 니 연 질 보 통 질 경 질 최 경 질 극 경 질",
"4이하 410 1020 2030 3040 4050",
"0.90 0.95 0.65 - - -",
"0.90 0.95 0.65 - - -",
"0.90 1.00 0.75 0.35 (0.35) (0.35)",
"0.90 1.00 0.80 0.50 (0.50) (0.50)"
"연 니",
"4이하",
"0.90",
"0.90",
"0.90",
"0.90"
]
],
"reason": "단위·밑수·직종 표지 없음 · 값이 규격·치수뿐 — 원문이 품을 안 적음(할 일 아님)"
"reason": "단위·밑수·직종 표지 없음 · 머리 두 단 · 값 있음 — 아래 단을 이어 봐도 표지가 없음"
},
{
"pum_table_id": "C0549",
File diff suppressed because it is too large Load Diff
@@ -4,7 +4,7 @@
"effective_date": "2026-01-01",
"pum_edition": "2026-01-01",
"toc_edition": "산림청고시제2025-82호",
"generated_at": "2026-09-18T13:27:21+09:00",
"generated_at": "2026-09-18T14:03:13+09:00",
"dataset_version": {
"dataset_id": "pum_forest",
"effective_date": "2026-01-01",
@@ -16,16 +16,20 @@
"data": "",
"why": "자료 이름이 빔 — 원문 손료표 머리 `(코드) 이름` 엔 이름 있음",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
"owner": "랩탑 서브",
"owner_ask": "제8장 8-3 (8201) 손료표 머리가 글로 뭉개져 기종 이름이 표 밖 글줄에 섞였음 — PDF 대조로 표 머리를 되살려 줄 것. 되살리면 추출기·시험이 저절로 읽음.",
"갈래": "잣대 못 알아봄",
"class_why": "제8장 8-3 (8201) 손료표 머리가 글로 뭉개져 기종 이름이 표 밖 글줄에 섞였음 — PDF 대조로 표 머리를 되살려 줄 것. 되살리면 추출기·시험이 저절로 읽음."
},
"손료 8201-0100 machine_name": {
"source": "3D GNSS 머신 가이던스(굴착기용)",
"data": "배관파이프시 간 당(10-7)분류번호규 격7995-0050ø50-2.6m5,0008-3-9 [80]스마트 건설장비(8201) 3D GNSS 머신 가이던스(굴착기용)",
"why": "자료 이름 칸에 원문 뭉개진 손료 글이 통째로 들어감 — 자료 이름 틀림",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
"owner": "랩탑 서브",
"owner_ask": "위와 한 자리 — 뭉개진 글이 자료 이름 칸에 통째로 들어갔음.",
"갈래": "잣대 못 알아봄",
"class_why": "위와 한 자리 — 뭉개진 글이 자료 이름 칸에 통째로 들어갔음."
},
"연료 7993-0020": {
"source": null,
@@ -39,82 +43,36 @@
},
"why": "원문 md 8-4 양수기 줄이 `| 7993-0020 | 양수기 | 1.49㎾ | 1.49㎾ | - | - |` — **규격을 주연료 칸에** 밀어 적어 원문에 기름 값이 없다. 자료의 휘발유 1.3ℓ 는 사람이 PDF 를 보고 맞춘 값을 옛 벌에서 이어받은 것이다. ⇒ 값을 지울 자리가 아니라 **md 전사를 고칠 자리**다(고치면 저절로 맞음).",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "코덱스",
"owner_ask": "제8장 8-4 운전경비 양수기 7993-0020 줄 — 주연료 칸에 규격(1.49㎾)이 밀려 들어갔음. PDF 대조로 주연료(휘발유 1.3)를 제자리에 적어 줄 것. 옆 규격 칸도 함께 볼 것."
"owner": "랩탑 서브",
"owner_ask": "8-4 양수기 7993-0020 주연료 칸에 규격(1.49㎾)이 밀려 들어갔음 PDF 대조로 휘발유 1.3 를 제자리에 적어 줄 것.",
"갈래": "잣대 못 알아봄",
"class_why": "8-4 양수기 7993-0020 주연료 칸에 규격(1.49㎾)이 밀려 들어갔음 — PDF 대조로 휘발유 1.3ℓ 를 제자리에 적어 줄 것."
},
"셈 연료 코드 수": {
"source": 273,
"data": 274,
"why": "원문 md 8-4 양수기 줄이 `| 7993-0020 | 양수기 | 1.49㎾ | 1.49㎾ | - | - |` — **규격을 주연료 칸에** 밀어 적어 원문에 기름 값이 없다. 자료의 휘발유 1.3ℓ 는 사람이 PDF 를 보고 맞춘 값을 옛 벌에서 이어받은 것이다. ⇒ 값을 지울 자리가 아니라 **md 전사를 고칠 자리**다(고치면 저절로 맞음).",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "코덱스",
"owner_ask": "제8장 8-4 운전경비 양수기 7993-0020 줄 — 주연료 칸에 규격(1.49㎾)이 밀려 들어갔음. PDF 대조로 주연료(휘발유 1.3ℓ)를 제자리에 적어 줄 것. 옆 규격 칸도 함께 볼 것."
"owner": "랩탑 서브",
"owner_ask": "위 7993-0020 과 한 자리 — 그 줄이 고쳐지면 셈도 맞음.",
"갈래": "잣대 못 알아봄",
"class_why": "위 7993-0020 과 한 자리 — 그 줄이 고쳐지면 셈도 맞음."
},
"셈 연료 원문에 없는 자료 줄": {
"source": 0,
"data": 1,
"why": "원문 md 8-4 양수기 줄이 `| 7993-0020 | 양수기 | 1.49㎾ | 1.49㎾ | - | - |` — **규격을 주연료 칸에** 밀어 적어 원문에 기름 값이 없다. 자료의 휘발유 1.3ℓ 는 사람이 PDF 를 보고 맞춘 값을 옛 벌에서 이어받은 것이다. ⇒ 값을 지울 자리가 아니라 **md 전사를 고칠 자리**다(고치면 저절로 맞음).",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "코덱스",
"owner_ask": "제8장 8-4 운전경비 양수기 7993-0020 줄 — 주연료 칸에 규격(1.49㎾)이 밀려 들어갔음. PDF 대조로 주연료(휘발유 1.3ℓ)를 제자리에 적어 줄 것. 옆 규격 칸도 함께 볼 것."
"owner": "랩탑 서브",
"owner_ask": "위와 같음.",
"갈래": "잣대 못 알아봄",
"class_why": "위와 같음."
}
},
"material": {},
"oil": {},
"rate": {},
"labor_blind": {
"건설 pdf": {
"what": "3. 개별직종 노임단가.md",
"why": "원문 md 는 PDF 를 옮긴 것 — PDF 자체와의 옮김 틀림은 못 봄",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"건설 별칭 이름": {
"what": [
"labor_1001",
"labor_1002",
"labor_1003",
"labor_1007",
"labor_1008",
"labor_1012",
"labor_1013",
"labor_1015",
"labor_1016",
"labor_1017",
"labor_1018",
"labor_1019",
"labor_op_const",
"labor_op_general",
"labor_op_truck"
],
"why": "별칭 이름은 프로그램이 지은 것 — 가리키는 코드가 원문에 있는지만 봄",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 labor_mfg.unit": {
"what": "원문과 안 맞댐",
"why": "`KRW/day` 는 프로그램 표기 — 원문 글(원·1일)과 글자로 안 맞댐",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 labor_rate.unit": {
"what": "원문과 안 맞댐",
"why": "`KRW/day` 는 프로그램 표기 — 원문 글(원·1일)과 글자로 안 맞댐",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"제조 pdf": {
"what": "2026상반기_중소제조업_직종별_임금조사_중소기업중앙회.md",
"why": "원문 md 는 PDF 를 옮긴 것 — PDF 자체와의 옮김 틀림은 못 봄",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
}
},
"labor_blind": {},
"machine_blind": {
"손료 계수 칸 없는 표 5220": {
"what": [
@@ -125,8 +83,10 @@
],
"why": "복원 뒤에도 원문 표에 계수 칸이 없음 — 머리 「시 간 당(10-7)」 은 표 위 글줄로만 · 값은 원문에 없음",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
"owner": "랩탑 서브",
"owner_ask": "md 표에 계수 칸이 없고 머리 「시 간 당(10-7)」 만 표 위 글줄로 남았음 — **PDF 에 계수 칸이 있는지** 짚어 줄 것. 있으면 전사 고침, 없으면 원문 부재로 닫음(5220-0015 손료계수가 지금 비어 있음).",
"갈래": "잣대 못 알아봄",
"class_why": "md 표에 계수 칸이 없고 머리 「시 간 당(10-7)」 만 표 위 글줄로 남았음 — **PDF 에 계수 칸이 있는지** 짚어 줄 것. 있으면 전사 고침, 없으면 원문 부재로 닫음(5220-0015 손료계수가 지금 비어 있음)."
},
"손료 계수 칸 없는 표 7995": {
"what": [
@@ -136,99 +96,19 @@
],
"why": "복원 뒤에도 원문 표에 계수 칸이 없음 — 머리 「시 간 당(10-7)」 은 표 위 글줄로만 · 값은 원문에 없음",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
"owner": "랩탑 서브",
"owner_ask": "위와 같음(7995-0050).",
"갈래": "잣대 못 알아봄",
"class_why": "위와 같음(7995-0050)."
},
"손료보정 수 자리 가름": {
"what": "뭉개진 글의 이어 붙은 수(2510)를 통째로 맞댐",
"why": "8-1-7 가산비율 표가 글로 뭉개져 `2510` 처럼 붙음 — 25·10 인지 2·510 인지 못 가름",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 mach_fuel_rate.parse_method": {
"what": "원문과 안 맞댐",
"why": "사람이 손으로 맞춘 줄이라는 표시 — 원문에 없는 칸(2026-09-18 기준 7993-0020 하나)",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 mach_fuel_rate.source_tables.section": {
"what": "원문과 안 맞댐",
"why": "8-4 원표의 절 제목 — 표 차례로 맞대므로 글자는 안 봄(원표 머리·줄은 맞댐)",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 mach_fuel_rate.specification": {
"what": "원문과 안 맞댐",
"why": "규격 칸이 한 칸에 여러 값·여러 열로 뭉쳐 가르기 어려움 — 안 맞댐",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 mach_loss_coef.loss_coefficient_per_hour": {
"what": "원문과 안 맞댐",
"why": "계산 칸(계 × 10⁻⁷) — 원문 `계`(source_coefficient_1e_minus_7)만 맞댐",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 mach_loss_coef.note": {
"what": "원문과 안 맞댐",
"why": "데스크탑 서브가 붙인 설명 글 — 값 아님",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 mach_loss_coef.specification": {
"what": "원문과 안 맞댐",
"why": "규격 칸이 한 칸에 여러 값·여러 열로 뭉쳐 가르기 어려움 — 안 맞댐",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 mach_operator_map.rules.alias": {
"what": "원문과 안 맞댐",
"why": "프로그램이 지은 이름·출처 표기",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 mach_operator_map.rules.rule_id": {
"what": "원문과 안 맞댐",
"why": "프로그램이 지은 이름·출처 표기",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 mach_operator_map.rules.source_section": {
"what": "원문과 안 맞댐",
"why": "프로그램이 지은 이름·출처 표기",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 mach_price.specification": {
"what": "원문과 안 맞댐",
"why": "가격표엔 규격 칸이 없음(기종·코드·가격만)",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 mach_rock_adj.rules.exception": {
"what": "원문과 안 맞댐",
"why": "[주]① 예외 글을 프로그램 말로 옮긴 칸 — 글자로 안 맞댐",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 mach_rock_adj.rules.exclusion": {
"what": "원문과 안 맞댐",
"why": "[주]① 예외 글을 프로그램 말로 옮긴 칸 — 글자로 안 맞댐",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
"owner": "랩탑 서브",
"owner_ask": "8-1-7 가산비율 표가 글로 뭉개져 `2510` 처럼 붙었음 — 25·10 인지 2·510 인지 PDF 로 갈라 줄 것.",
"갈래": "잣대 못 알아봄",
"class_why": "8-1-7 가산비율 표가 글로 뭉개져 `2510` 처럼 붙었음 — 25·10 인지 2·510 인지 PDF 로 갈라 줄 것."
},
"연료 표 3450-0642": {
"codes": [
@@ -238,7 +118,9 @@
"why": "원문 8-4 주연료 칸에 **두 연료가 한 칸에** 적혀 있음 — `73.7+휘발유54.5`(3450-0642 현장가열표층재생기) · `1.87㎾ 휘발유1.3`(7992-0001 모르타르 믹서). 앞은 기본 연료(경유·전력), 뒤는 휘발유다. 기름 값이 **원문에 있는 값**인데 자료(`mach_fuel_rate`)가 이 두 기종을 아주 안 담아 맞댈 것이 없음.",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "`_build_mach.py` 가 8-4 주연료 칸의 **겸용 표기**를 갈라 읽게 해 줄 것 — 기름 값(휘발유 54.5 · 1.3)은 원문에 있는 값이라 자료에 들어가야 함. 전력분(1.87㎾)을 함께 담을지는 브레인 판정 자리."
"owner_ask": "8-4 주연료 칸의 겸용 표기(`73.7+휘발유54.5`)를 `_build_mach.py` 가 갈라 읽게 해 줄 것 — 기름 값은 원문에 있는 값.",
"갈래": "잣대 못 알아봄",
"class_why": "8-4 주연료 칸의 겸용 표기(`73.7+휘발유54.5`)를 `_build_mach.py` 가 갈라 읽게 해 줄 것 — 기름 값은 원문에 있는 값."
},
"연료 표 7992-0001": {
"codes": [
@@ -248,93 +130,95 @@
"why": "원문 8-4 주연료 칸에 **두 연료가 한 칸에** 적혀 있음 — `73.7+휘발유54.5`(3450-0642 현장가열표층재생기) · `1.87㎾ 휘발유1.3`(7992-0001 모르타르 믹서). 앞은 기본 연료(경유·전력), 뒤는 휘발유다. 기름 값이 **원문에 있는 값**인데 자료(`mach_fuel_rate`)가 이 두 기종을 아주 안 담아 맞댈 것이 없음.",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "`_build_mach.py` 가 8-4 주연료 칸의 **겸용 표기**를 갈라 읽게 해 줄 것 — 기름 값(휘발유 54.5 · 1.3)은 원문에 있는 값이라 자료에 들어가야 함. 전력분(1.87㎾)을 함께 담을지는 브레인 판정 자리."
"owner_ask": "위와 같음(`1.87㎾ 휘발유1.3`).",
"갈래": "잣대 못 알아봄",
"class_why": "위와 같음(`1.87㎾ 휘발유1.3`)."
},
"운전사 기종별 판단": {
"what": 121,
"why": "기종→운전사 구분(explicit_mappings)은 사람 판단 — 원문 8-1-3 5호는 기종 이름 글만 있음",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
"class": "㉰ 사용자·브레인 판단",
"갈래": "원문 부재",
"class_why": "원문 8-1-3 5호는 기종 이름 글만 두고 운전사 구분을 안 적음 — 기종→운전사 짝(`explicit_mappings`)은 사람이 정한 것. 원문에 견줄 것이 없음."
},
"손료 머리 없는 이어 표 9020-0022": {
"what": "| 9020-0022 | 비항SD, 3.00㎥ | 164 | 20,000 | 1,780",
"why": "원문 md 가 **머리 없는 이어 표**로 적은 자리 — 책장 넘김에 밀린 줄을 빈 줄 뒤에 따로 적어 `|---|` 머리가 없다. 그래서 표로 잡히지 않아 **추출기(`_build_mach.py`)도 이 읽기도 못 봄** — 값은 원문에 있는데 `mach_loss_coef` 에 그 아홉 줄(9020 그래브 준설선 일곱 등)이 빠져 있음. 가격 쪽에는 같은 코드가 있어 **손료계수만 비는 어긋남**임.",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "코덱스",
"owner_ask": "제8장 8-3 (9020) 그래브 준설선 — `9020-0022`~`0200` 일곱 줄 앞 표와 떨어진 **머리 없는 표**로 적혀 있음(제8장_건설기계.md 3617줄 자리). 앞 표에 이어 붙여 줄 것. 붙이면 추출기·시험이 저절로 읽음."
"owner": "랩탑 서브",
"owner_ask": "제8장 8-3 (9020) 그래브 준설선 — `9020-0022`~`0200` 일곱 줄 앞 표에 이어 붙일 것(`제8장_건설기계.md` 3617줄 자리).",
"갈래": "잣대 못 알아봄",
"class_why": "값은 md 에 있으나 `|---|` 머리가 없어 표로 잡히지 않음 — 앞 표에 이어 붙이면 추출기·시험이 저절로 읽음."
},
"손료 머리 없는 이어 표 9020-0035": {
"what": "| 9020-0035 | 비항SD, 5.00㎥ | 261 | 20,000 | 1,780",
"why": "원문 md 가 **머리 없는 이어 표**로 적은 자리 — 책장 넘김에 밀린 줄을 빈 줄 뒤에 따로 적어 `|---|` 머리가 없다. 그래서 표로 잡히지 않아 **추출기(`_build_mach.py`)도 이 읽기도 못 봄** — 값은 원문에 있는데 `mach_loss_coef` 에 그 아홉 줄(9020 그래브 준설선 일곱 등)이 빠져 있음. 가격 쪽에는 같은 코드가 있어 **손료계수만 비는 어긋남**임.",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "코덱스",
"owner_ask": "제8장 8-3 (9020) 그래브 준설선 — `9020-0022`~`0200` 일곱 줄 앞 표와 떨어진 **머리 없는 표**로 적혀 있음(제8장_건설기계.md 3617줄 자리). 앞 표에 이어 붙여 줄 것. 붙이면 추출기·시험이 저절로 읽음."
"owner": "랩탑 서브",
"owner_ask": "제8장 8-3 (9020) 그래브 준설선 — `9020-0022`~`0200` 일곱 줄 앞 표에 이어 붙일 것(`제8장_건설기계.md` 3617줄 자리).",
"갈래": "잣대 못 알아봄",
"class_why": "값은 md 에 있으나 `|---|` 머리가 없어 표로 잡히지 않음 — 앞 표에 이어 붙이면 추출기·시험이 저절로 읽음."
},
"손료 머리 없는 이어 표 9020-0050": {
"what": "| 9020-0050 | 비항SD, 6.00㎥ | 373 | 20,000 | 1,780",
"why": "원문 md 가 **머리 없는 이어 표**로 적은 자리 — 책장 넘김에 밀린 줄을 빈 줄 뒤에 따로 적어 `|---|` 머리가 없다. 그래서 표로 잡히지 않아 **추출기(`_build_mach.py`)도 이 읽기도 못 봄** — 값은 원문에 있는데 `mach_loss_coef` 에 그 아홉 줄(9020 그래브 준설선 일곱 등)이 빠져 있음. 가격 쪽에는 같은 코드가 있어 **손료계수만 비는 어긋남**임.",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "코덱스",
"owner_ask": "제8장 8-3 (9020) 그래브 준설선 — `9020-0022`~`0200` 일곱 줄 앞 표와 떨어진 **머리 없는 표**로 적혀 있음(제8장_건설기계.md 3617줄 자리). 앞 표에 이어 붙여 줄 것. 붙이면 추출기·시험이 저절로 읽음."
"owner": "랩탑 서브",
"owner_ask": "제8장 8-3 (9020) 그래브 준설선 — `9020-0022`~`0200` 일곱 줄 앞 표에 이어 붙일 것(`제8장_건설기계.md` 3617줄 자리).",
"갈래": "잣대 못 알아봄",
"class_why": "값은 md 에 있으나 `|---|` 머리가 없어 표로 잡히지 않음 — 앞 표에 이어 붙이면 추출기·시험이 저절로 읽음."
},
"손료 머리 없는 이어 표 9020-0072": {
"what": "| 9020-0072 | 비항SD, 7.50㎥ | 537 | 20,000 | 1,780",
"why": "원문 md 가 **머리 없는 이어 표**로 적은 자리 — 책장 넘김에 밀린 줄을 빈 줄 뒤에 따로 적어 `|---|` 머리가 없다. 그래서 표로 잡히지 않아 **추출기(`_build_mach.py`)도 이 읽기도 못 봄** — 값은 원문에 있는데 `mach_loss_coef` 에 그 아홉 줄(9020 그래브 준설선 일곱 등)이 빠져 있음. 가격 쪽에는 같은 코드가 있어 **손료계수만 비는 어긋남**임.",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "코덱스",
"owner_ask": "제8장 8-3 (9020) 그래브 준설선 — `9020-0022`~`0200` 일곱 줄 앞 표와 떨어진 **머리 없는 표**로 적혀 있음(제8장_건설기계.md 3617줄 자리). 앞 표에 이어 붙여 줄 것. 붙이면 추출기·시험이 저절로 읽음."
"owner": "랩탑 서브",
"owner_ask": "제8장 8-3 (9020) 그래브 준설선 — `9020-0022`~`0200` 일곱 줄 앞 표에 이어 붙일 것(`제8장_건설기계.md` 3617줄 자리).",
"갈래": "잣대 못 알아봄",
"class_why": "값은 md 에 있으나 `|---|` 머리가 없어 표로 잡히지 않음 — 앞 표에 이어 붙이면 추출기·시험이 저절로 읽음."
},
"손료 머리 없는 이어 표 9020-0160": {
"what": "| 9020-0160 | 비항SD, 12.50㎥ | 1,194 | 20,000 | 1,",
"why": "원문 md 가 **머리 없는 이어 표**로 적은 자리 — 책장 넘김에 밀린 줄을 빈 줄 뒤에 따로 적어 `|---|` 머리가 없다. 그래서 표로 잡히지 않아 **추출기(`_build_mach.py`)도 이 읽기도 못 봄** — 값은 원문에 있는데 `mach_loss_coef` 에 그 아홉 줄(9020 그래브 준설선 일곱 등)이 빠져 있음. 가격 쪽에는 같은 코드가 있어 **손료계수만 비는 어긋남**임.",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "코덱스",
"owner_ask": "제8장 8-3 (9020) 그래브 준설선 — `9020-0022`~`0200` 일곱 줄 앞 표와 떨어진 **머리 없는 표**로 적혀 있음(제8장_건설기계.md 3617줄 자리). 앞 표에 이어 붙여 줄 것. 붙이면 추출기·시험이 저절로 읽음."
"owner": "랩탑 서브",
"owner_ask": "제8장 8-3 (9020) 그래브 준설선 — `9020-0022`~`0200` 일곱 줄 앞 표에 이어 붙일 것(`제8장_건설기계.md` 3617줄 자리).",
"갈래": "잣대 못 알아봄",
"class_why": "값은 md 에 있으나 `|---|` 머리가 없어 표로 잡히지 않음 — 앞 표에 이어 붙이면 추출기·시험이 저절로 읽음."
},
"손료 머리 없는 이어 표 9020-0180": {
"what": "| 9020-0180 | 비항SD, 16.00㎥ | 1,343 | 20,000 | 1,",
"why": "원문 md 가 **머리 없는 이어 표**로 적은 자리 — 책장 넘김에 밀린 줄을 빈 줄 뒤에 따로 적어 `|---|` 머리가 없다. 그래서 표로 잡히지 않아 **추출기(`_build_mach.py`)도 이 읽기도 못 봄** — 값은 원문에 있는데 `mach_loss_coef` 에 그 아홉 줄(9020 그래브 준설선 일곱 등)이 빠져 있음. 가격 쪽에는 같은 코드가 있어 **손료계수만 비는 어긋남**임.",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "코덱스",
"owner_ask": "제8장 8-3 (9020) 그래브 준설선 — `9020-0022`~`0200` 일곱 줄 앞 표와 떨어진 **머리 없는 표**로 적혀 있음(제8장_건설기계.md 3617줄 자리). 앞 표에 이어 붙여 줄 것. 붙이면 추출기·시험이 저절로 읽음."
"owner": "랩탑 서브",
"owner_ask": "제8장 8-3 (9020) 그래브 준설선 — `9020-0022`~`0200` 일곱 줄 앞 표에 이어 붙일 것(`제8장_건설기계.md` 3617줄 자리).",
"갈래": "잣대 못 알아봄",
"class_why": "값은 md 에 있으나 `|---|` 머리가 없어 표로 잡히지 않음 — 앞 표에 이어 붙이면 추출기·시험이 저절로 읽음."
},
"손료 머리 없는 이어 표 9020-0200": {
"what": "| 9020-0200 | 비항SD, 25.00㎥ | 1,491 | 20,000 | 1,",
"why": "원문 md 가 **머리 없는 이어 표**로 적은 자리 — 책장 넘김에 밀린 줄을 빈 줄 뒤에 따로 적어 `|---|` 머리가 없다. 그래서 표로 잡히지 않아 **추출기(`_build_mach.py`)도 이 읽기도 못 봄** — 값은 원문에 있는데 `mach_loss_coef` 에 그 아홉 줄(9020 그래브 준설선 일곱 등)이 빠져 있음. 가격 쪽에는 같은 코드가 있어 **손료계수만 비는 어긋남**임.",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "코덱스",
"owner_ask": "제8장 8-3 (9020) 그래브 준설선 — `9020-0022`~`0200` 일곱 줄 앞 표와 떨어진 **머리 없는 표**로 적혀 있음(제8장_건설기계.md 3617줄 자리). 앞 표에 이어 붙여 줄 것. 붙이면 추출기·시험이 저절로 읽음."
"owner": "랩탑 서브",
"owner_ask": "제8장 8-3 (9020) 그래브 준설선 — `9020-0022`~`0200` 일곱 줄 앞 표에 이어 붙일 것(`제8장_건설기계.md` 3617줄 자리).",
"갈래": "잣대 못 알아봄",
"class_why": "값은 md 에 있으나 `|---|` 머리가 없어 표로 잡히지 않음 — 앞 표에 이어 붙이면 추출기·시험이 저절로 읽음."
}
},
"material_blind": {
"API 스냅숏": {
"what": "나라장터_시설공통자재_2026-08-14.json",
"why": "원문이 API 로 받은 스냅숏 — 게시처(나라장터·오피넷) 값 자체와는 못 맞댐",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"같은 때 공시 20696249": {
"what": 2,
"why": "같은 공시 일시에 값 실린 공시가 둘 — 원천이 어느 것이 정본인지 안 알려 줌 · 자료는 그중 하나와 같음",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
"class": "㉰ 사용자·브레인 판단",
"갈래": "원문 부재",
"class_why": "같은 공시 일시에 값 실린 공시가 둘인데 **원천이 어느 것을 정본으로 보는지 안 알려 줌** — 자료는 그중 하나와 같음. 어느 것을 취할지 정해야 닫힘."
},
"같은 때 공시 20696250": {
"what": 2,
"why": "같은 공시 일시에 값 실린 공시가 둘 — 원천이 어느 것이 정본인지 안 알려 줌 · 자료는 그중 하나와 같음",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 mat_price.price_adopted_reason": {
"what": "원문과 안 맞댐",
"why": "빌더가 적은 까닭 글 — 원문 칸 아님",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
"class": "㉰ 사용자·브레인 판단",
"갈래": "원문 부재",
"class_why": "위와 한 자리."
},
"원천 없는 묶음": {
"what": [
@@ -343,171 +227,357 @@
"asphalt_concrete"
],
"why": "철근·레미콘·아스콘은 종합쇼핑몰 원천이 저장소에 없음 — 값 못 봄",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
}
},
"oil_blind": {
"API 스냅숏": {
"what": [
"유가_전국평균_2026-08-14.json",
"유가_시도별_2026-09-09.json"
],
"why": "원문이 API 로 받은 스냅숏 — 게시처(나라장터·오피넷) 값 자체와는 못 맞댐",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"시도 거래일": {
"what": "시도별 원천에 거래일 칸이 없음 — 수집일과만 맞댐",
"why": "시도별 원천 줄에 거래일이 없어 `수집일` 로만 맞댐",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 oil.scope": {
"what": "원문과 안 맞댐",
"why": "프로그램 표기(KRW/L · national_average) — 원천에 칸 없음",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 oil.unit": {
"what": "원문과 안 맞댐",
"why": "프로그램 표기(KRW/L · national_average) — 원천에 칸 없음",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 oil_regional.scope": {
"what": "원문과 안 맞댐",
"why": "프로그램 표기(KRW/L · national_average) — 원천에 칸 없음",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 oil_regional.source_product_name": {
"what": "원문과 안 맞댐",
"why": "시도별 원천에 상품 이름 칸 없음",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 oil_regional.unit": {
"what": "원문과 안 맞댐",
"why": "프로그램 표기(KRW/L · national_average) — 원천에 칸 없음",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
"class": "㉰ 사용자·브레인 판단",
"갈래": "원문 부재",
"class_why": "철근·레미콘·아스콘은 종합쇼핑몰 원천이 저장소에 없어 값을 볼 수 없음 — 원천을 들여올지 정해야 닫힘."
}
},
"oil_blind": {},
"rate_blind": {
"processing_rules": {
"what": [
"note",
"owner_supplied_material",
"performance_guarantee_fee",
"profit",
"rounding",
"safety_management_cost",
"scale_bracket"
],
"why": "끝수·산식 처리 규칙 — 코드 규칙이라 원문 대조 대상 아님(거울 시험 몫)",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 rate_environment.forest_road_selection_status": {
"what": "pending",
"why": "임도 공종 선택 미결 표시 — 사용자 협의 몫",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
"class": "㉰ 사용자·브레인 판단",
"갈래": "원문 부재",
"class_why": "임도 공종 선택 미결 표시 — 사용자 협의로 닫을 자리."
},
"안 잰 칸 rate_environment.minimum_estimated_amount_krw": {
"what": 100000000,
"why": "xlsx 환경보전비 칸에 1억 기준이 없음(1억은 퇴직공제부금 칸) — 근거 원문이 sources 에 없어 못 봄",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 rate_equipment_payment_guarantee.base_note": {
"what": "코드(`B09_Estimation_Statutory.STATUTORY_ITEMS`)가 직접공사비로 계산하고 있는 것과 맞춘 표기.",
"why": "설명 글",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 rate_overhead.basis": {
"what": "조달청 「2026년 토목·조경·산업환경설비공사 원가계산 간접공사비(제비율) 적용기준」(2026-04-13). ⚠ 구간 라벨의 `billion` 은 **십억 원** — `lt_5_billion` 은 50억 미만이다. 종합(토목·조경·산업설비)은 5억미만~30억~50억 8 · 50~100억·100~300억 6.5 · 300~1000억 5 · 1000억이상 4.5, 전문 등은 5억미만 8 · 5~30억 6.5 · 30~50억·50~100억 5 · 100억이상 4.5.",
"why": "데스크탑 서브가 붙인 설명 글 — 값 아님",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 rate_overhead.specialty_note": {
"what": "⚠ 2026-09-18 **300억 이상 두 구간이 통째로 빠져 있었음** — 마지막이 「100억-300억 미만」으로 닫혀 300억 넘는 전문공사가 어느 구간에도 안 걸렸음. 원본 XLSX(BL35:BR46) 대로 300~1000억 · 1000억 이상을 더함(둘 다 4.5%). 값은 원문 그대로.",
"why": "데스크탑 서브가 붙인 설명 글 — 값 아님",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
"class": "㉰ 사용자·브레인 판단",
"갈래": "원문 부재",
"class_why": "xlsx 환경보전비 칸에 1억 기준이 없음(1억은 퇴직공제부금 칸) — 근거 원문이 `sources` 에 없어 볼 수 없음. 근거를 들여올지 정해야 닫힘."
},
"안 잰 칸 rate_performance_guarantee_fee.typical_forest_road_applicability": {
"what": "not_applicable",
"why": "임도 적용 판단 — 원문 칸 아님",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 rate_safety_base.amount_bracket": {
"what": "500_million_to_5_billion",
"why": "다른 칸을 가리키는 표시 — 값 아님",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 rate_safety_base.embedded_in": {
"what": "rate_safety_pct.brackets",
"why": "다른 칸을 가리키는 표시 — 값 아님",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 rate_safety_pct.base_rule": {
"what": "min_of_two_formulas",
"why": "도급자관급 포함 시 두 식 중 작은 값 — xlsx 글(EB11·EB13) 해석이라 안 맞댐",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 rate_safety_pct.base_with_owner_supplied_material": {
"what": "minimum_of_statutory_two_formulas",
"why": "도급자관급 포함 시 두 식 중 작은 값 — xlsx 글(EB11·EB13) 해석이라 안 맞댐",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 rate_vat.base": {
"what": "construction_cost_before_vat",
"why": "부가세 — 근거(부가가치세법)가 sources 에 없음",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"안 잰 칸 rate_vat.rate_percent": {
"what": 10.0,
"why": "부가세 — 근거(부가가치세법)가 sources 에 없음",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
},
"조달청 요약표": {
"what": "2026.04.13_조달청_토목공사_제비율.xlsx",
"why": "xlsx 는 조달청 요약표 — 각 고시 원문과는 안 맞댐(연금만 법령과 맞댐)",
"class": "㉯ 남이 고쳐야 풀림",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림"
"class": "㉰ 사용자·브레인 판단",
"갈래": "원문 부재",
"class_why": "임도에 적용되는지 판단 — 원문 칸이 아님."
}
},
"_할일_아님": {
"잣대": "㉮ — **영영 할 일이 아닌 것.** 원문에 없는 말(프로그램 이름·사람 메모·살림살이) · 이미 다른 자리에서 맞대는 것. 바퀴마다 다시 세어지지 않게 갈래에서 아주 빼 여기 둔다. ⚠ 지우지는 않는다 — 되짚을 수 있어야 한다.",
"옮긴 날": "2026-09-18",
"갈래별": {
"낳은 값": 1,
"메모": 1,
"살림살이": 1,
"요약 이름": 2,
"원문 부재": 25,
"자리 표시": 2,
"프로그램 이름": 2
},
"셈": {
"labor_blind": 5,
"machine_blind": 9,
"material_blind": 2,
"oil_blind": 7,
"rate_blind": 11
},
"줄": {
"machine_blind": {
"안 잰 칸 mach_loss_coef.note": {
"what": "원문과 안 맞댐",
"why": "사람이 적은 메모 — 2026-09-18 5202·5203 칸 밀림을 바로잡은 사유다. 원문에 없는 글이라 맞댈 것이 없다.",
"class": "㉮ 영영 할 일 아님",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림",
"class_why": "사람이 적은 메모 — 2026-09-18 5202·5203 칸 밀림을 바로잡은 사유다. 원문에 없는 글이라 맞댈 것이 없다.",
"갈래": "메모"
},
"안 잰 칸 mach_loss_coef.loss_coefficient_per_hour": {
"what": "원문과 안 맞댐",
"why": "자료가 낳은 값 — 「계」 계수(10-7)를 10,000,000 으로 나눈 것이다. 낳은 밑값인 계수 넷은 이미 줄마다 맞대고 있어 여기서 또 맞대면 같은 것을 두 번 세는 셈이다.",
"class": "㉮ 영영 할 일 아님",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림",
"class_why": "자료가 낳은 값 — 「계」 계수(10-7)를 10,000,000 으로 나눈 것이다. 낳은 밑값인 계수 넷은 이미 줄마다 맞대고 있어 여기서 또 맞대면 같은 것을 두 번 세는 셈이다.",
"갈래": "낳은 값"
},
"안 잰 칸 mach_fuel_rate.parse_method": {
"what": "원문과 안 맞댐",
"why": "추출기 살림살이 — 그 줄을 어떻게 읽었나 적어 둔 표시(`verified_source_row_alignment`)다. 원문에 없는 말이다.",
"class": "㉮ 영영 할 일 아님",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림",
"class_why": "추출기 살림살이 — 그 줄을 어떻게 읽었나 적어 둔 표시(`verified_source_row_alignment`)다. 원문에 없는 말이다.",
"갈래": "살림살이"
},
"안 잰 칸 mach_fuel_rate.source_tables.section": {
"what": "원문과 안 맞댐",
"why": "표를 가리키는 이름표일 뿐 — 8-4 표의 머리와 줄은 이미 **표째 통째로** 맞대고 있다(`운전경비 원표 N번째`).",
"class": "㉮ 영영 할 일 아님",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림",
"class_why": "표를 가리키는 이름표일 뿐 — 8-4 표의 머리와 줄은 이미 **표째 통째로** 맞대고 있다(`운전경비 원표 N번째`).",
"갈래": "자리 표시"
},
"안 잰 칸 mach_operator_map.rules.alias": {
"what": "원문과 안 맞댐",
"why": "프로그램 안에서 쓰는 이름(`labor_op_const`) — 원문 낱말이 아니다.",
"class": "㉮ 영영 할 일 아님",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림",
"class_why": "프로그램 안에서 쓰는 이름(`labor_op_const`) — 원문 낱말이 아니다.",
"갈래": "프로그램 이름"
},
"안 잰 칸 mach_operator_map.rules.rule_id": {
"what": "원문과 안 맞댐",
"why": "프로그램 안에서 쓰는 규칙 이름(`construction_machine_operator`) — 원문 낱말이 아니다.",
"class": "㉮ 영영 할 일 아님",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림",
"class_why": "프로그램 안에서 쓰는 규칙 이름(`construction_machine_operator`) — 원문 낱말이 아니다.",
"갈래": "프로그램 이름"
},
"안 잰 칸 mach_operator_map.rules.source_section": {
"what": "원문과 안 맞댐",
"why": "어느 절에서 왔나 적어 둔 자리 표시(`8-1-3/5`) — 값이 아니다.",
"class": "㉮ 영영 할 일 아님",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림",
"class_why": "어느 절에서 왔나 적어 둔 자리 표시(`8-1-3/5`) — 값이 아니다.",
"갈래": "자리 표시"
},
"안 잰 칸 mach_rock_adj.rules.exception": {
"what": "원문과 안 맞댐",
"why": "원문 조건 글을 영어 이름으로 줄여 적은 것(`tire_or_wetland_bulldozer` = 타이어식·습지 불도저) — 글끼리 맞댈 수 없다. 붙는 수(25·20·10·0)는 「손료보정」 으로 이미 맞대고 있다.",
"class": "㉮ 영영 할 일 아님",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림",
"class_why": "원문 조건 글을 영어 이름으로 줄여 적은 것(`tire_or_wetland_bulldozer` = 타이어식·습지 불도저) — 글끼리 맞댈 수 없다. 붙는 수(25·20·10·0)는 「손료보정」 으로 이미 맞대고 있다.",
"갈래": "요약 이름"
},
"안 잰 칸 mach_rock_adj.rules.exclusion": {
"what": "원문과 안 맞댐",
"why": "위와 같음 — `dedicated_dump_truck_18_ton_or_more` = 18톤 이상 전용 덤프트럭.",
"class": "㉮ 영영 할 일 아님",
"owner": "랩탑 메인",
"owner_ask": "기계 원천 벌(mach_base_2026.json) 재추출 — 그 추출기가 이 저장소에 없어 우리가 못 돌림",
"class_why": "위와 같음 — `dedicated_dump_truck_18_ton_or_more` = 18톤 이상 전용 덤프트럭.",
"갈래": "요약 이름"
}
},
"labor_blind": {
"건설 pdf": {
"what": "3. 개별직종 노임단가.md",
"why": "원문 md 는 PDF 를 옮긴 것 — PDF 자체와의 옮김 틀림은 못 봄",
"class": "㉮ 영영 할 일 아님",
"갈래": "원문 부재",
"class_why": "맞댈 PDF 가 저장소에 없음 — md 가 우리 원문임. PDF↔md 옮김 틀림은 사람이 따로 볼 자리."
},
"건설 별칭 이름": {
"what": [
"labor_1001",
"labor_1002",
"labor_1003",
"labor_1007",
"labor_1008",
"labor_1012",
"labor_1013",
"labor_1015",
"labor_1016",
"labor_1017",
"labor_1018",
"labor_1019",
"labor_op_const",
"labor_op_general",
"labor_op_truck"
],
"why": "별칭 이름은 프로그램이 지은 것 — 가리키는 코드가 원문에 있는지만 봄",
"class": "㉮ 영영 할 일 아님",
"갈래": "원문 부재",
"class_why": "프로그램이 지은 별칭 — 원문에 있을 수 없는 말. 가리키는 코드가 원문에 있는지만 봄."
},
"안 잰 칸 labor_mfg.unit": {
"what": "원문과 안 맞댐",
"why": "`KRW/day` 는 프로그램 표기 — 원문 글(원·1일)과 글자로 안 맞댐",
"class": "㉮ 영영 할 일 아님",
"갈래": "원문 부재",
"class_why": "`KRW/day` 는 프로그램 표기 — 원문 글(원·1일)과 글자로 맞댈 꼴이 아님."
},
"안 잰 칸 labor_rate.unit": {
"what": "원문과 안 맞댐",
"why": "`KRW/day` 는 프로그램 표기 — 원문 글(원·1일)과 글자로 안 맞댐",
"class": "㉮ 영영 할 일 아님",
"갈래": "원문 부재",
"class_why": "위와 같음."
},
"제조 pdf": {
"what": "2026상반기_중소제조업_직종별_임금조사_중소기업중앙회.md",
"why": "원문 md 는 PDF 를 옮긴 것 — PDF 자체와의 옮김 틀림은 못 봄",
"class": "㉮ 영영 할 일 아님",
"갈래": "원문 부재",
"class_why": "위와 같음."
}
},
"material_blind": {
"API 스냅숏": {
"what": "나라장터_시설공통자재_2026-08-14.json",
"why": "원문이 API 로 받은 스냅숏 — 게시처(나라장터·오피넷) 값 자체와는 못 맞댐",
"class": "㉮ 영영 할 일 아님",
"갈래": "원문 부재",
"class_why": "원문이 API 로 받은 한때의 스냅숏 — 게시처(나라장터·오피넷) 값 자체는 저장소에 없음."
},
"안 잰 칸 mat_price.price_adopted_reason": {
"what": "원문과 안 맞댐",
"why": "빌더가 적은 까닭 글 — 원문 칸 아님",
"class": "㉮ 영영 할 일 아님",
"갈래": "원문 부재",
"class_why": "빌더가 적은 까닭 글 — 원문 칸이 아님."
}
},
"oil_blind": {
"API 스냅숏": {
"what": [
"유가_전국평균_2026-08-14.json",
"유가_시도별_2026-09-09.json"
],
"why": "원문이 API 로 받은 스냅숏 — 게시처(나라장터·오피넷) 값 자체와는 못 맞댐",
"class": "㉮ 영영 할 일 아님",
"갈래": "원문 부재",
"class_why": "원문이 API 스냅숏 — 게시처 값 자체는 저장소에 없음."
},
"시도 거래일": {
"what": "시도별 원천에 거래일 칸이 없음 — 수집일과만 맞댐",
"why": "시도별 원천 줄에 거래일이 없어 `수집일` 로만 맞댐",
"class": "㉮ 영영 할 일 아님",
"갈래": "원문 부재",
"class_why": "시도별 원천 줄에 거래일 칸이 아예 없음 — `수집일` 로만 맞댐."
},
"안 잰 칸 oil.scope": {
"what": "원문과 안 맞댐",
"why": "프로그램 표기(KRW/L · national_average) — 원천에 칸 없음",
"class": "㉮ 영영 할 일 아님",
"갈래": "원문 부재",
"class_why": "프로그램 표기(`national_average`) — 원천에 그 칸이 없음."
},
"안 잰 칸 oil.unit": {
"what": "원문과 안 맞댐",
"why": "프로그램 표기(KRW/L · national_average) — 원천에 칸 없음",
"class": "㉮ 영영 할 일 아님",
"갈래": "원문 부재",
"class_why": "프로그램 표기(`KRW/L`) — 원천에 그 칸이 없음."
},
"안 잰 칸 oil_regional.scope": {
"what": "원문과 안 맞댐",
"why": "프로그램 표기(KRW/L · national_average) — 원천에 칸 없음",
"class": "㉮ 영영 할 일 아님",
"갈래": "원문 부재",
"class_why": "위와 같음."
},
"안 잰 칸 oil_regional.source_product_name": {
"what": "원문과 안 맞댐",
"why": "시도별 원천에 상품 이름 칸 없음",
"class": "㉮ 영영 할 일 아님",
"갈래": "원문 부재",
"class_why": "시도별 원천에 상품 이름 칸이 없음."
},
"안 잰 칸 oil_regional.unit": {
"what": "원문과 안 맞댐",
"why": "프로그램 표기(KRW/L · national_average) — 원천에 칸 없음",
"class": "㉮ 영영 할 일 아님",
"갈래": "원문 부재",
"class_why": "위와 같음."
}
},
"rate_blind": {
"processing_rules": {
"what": [
"note",
"owner_supplied_material",
"performance_guarantee_fee",
"profit",
"rounding",
"safety_management_cost",
"scale_bracket"
],
"why": "끝수·산식 처리 규칙 — 코드 규칙이라 원문 대조 대상 아님(거울 시험 몫)",
"class": "㉮ 영영 할 일 아님",
"갈래": "원문 부재",
"class_why": "끝수·산식 처리 규칙 — 코드 규칙이라 원문에 견줄 글이 없음(거울 시험 몫)."
},
"안 잰 칸 rate_equipment_payment_guarantee.base_note": {
"what": "코드(`B09_Estimation_Statutory.STATUTORY_ITEMS`)가 직접공사비로 계산하고 있는 것과 맞춘 표기.",
"why": "설명 글",
"class": "㉮ 영영 할 일 아님",
"갈래": "원문 부재",
"class_why": "설명 글 — 값이 아님."
},
"안 잰 칸 rate_overhead.basis": {
"what": "조달청 「2026년 토목·조경·산업환경설비공사 원가계산 간접공사비(제비율) 적용기준」(2026-04-13). ⚠ 구간 라벨의 `billion` 은 **십억 원** — `lt_5_billion` 은 50억 미만이다. 종합(토목·조경·산업설비)은 5억미만~30억~50억 8 · 50~100억·100~300억 6.5 · 300~1000억 5 · 1000억이상 4.5, 전문 등은 5억미만 8 · 5~30억 6.5 · 30~50억·50~100억 5 · 100억이상 4.5.",
"why": "데스크탑 서브가 붙인 설명 글 — 값 아님",
"class": "㉮ 영영 할 일 아님",
"갈래": "원문 부재",
"class_why": "데스크탑 서브가 붙인 설명 글 — 값이 아님."
},
"안 잰 칸 rate_overhead.specialty_note": {
"what": "⚠ 2026-09-18 **300억 이상 두 구간이 통째로 빠져 있었음** — 마지막이 「100억-300억 미만」으로 닫혀 300억 넘는 전문공사가 어느 구간에도 안 걸렸음. 원본 XLSX(BL35:BR46) 대로 300~1000억 · 1000억 이상을 더함(둘 다 4.5%). 값은 원문 그대로.",
"why": "데스크탑 서브가 붙인 설명 글 — 값 아님",
"class": "㉮ 영영 할 일 아님",
"갈래": "원문 부재",
"class_why": "위와 같음."
},
"안 잰 칸 rate_safety_base.amount_bracket": {
"what": "500_million_to_5_billion",
"why": "다른 칸을 가리키는 표시 — 값 아님",
"class": "㉮ 영영 할 일 아님",
"갈래": "원문 부재",
"class_why": "다른 칸을 가리키는 표시 — 값이 아님."
},
"안 잰 칸 rate_safety_base.embedded_in": {
"what": "rate_safety_pct.brackets",
"why": "다른 칸을 가리키는 표시 — 값 아님",
"class": "㉮ 영영 할 일 아님",
"갈래": "원문 부재",
"class_why": "위와 같음."
},
"안 잰 칸 rate_safety_pct.base_rule": {
"what": "min_of_two_formulas",
"why": "도급자관급 포함 시 두 식 중 작은 값 — xlsx 글(EB11·EB13) 해석이라 안 맞댐",
"class": "㉮ 영영 할 일 아님",
"갈래": "원문 부재",
"class_why": "도급자관급이 든 때 두 식 중 작은 값을 쓰라는 xlsx 글(EB11·EB13)을 프로그램 식으로 옮긴 것 — 글과 식은 꼴이 달라 글자로 맞댈 수 없음."
},
"안 잰 칸 rate_safety_pct.base_with_owner_supplied_material": {
"what": "minimum_of_statutory_two_formulas",
"why": "도급자관급 포함 시 두 식 중 작은 값 — xlsx 글(EB11·EB13) 해석이라 안 맞댐",
"class": "㉮ 영영 할 일 아님",
"갈래": "원문 부재",
"class_why": "위와 한 자리."
},
"안 잰 칸 rate_vat.base": {
"what": "construction_cost_before_vat",
"why": "부가세 — 근거(부가가치세법)가 sources 에 없음",
"class": "㉮ 영영 할 일 아님",
"갈래": "원문 부재",
"class_why": "부가세 근거(부가가치세법)가 `sources` 에 없음 — 저장소에 원문이 없어 맞댈 것이 없음."
},
"안 잰 칸 rate_vat.rate_percent": {
"what": 10.0,
"why": "부가세 — 근거(부가가치세법)가 sources 에 없음",
"class": "㉮ 영영 할 일 아님",
"갈래": "원문 부재",
"class_why": "위와 같음."
},
"조달청 요약표": {
"what": "2026.04.13_조달청_토목공사_제비율.xlsx",
"why": "xlsx 는 조달청 요약표 — 각 고시 원문과는 안 맞댐(연금만 법령과 맞댐)",
"class": "㉮ 영영 할 일 아님",
"갈래": "원문 부재",
"class_why": "xlsx 는 조달청이 고시를 모아 요약한 표 — 각 고시 원문은 저장소에 없음(연금만 법령과 맞댐)."
}
}
}
},
"_갈래": {
"센 날": "2026-09-18",
"잣대": "두 갈래로 가름 — **원문 부재**: 값이 원문·원천에 없거나 원문 밖 말이라 채울 것이 없음 · **잣대 못 알아봄**: 값은 원문에 있는데 전사·읽기가 못 가름 ⇒ 고치면 풀림. ㉮ 영영 할 일 아님 · ㉯ 남이 고쳐야 풀림 · ㉰ 사용자·브레인 판단.",
"셈": {
"원문 부재 / ㉰": 7,
"잣대 못 알아봄 / ㉯": 17
},
"할 일 아님으로 뺀 줄": 34
}
}
@@ -270,6 +270,13 @@ def read_machine(path: Path) -> dict:
out["loss"].update(
(c, {f: v[k] for f, v in values.items()}) for k, c in enumerate(codes)
)
# 규격 — 원문 손료표의 「규 격」 칸(분류번호 바로 뒤). 자료는 이 값을 가격·연료 벌에도 함께 씀.
# 토막이 코드 수와 안 맞는 줄(`2,200×5,150 ×1,000` 처럼 규격 안에 빈칸이 든 것)은 안 담는다 —
# 맞대기에서 자료 값으로 갈음되므로 지어 채우는 일이 없다.
specs = r[1].split()
if len(specs) == len(codes):
for k, c in enumerate(codes):
out["loss"][c]["specification"] = specs[k]
for k in range(at["8-3 기계손료"], at["8-4 운전경비"]):
# 머리 없는 **이어 표** — 책장 넘김에 밀린 줄을 빈 줄 뒤에 따로 적어 둔 자리(9020-0022~0200).
# `|---|` 가 없어 표로 잡히지 않아 **추출기도 이 읽기도 못 봄** — 원문에 있는 값이 조용히 빠진다.
@@ -314,9 +321,9 @@ def check_machine(src: dict, bad: dict, blind: dict) -> dict:
source, v = src["mach"]["source"], src["mach"]["data"]["variables"]
counts = {}
for label, var, rows, fields in (
("가격", "mach_price", source["price"], ("price_thousand_krw",)),
("손료", "mach_loss_coef", source["loss"], (*LOSS_COLS, *LOSS_COEF)),
("연료", "mach_fuel_rate", source["fuel"], FUEL_FIELDS),
("가격", "mach_price", source["price"], ("price_thousand_krw", "specification")),
("손료", "mach_loss_coef", source["loss"], (*LOSS_COLS, *LOSS_COEF, "specification")),
("연료", "mach_fuel_rate", source["fuel"], (*FUEL_FIELDS, "specification")),
):
records = v[var].get("records") or v[var]["parsed_records"]
by_code = {r["machine_code"]: r for r in records}