Merge remote-tracking branch 'origin/main_laptop_1' into sub_desktop_1
충돌 여덟 — 일곱은 **뽑아서 생기는 파일**이라 랩탑 쪽을 취하고 곧바로 다시 뽑음. 남은 하나 `work_item_keys_const.json` 은 **영구 장부**라 어느 쪽도 버리지 않고 **합집합**으로 둠 (내 CW-00326 · 랩탑 CW-00370 — 갈래 208 → 209). 열쇠는 지우지 않는 것이 잣대임.
This commit is contained in:
@@ -2,11 +2,11 @@
|
||||
"schema_version": "1.0",
|
||||
"dataset_id": "mach_base",
|
||||
"effective_date": "2026-01-01",
|
||||
"generated_at": "2026-09-18T13:22:41+09:00",
|
||||
"generated_at": "2026-09-18T13:19:25+09:00",
|
||||
"sources": [
|
||||
{
|
||||
"path": "resources/knowledge/original/원가계산/건설공사_표준품셈/01_공통부문/제8장_건설기계.md",
|
||||
"sha256": "dbe4e35f695fc1189cd646630c245869dab32831847b49128c4edd55c33e305b",
|
||||
"sha256": "b820290a56d7ebeed9bcdbb8128ccf6ecbaf5de6cc395b2efd8c75a4e99dbc72",
|
||||
"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": 3746,
|
||||
"line": 3735,
|
||||
"headers": [
|
||||
"분류번호",
|
||||
"기계명",
|
||||
@@ -15367,7 +15367,7 @@
|
||||
},
|
||||
{
|
||||
"section": "8-4 운전경비 산정('08, '09, '10, '11, '12, '13, '14, '15, '16, '17년 보완)8-4-1 [00]토공기계",
|
||||
"line": 3782,
|
||||
"line": 3771,
|
||||
"headers": [
|
||||
"분류번호",
|
||||
"기계명",
|
||||
@@ -15597,7 +15597,7 @@
|
||||
},
|
||||
{
|
||||
"section": "8-4-2 [10]다짐기계",
|
||||
"line": 3814,
|
||||
"line": 3803,
|
||||
"headers": [
|
||||
"분류번호",
|
||||
"기계명",
|
||||
@@ -15867,7 +15867,7 @@
|
||||
},
|
||||
{
|
||||
"section": "8-4-3 [20]운반 및 하역기계('21년 보완)",
|
||||
"line": 3851,
|
||||
"line": 3840,
|
||||
"headers": [
|
||||
"분류번호",
|
||||
"기계명",
|
||||
@@ -16089,7 +16089,7 @@
|
||||
},
|
||||
{
|
||||
"section": "8-4-3 [20]운반 및 하역기계('21년 보완)",
|
||||
"line": 3882,
|
||||
"line": 3871,
|
||||
"headers": [
|
||||
"분류번호",
|
||||
"기계명",
|
||||
@@ -16415,7 +16415,7 @@
|
||||
},
|
||||
{
|
||||
"section": "8-4-4 [30]포장기계",
|
||||
"line": 3926,
|
||||
"line": 3915,
|
||||
"headers": [
|
||||
"분류번호",
|
||||
"기계명",
|
||||
@@ -16645,7 +16645,7 @@
|
||||
},
|
||||
{
|
||||
"section": "8-4-5 [40]콘크리트기계",
|
||||
"line": 3958,
|
||||
"line": 3947,
|
||||
"headers": [
|
||||
"분류번호",
|
||||
"기계명",
|
||||
@@ -16699,7 +16699,7 @@
|
||||
},
|
||||
{
|
||||
"section": "8-4-5 [40]콘크리트기계",
|
||||
"line": 3968,
|
||||
"line": 3957,
|
||||
"headers": [
|
||||
"분류번호",
|
||||
"기계명",
|
||||
@@ -16881,7 +16881,7 @@
|
||||
},
|
||||
{
|
||||
"section": "8-4-6 [50]골재생산기계 등",
|
||||
"line": 3994,
|
||||
"line": 3983,
|
||||
"headers": [
|
||||
"분류번호",
|
||||
"기계명",
|
||||
@@ -16983,7 +16983,7 @@
|
||||
},
|
||||
{
|
||||
"section": "8-4-6 [50]골재생산기계 등",
|
||||
"line": 4010,
|
||||
"line": 3999,
|
||||
"headers": [
|
||||
"분류번호",
|
||||
"기계명",
|
||||
@@ -17069,7 +17069,7 @@
|
||||
},
|
||||
{
|
||||
"section": "8-4-7 [60]기초공사용 기계('21년 보완)",
|
||||
"line": 4024,
|
||||
"line": 4013,
|
||||
"headers": [
|
||||
"분류번호",
|
||||
"기계명",
|
||||
@@ -17251,7 +17251,7 @@
|
||||
},
|
||||
{
|
||||
"section": "8-4-8 [70]기타기계('24년 보완)",
|
||||
"line": 4050,
|
||||
"line": 4039,
|
||||
"headers": [
|
||||
"분류번호",
|
||||
"기계명",
|
||||
@@ -17553,7 +17553,7 @@
|
||||
},
|
||||
{
|
||||
"section": "8-4-8 [70]기타기계('24년 보완)",
|
||||
"line": 4091,
|
||||
"line": 4080,
|
||||
"headers": [
|
||||
"분류번호",
|
||||
"기계명",
|
||||
@@ -17711,7 +17711,7 @@
|
||||
},
|
||||
{
|
||||
"section": "8-4-9 [90]해상기계(9010) 펌프준설선 ('10, '11년 보완)",
|
||||
"line": 4122,
|
||||
"line": 4111,
|
||||
"headers": [
|
||||
"명 칭",
|
||||
"단위",
|
||||
@@ -17879,7 +17879,7 @@
|
||||
},
|
||||
{
|
||||
"section": "8-4-9 [90]해상기계(9010) 펌프준설선 ('10, '11년 보완)",
|
||||
"line": 4135,
|
||||
"line": 4124,
|
||||
"headers": [
|
||||
"명 칭",
|
||||
"단위",
|
||||
@@ -18020,7 +18020,7 @@
|
||||
},
|
||||
{
|
||||
"section": "8-4-9 [90]해상기계(9010) 펌프준설선 ('10, '11년 보완)",
|
||||
"line": 4148,
|
||||
"line": 4137,
|
||||
"headers": [
|
||||
"명 칭",
|
||||
"단위",
|
||||
@@ -18110,7 +18110,7 @@
|
||||
},
|
||||
{
|
||||
"section": "8-4-9 [90]해상기계(9010) 펌프준설선 ('10, '11년 보완)",
|
||||
"line": 4158,
|
||||
"line": 4147,
|
||||
"headers": [
|
||||
"명 칭",
|
||||
"단위",
|
||||
@@ -18186,7 +18186,7 @@
|
||||
},
|
||||
{
|
||||
"section": "8-4-9 [90]해상기계(9010) 펌프준설선 ('10, '11년 보완)",
|
||||
"line": 4169,
|
||||
"line": 4158,
|
||||
"headers": [
|
||||
"명 칭",
|
||||
"단위",
|
||||
@@ -18258,7 +18258,7 @@
|
||||
},
|
||||
{
|
||||
"section": "8-4-9 [90]해상기계(9010) 펌프준설선 ('10, '11년 보완)",
|
||||
"line": 4179,
|
||||
"line": 4168,
|
||||
"headers": [
|
||||
"명 칭",
|
||||
"단위",
|
||||
@@ -18306,7 +18306,7 @@
|
||||
},
|
||||
{
|
||||
"section": "8-4-9 [90]해상기계(9010) 펌프준설선 ('10, '11년 보완)",
|
||||
"line": 4189,
|
||||
"line": 4178,
|
||||
"headers": [
|
||||
"명 칭",
|
||||
"단위",
|
||||
@@ -18480,7 +18480,7 @@
|
||||
},
|
||||
{
|
||||
"section": "8-4-9 [90]해상기계(9010) 펌프준설선 ('10, '11년 보완)",
|
||||
"line": 4201,
|
||||
"line": 4190,
|
||||
"headers": [
|
||||
"명 칭",
|
||||
"단위",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -7267,7 +7267,7 @@
|
||||
"name_ko": "형태 미판정 표",
|
||||
"summary": "생산량형인지 소요량형인지 못 정한 표.",
|
||||
"shape": "list",
|
||||
"rows": 196,
|
||||
"rows": 175,
|
||||
"columns": [
|
||||
{
|
||||
"key": "pum_table_id",
|
||||
@@ -7323,7 +7323,7 @@
|
||||
"name_ko": "밑수 미확보 표",
|
||||
"summary": "기준 수량을 못 찾은 표.",
|
||||
"shape": "list",
|
||||
"rows": 431,
|
||||
"rows": 438,
|
||||
"columns": [
|
||||
{
|
||||
"key": "pum_table_id",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"dataset_id": "data_work_item_master_manifest",
|
||||
"generated_at": "2026-09-18T13:23:04+09:00",
|
||||
"generated_at": "2026-09-18T13:27:21+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": "42ace820b2feb6b7f83585bc9f8d4abe88c0609d4030ed54f5e52df00526e1bb",
|
||||
"sha256": "170b13a97e07bec53f1ba361a8b89664b3c1d0330598ca69ae88debe94d3825b",
|
||||
"size_bytes": 1095122
|
||||
},
|
||||
{
|
||||
@@ -22,8 +22,8 @@
|
||||
},
|
||||
{
|
||||
"file": "basis_missing_2026-01-01.json",
|
||||
"sha256": "57c58458ef2a95aa67a5dd2e15989f2613c628e7c697c84d4a944349fa102422",
|
||||
"size_bytes": 18434
|
||||
"sha256": "3ef647276c8b93c5f1532ef8d6c0e83f6d8154dbd392c06fc71d148b0ad65d78",
|
||||
"size_bytes": 18788
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,29 +1,29 @@
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"dataset_id": "data_work_item_master_manifest",
|
||||
"generated_at": "2026-09-18T13:24:32+09:00",
|
||||
"generated_at": "2026-09-18T13:28:12+09:00",
|
||||
"built_by": "B08_Quantity/B08_Quantity_Build_WorkItemMaster.py",
|
||||
"source": {
|
||||
"dataset_id": "pum_const",
|
||||
"effective_date": "2026-01-01",
|
||||
"sha256": "282751df8d0cbb77f759295bd2e0a969058c7b7f219c50adff17d72066805015",
|
||||
"sha256": "df4de0d8194bc0f30b4078dbfd4b50d3c59d38ee53225e0d8eb056e7b0da9f55",
|
||||
"file": "pum_const_2026.json"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"file": "const_work_item_master_2026-01-01.json",
|
||||
"sha256": "fb8ace3e7ef888739eb729bc6b6235c94265b63f115e12c0590c6314cd567aa6",
|
||||
"size_bytes": 4717466
|
||||
"sha256": "f2e53cf68ea6d051d02aefea798d9da380d893a99b6502885bba3678b5c68616",
|
||||
"size_bytes": 4718431
|
||||
},
|
||||
{
|
||||
"file": "const_form_undetermined_2026-01-01.json",
|
||||
"sha256": "ed41e95f80217cfad006da43d5a501691b0fab155d561c6cff837be7168c51fe",
|
||||
"size_bytes": 115388
|
||||
"sha256": "16745ba1e2da669dc43febb2dcbc4c52acce7c146debb1ad72dd5cb6216ca81d",
|
||||
"size_bytes": 104333
|
||||
},
|
||||
{
|
||||
"file": "const_basis_missing_2026-01-01.json",
|
||||
"sha256": "29cb1a6e2c436ecaa47ce962e83a763f24bdd9a7f9ed0374731bb7f7dc8b32c4",
|
||||
"size_bytes": 110609
|
||||
"sha256": "03854c4fa9421f70f0decb6c0d89a58b0f21be34616de81e54720cf049013bcb",
|
||||
"size_bytes": 115094
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -58,14 +58,14 @@
|
||||
"section": "4-1-1. 임업용 동력기계톱",
|
||||
"pum_form": "productivity",
|
||||
"line": 1932,
|
||||
"why": "미판독 — 원문이 적었는데 우리가 못 읽음"
|
||||
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(단위 : ㎥/1인/1일)' 라 밑수로 안 받음"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "F0084",
|
||||
"section": "4-1-2. 하베스터(부착형 스트로크)",
|
||||
"pum_form": "productivity",
|
||||
"line": 1950,
|
||||
"why": "미판독 — 원문이 적었는데 우리가 못 읽음"
|
||||
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(단위 : ㎥/1인/1일)' 라 밑수로 안 받음"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "F0085",
|
||||
@@ -114,7 +114,7 @@
|
||||
"section": "6-2-1. 둘레베기",
|
||||
"pum_form": "requirement",
|
||||
"line": 3099,
|
||||
"why": "미판독 — 원문이 적었는데 우리가 못 읽음"
|
||||
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(1ha당, 100본당)' 라 밑수로 안 받음"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "F0155",
|
||||
@@ -415,14 +415,14 @@
|
||||
"section": "8-3. 소각, 매몰, 훈증, 박피",
|
||||
"pum_form": "productivity",
|
||||
"line": 4373,
|
||||
"why": "미판독 — 원문이 적었는데 우리가 못 읽음"
|
||||
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(㎥/인)' 라 밑수로 안 받음"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "F0230",
|
||||
"section": "8-6-3. 지상방제",
|
||||
"pum_form": "requirement",
|
||||
"line": 4582,
|
||||
"why": "미판독 — 원문이 적었는데 우리가 못 읽음"
|
||||
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(단위 : 인)' 라 밑수로 안 받음"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "F0232",
|
||||
@@ -443,7 +443,7 @@
|
||||
"section": "8-11. 이동식 임목 파쇄",
|
||||
"pum_form": "productivity",
|
||||
"line": 4674,
|
||||
"why": "미판독 — 원문이 적었는데 우리가 못 읽음"
|
||||
"why": "미판독 — 원문이 '(단위 : 1대 1조, 시간당)' 라고 적었는데 우리가 못 읽음"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "F0238",
|
||||
@@ -527,7 +527,7 @@
|
||||
"section": "13-2-4. 야면석 채집(인력)",
|
||||
"pum_form": "requirement",
|
||||
"line": 7079,
|
||||
"why": "미판독 — 원문이 적었는데 우리가 못 읽음"
|
||||
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(단위: 인 당)' 라 밑수로 안 받음"
|
||||
},
|
||||
{
|
||||
"pum_table_id": "F0405",
|
||||
@@ -555,7 +555,7 @@
|
||||
"section": "13-15-2. 목책 설치",
|
||||
"pum_form": "requirement",
|
||||
"line": 7868,
|
||||
"why": "미판독 — 원문이 적었는데 우리가 못 읽음"
|
||||
"why": "원문 부재 — 거절 자리: 원문이 적은 것이 '(단위: 인/조)' 라 밑수로 안 받음"
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -12929,6 +12929,12 @@
|
||||
"4시간차단": "02"
|
||||
}
|
||||
},
|
||||
"CW-00370": {
|
||||
"next_serial": 2,
|
||||
"slots": {
|
||||
"㎾": "01"
|
||||
}
|
||||
},
|
||||
"CW-00326": {
|
||||
"next_serial": 4,
|
||||
"slots": {
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"effective_date": "2026-01-01",
|
||||
"pum_edition": "2026-01-01",
|
||||
"toc_edition": "산림청고시제2025-82호",
|
||||
"generated_at": "2026-09-18T13:23:04+09:00",
|
||||
"generated_at": "2026-09-18T13:27:21+09:00",
|
||||
"dataset_version": {
|
||||
"dataset_id": "pum_forest",
|
||||
"effective_date": "2026-01-01",
|
||||
@@ -27,8 +27,8 @@
|
||||
"form_undetermined": 0,
|
||||
"basis_found": 253,
|
||||
"basis_missing": 79,
|
||||
"basis_absent_in_source": 71,
|
||||
"basis_unparsed": 8,
|
||||
"basis_absent_in_source": 78,
|
||||
"basis_unparsed": 1,
|
||||
"basis_grouped": 59,
|
||||
"axis_roles": {
|
||||
"general_provision": 78,
|
||||
|
||||
@@ -483,14 +483,17 @@ def test_밑수_미확보를_둘로_가른다(master: dict) -> None:
|
||||
|
||||
stats = master["stats"]
|
||||
assert stats["basis_missing"] == 79
|
||||
# 2026-09-18 합침 70 → 71 — 원문 md 가 풀리며 밑수를 안 적은 표가 하나 더 드러남
|
||||
assert stats["basis_absent_in_source"] == 71
|
||||
# 2026-09-18 합침 70 → 71 → 78 — **거절 자리를 「채울 것 아님」 쪽으로 옮겼다.**
|
||||
# 원문이 적은 것이 「(인/일)」·「㎥/hr」·「회당」이면 그것은 값의 단위이지 밑수가 아니다.
|
||||
assert stats["basis_absent_in_source"] == 78
|
||||
# 2026-09-18 「당」 없이 몫으로만 적힌 자리(「(인/100㎡)」·「(대/ton)」)를 가리게 해 다섯을 더 채움.
|
||||
# 미판독 12 → 9 → 10(가림이 넓어져 새로 드러난 것 포함) · 확보 243 → 251.
|
||||
# ⚠ 남은 아홉은 **거절 자리**다 — 「(단위 : 인)」 셋(2026-09-09 오독 판정) ·
|
||||
# 「㎥/1인/1일」·「1ha당, 100본당」·「1대 1조, 시간당」·「인 당」은 분모가 둘 이상이다.
|
||||
# 2026-09-18 10 → 8 — **표 머리 칸까지 읽게 하자** 8-6-2·8-6-3 드론방제 「ha당」 둘이 채워짐
|
||||
assert stats["basis_unparsed"] == 8
|
||||
# 2026-09-18 8 → 1 — 거절 자리(빗금 단위·회당·밑수 둘)를 갈라내니 **진짜 할 일은 하나**다
|
||||
# (F0237 「1대 1조, 시간당」 — 무엇이 밑수인지 사람이 봐야 함).
|
||||
assert stats["basis_unparsed"] == 1
|
||||
assert stats["basis_absent_in_source"] + stats["basis_unparsed"] == stats["basis_missing"]
|
||||
items = _json.loads(
|
||||
_Path("resources/data_work_item_master/basis_missing_2026-01-01.json").read_text(
|
||||
|
||||
Reference in New Issue
Block a user