fix(master_data): 8-1-7 손료 보정 — 경비 보정 줄을 모든 기계로 · 손료만 로직 보정 줄 · 산림 10-11 불도저 운반 암석 보정

- 「공통 8 기계 시간당 경비(손료 보정)」 고르기 = 일반 경비 줄 전부 + 로더(무한궤도) · 8-1-7 표 밖 기종과 주① 19톤 이상 불도저 · 18톤 이상 덤프는 가산 0
- 새 줄 「공통 8 기계 시간당 손료(손료 보정)」 — 굴착기(무한궤도)만 가산
- 산림 10-11 불도저 운반: 파쇄암 · 발파암 = 암석작업 보정(해석은 비고)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
This commit is contained in:
2026-09-19 20:27:42 +09:00
co-authored by Claude Opus 5
parent eeaa8ac504
commit 5ac7257a70
3 changed files with 304 additions and 98 deletions
@@ -130,11 +130,11 @@
{ "이름": "기계손료", "식": "손료", "비목": "경비", "출처": "건설품셈 공통 8-1-6 2" }
],
"끝수": "손료 원 미만 버림(건설품셈 공통 8-1-5 12) · 합계 원문 규정 없음",
"비고": "고르기는 쓰는 기계만 — 주연료·조종원이 있는 기계는 더 넣어 씀 · 암석·전석섞인토사 작업의 불도저(19톤 미만 · 타이어·습지)·로더(무한궤도)·덤프트럭(18톤 미만)은 「8 기계 시간당 경비(손료 보정)」(8-1-7 1)"
"비고": "고르기는 쓰는 기계만 — 주연료·조종원이 있는 기계는 더 넣어 씀 · 암석·전석섞인토사 작업의 불도저(19톤 미만 · 타이어·습지)·로더(무한궤도)·덤프트럭(18톤 미만)은 「공통 8 기계 시간당 경비(손료 보정)」(8-1-7 1)"
},
{
"열쇠": "공통 8 기계 시간당 경비(손료 보정)",
"이름": "기계 시간당 기계경비(불도저 · 로더(무한궤도) · 덤프트럭 손료 보정)",
"이름": "기계 시간당 기계경비(8-1-7 손료 보정)",
"결과단위": "원/시간",
"출처": "건설품셈 공통 8-1-5 · 8-1-6 · 8-1-7",
"소유": "공용",
@@ -142,13 +142,123 @@
{
"이름": "기계",
"고르기": [
"1730-0015",
"7204-0055",
"0602-0150",
"2702-0020",
"0101-0007",
"0101-0010",
"0101-0012",
"0101-0019",
"0101-0032",
"2105-0005",
"2104-0010",
"2104-0015",
"2104-0020",
"2104-0025",
"2104-0030",
"2104-0035",
"2104-0040",
"2104-0045",
"2104-0050",
"2104-0060",
"2104-0070",
"2104-0080",
"2104-0100",
"2104-0130",
"2104-0160",
"2104-0200",
"2104-0220",
"2104-0250",
"2104-0300",
"4504-0032",
"4504-0036",
"4504-0041",
"4504-0043",
"4504-0047",
"4504-0052",
"4205-0010",
"4205-0017",
"4205-0020",
"4205-0030",
"4205-0040",
"4205-0045",
"2105-0002",
"2105-0003",
"2105-0010",
"2105-0015",
"2105-0018",
"2502-0025",
"0602-0025",
"2502-0050",
"2101-0010",
"2101-0015",
"2101-0020",
"2101-0025",
"2101-0030",
"2101-0035",
"2101-0040",
"2101-0050",
"2101-0070",
"2101-0080",
"2101-0100",
"2101-0150",
"2101-0220",
"2101-0280",
"2101-0300",
"7204-0018",
"7204-0160",
"5205-0210",
"5405-0110",
"7505-0450",
"5205-0255",
"7505-0150",
"5205-0103",
"6701-0147",
"6701-0184",
"5205-0170",
"7505-0350",
"0302-0134",
"7505-0100",
"7505-0050",
"5205-0071",
"7505-0025",
"0502-0036",
"1306-0100",
"1506-0032",
"0121-0004",
"1305-0007",
"7204-0038",
"7204-0065",
"0302-0057",
"5701-0020",
"0302-0095",
"3201-0003",
"1106-0012",
"1406-0015",
"1206-0008",
"3601-0102",
"1306-0025",
"0211-0018",
"0602-0045",
"3901-0300",
"7505-0250",
"2502-0035",
"1306-0120",
"1106-0010",
"3201-0001",
"1406-0008",
"3601-0202",
"3601-0402",
"3611-0142",
"2502-0020",
"2502-0075",
"5205-0035",
"2702-0030",
"2702-0060",
"0102-0015",
"0102-0028",
"0102-0033",
"0121-0004",
"0121-0013",
"0301-0057",
"0301-0076",
@@ -158,85 +268,35 @@
"0301-0153",
"0301-0172",
"0301-0287",
"0602-0025",
"0602-0045",
"0602-0060",
"0602-0080",
"0602-0105",
"0602-0150"
"0602-0105"
]
},
{
"이름": "지역",
"고르기": [
"전국평균",
"전국",
"서울",
"경기",
"강원",
"충북",
"충남",
"전북",
"경북",
"경남",
"부산",
"제주",
"대구",
"인천",
"대전",
"울산",
"세종",
"전남광주"
],
"고르기": ["전국평균", "전국", "서울", "경기", "강원", "충북", "충남", "전북", "경북", "경남", "부산", "제주", "대구", "인천", "대전", "울산", "세종", "전남광주"],
"출처": "건설품셈 공통 8-1-7 5"
},
{
"이름": "보정작업",
"고르기": [
"해당 없음",
"암석작업(연암・보통암・경암)",
"전석섞인토사"
],
"출처": "건설품셈 공통 8-1-7 1"
}
{ "이름": "보정작업", "고르기": ["해당 없음", "암석작업(연암・보통암・경암)", "전석섞인토사"], "출처": "건설품셈 공통 8-1-7 1" }
],
"중간": [
{
"이름": "보정기종",
"식": "만약(기계 == '0101-0007' 또는 기계 == '0101-0010' 또는 기계 == '0101-0012' 또는 기계 == '0102-0015' 또는 기계 == '0102-0028' 또는 기계 == '0102-0033' 또는 기계 == '0121-0004' 또는 기계 == '0121-0013', '불도저(19톤이상 제외)', 만약(기계 == '0602-0025' 또는 기계 == '0602-0045' 또는 기계 == '0602-0060' 또는 기계 == '0602-0080' 또는 기계 == '0602-0105' 또는 기계 == '0602-0150', '덤프트럭', '굴착기(무한궤도) 및 로더(무한궤도)'))",
"식": "만약(기계 == '0101-0007' 또는 기계 == '0101-0010' 또는 기계 == '0101-0012' 또는 기계 == '0102-0015' 또는 기계 == '0102-0028' 또는 기계 == '0102-0033' 또는 기계 == '0121-0004' 또는 기계 == '0121-0013', '불도저(19톤이상 제외)', 만약(기계 == '0602-0025' 또는 기계 == '0602-0045' 또는 기계 == '0602-0060' 또는 기계 == '0602-0080' 또는 기계 == '0602-0105' 또는 기계 == '0602-0150', '덤프트럭', 만약(기계 == '0301-0057' 또는 기계 == '0301-0076' 또는 기계 == '0301-0095' 또는 기계 == '0301-0115' 또는 기계 == '0301-0134' 또는 기계 == '0301-0153' 또는 기계 == '0301-0172' 또는 기계 == '0301-0287', '굴착기(무한궤도) 및 로더(무한궤도)', '없음')))",
"출처": "건설품셈 공통 8-1-7 1 주①"
},
{
"이름": "가산비율",
"식": "만약(보정작업 == '해당 없음', 0, 찾기(계수:건설품셈:공통 8-1-7 손료보정, 기종=보정기종, 작업=보정작업).가산비율)",
"출처": "건설품셈 공통 8-1-7 1"
},
{ "이름": "가산비율", "식": "만약(보정작업 == '해당 없음' 또는 보정기종 == '없음', 0, 찾기(계수:건설품셈:공통 8-1-7 손료보정, 기종=보정기종, 작업=보정작업).가산비율)", "출처": "건설품셈 공통 8-1-7 1" },
{
"이름": "손료",
"식": "버림(기계:건설품셈:{기계}.가격 * 1000 * ((기계:건설품셈:{기계}.상각비계수 + 기계:건설품셈:{기계}.정비비계수) * (1 + 가산비율 / 100) + 기계:건설품셈:{기계}.관리비계수) / 10000000, 0)",
"출처": "건설품셈 공통 8-1-5 12 · 8-1-6 4 · 8-1-7 1"
},
{
"이름": "연료",
"식": "기계:건설품셈:{기계}.주연료종류",
"출처": "건설품셈 공통 8-4 주①㉰"
},
{
"이름": "직종",
"식": "기계:건설품셈:{기계}.조종원직종",
"출처": "건설품셈 공통 8-1-3 5"
}
{ "이름": "연료", "식": "기계:건설품셈:{기계}.주연료종류", "출처": "건설품셈 공통 8-4 주①㉰" },
{ "이름": "직종", "식": "기계:건설품셈:{기계}.조종원직종", "출처": "건설품셈 공통 8-1-3 5" }
],
"호표": [
{
"종류": "재료",
"요소": "재료:오피넷유가:{연료}:{지역}",
"이름": "주연료",
"단위": "",
"수량": "기계:건설품셈:{기계}.주연료",
"비목": "재료비",
"출처": "건설품셈 공통 8-4-1"
},
{ "종류": "재료", "요소": "재료:오피넷유가:{연료}:{지역}", "이름": "주연료", "단위": "", "수량": "기계:건설품셈:{기계}.주연료", "비목": "재료비", "출처": "건설품셈 공통 8-4-1" },
{
"종류": "인력",
"요소": "인력:건설노임:{직종}",
@@ -249,21 +309,11 @@
}
],
"덧줄": [
{
"이름": "잡재료비",
"식": "재료비 * 기계:건설품셈:{기계}.잡재료율 / 100",
"비목": "재료비",
"출처": "건설품셈 공통 8-4 주②"
},
{
"이름": "기계손료",
"식": "손료",
"비목": "경비",
"출처": "건설품셈 공통 8-1-6 2"
}
{ "이름": "잡재료비", "식": "재료비 * 기계:건설품셈:{기계}.잡재료율 / 100", "비목": "재료비", "출처": "건설품셈 공통 8-4 주②" },
{ "이름": "기계손료", "식": "손료", "비목": "경비", "출처": "건설품셈 공통 8-1-6 2" }
],
"끝수": "손료 원 미만 버림(건설품셈 공통 8-1-5 12) · 합계 원문 규정 없음",
"비고": "주① 대로 불도저(무한궤도) 19톤 이상 · 덤프트럭 18톤 이상은 고르기에서 뺌(보정 없음 — 「8 기계 시간당 경비」) · 타이어·습지 불도저는 톤수와 관계없이 보정 · 굴착기(무한궤도)는 「8 굴착기(무한궤도) 시간당 경비」"
"비고": "8-1-7 표의 기종만 가산 — 불도저(무한궤도) 19톤 미만 · 타이어·습지 불도저 · 로더(무한궤도) · 덤프트럭 18톤 미만 · 주① 대로 불도저 19톤 이상 · 덤프트럭 18톤 이상과 표 밖 기종은 가산 0 · 굴착기(무한궤도)는 「공통 8 굴착기(무한궤도) 시간당 경비」"
},
{
"열쇠": "공통 8 굴착기+부착용 집게 시간당 경비",
@@ -538,7 +588,160 @@
}
],
"끝수": "손료 원 미만 버림(건설품셈 공통 8-1-5 12)",
"비고": "원문 운전경비 표에 주연료·조종원이 없는 기종(절단기 · 펌프) — 동력비는 원문대로 별도"
"비고": "원문 운전경비 표에 주연료·조종원이 없는 기종(절단기 · 펌프) — 동력비는 원문대로 별도 · 암석·전석 작업은 「공통 8 기계 시간당 손료(손료 보정)」"
},
{
"열쇠": "공통 8 기계 시간당 손료(손료 보정)",
"이름": "기계 시간당 손료(연료·조종원 없는 기종 · 8-1-7 손료 보정)",
"결과단위": "원/시간",
"출처": "건설품셈 공통 8-1-5 · 8-1-6 · 8-1-7",
"소유": "공용",
"입력": [
{
"이름": "기계",
"고르기": [
"7620-0003",
"7730-0150",
"6516-0060",
"6516-0120",
"6516-0250",
"6516-0300",
"6105-0190",
"6202-0060",
"0230-0002",
"6410-0080",
"6410-0100",
"6410-0120",
"6410-0150",
"6410-0200",
"6901-0010",
"6530-0090",
"6530-0120",
"6517-0100",
"6517-0150",
"6517-0200",
"6517-0250",
"6517-0300",
"6510-0100",
"6510-0150",
"6510-0200",
"6510-0250",
"6510-0300",
"6518-0100",
"6518-0150",
"6518-0200",
"6518-0250",
"6518-0300",
"5501-0080",
"7750-0016",
"7750-0025",
"7730-0050",
"5401-0017",
"5202-0127",
"5202-0240",
"5202-0300",
"7611-0200",
"7612-0200",
"5204-0200",
"5204-0300",
"5204-0400",
"5204-0500",
"5204-0600",
"5702-0095",
"3430-0400",
"7431-1300",
"7740-0080",
"7740-0150",
"2101-0010",
"2101-0015",
"2101-0020",
"2101-0025",
"2101-0030",
"2101-0035",
"2101-0040",
"2101-0050",
"2101-0070",
"2101-0080",
"2101-0100",
"2101-0150",
"2101-0220",
"2101-0280",
"2101-0300",
"2104-0010",
"2104-0015",
"2104-0020",
"2104-0025",
"2104-0030",
"2104-0035",
"2104-0040",
"2104-0045",
"2104-0050",
"2104-0060",
"2104-0070",
"2104-0080",
"2104-0100",
"2104-0130",
"2104-0160",
"2104-0200",
"2104-0220",
"2104-0250",
"2104-0300",
"2208-5008",
"2208-5010",
"2208-5012",
"2208-5016",
"2208-5020",
"2105-0002",
"2105-0003",
"2105-0005",
"2105-0010",
"2105-0015",
"2105-0018",
"0201-0012",
"0201-0020",
"0201-0040",
"0201-0060",
"0201-0070",
"0201-0080",
"0201-0100",
"0201-0120",
"0201-0200",
"6105-0390",
"6202-0125",
"7830-0081",
"7950-0149",
"7951-0066",
"7952-0246",
"7953-3400",
"7954-1119",
"7611-0300",
"7431-1100",
"7431-2300",
"7431-2500",
"7611-0400",
"7611-0500",
"7614-0300"
]
},
{ "이름": "보정작업", "고르기": ["해당 없음", "암석작업(연암・보통암・경암)", "전석섞인토사"], "출처": "건설품셈 공통 8-1-7 1" }
],
"중간": [
{
"이름": "보정기종",
"식": "만약(기계 == '0201-0012' 또는 기계 == '0201-0020' 또는 기계 == '0201-0040' 또는 기계 == '0201-0060' 또는 기계 == '0201-0070' 또는 기계 == '0201-0080' 또는 기계 == '0201-0100' 또는 기계 == '0201-0120' 또는 기계 == '0201-0200', '굴착기(무한궤도) 및 로더(무한궤도)', '없음')",
"출처": "건설품셈 공통 8-1-7 1 주①"
},
{ "이름": "가산비율", "식": "만약(보정작업 == '해당 없음' 또는 보정기종 == '없음', 0, 찾기(계수:건설품셈:공통 8-1-7 손료보정, 기종=보정기종, 작업=보정작업).가산비율)", "출처": "건설품셈 공통 8-1-7 1" },
{
"이름": "손료",
"식": "버림(기계:건설품셈:{기계}.가격 * 1000 * ((기계:건설품셈:{기계}.상각비계수 + 기계:건설품셈:{기계}.정비비계수) * (1 + 가산비율 / 100) + 기계:건설품셈:{기계}.관리비계수) / 10000000, 0)",
"출처": "건설품셈 공통 8-1-5 12 · 8-1-6 4 · 8-1-7 1"
}
],
"호표": [],
"덧줄": [{ "이름": "기계손료", "식": "손료", "비목": "경비", "출처": "건설품셈 공통 8-1-6 2" }],
"끝수": "손료 원 미만 버림(건설품셈 공통 8-1-5 12)",
"비고": "원문 운전경비 표에 주연료·조종원이 없는 기종(절단기 · 펌프) — 동력비는 원문대로 별도 · 8-1-7 표의 기종(굴착기(무한궤도))만 가산 · 표 밖 기종은 가산 0"
},
{
"열쇠": "공통 8 기계 시간당 경비(조종원직종 입력)",
@@ -647,34 +647,15 @@
{ "이름": "기계", "고르기": ["0101-0007", "0101-0010", "0101-0012", "0101-0019", "0101-0032"] },
{
"이름": "지역",
"고르기": [
"전국평균",
"전국",
"서울",
"경기",
"강원",
"충북",
"충남",
"전북",
"경북",
"경남",
"부산",
"제주",
"대구",
"인천",
"대전",
"울산",
"세종",
"전남광주"
],
"고르기": ["전국평균", "전국", "서울", "경기", "강원", "충북", "충남", "전북", "경북", "경남", "부산", "제주", "대구", "인천", "대전", "울산", "세종", "전남광주"],
"출처": "건설품셈 공통 8-1-7 5"
}
],
"중간": [{ "이름": "작업량", "식": "로직(산림품셈:10-11 불도저 운반 작업량, 재료=재료)" }],
"호표": [{ "종류": "로직", "요소": "로직(건설품셈:공통 8 기계 시간당 경비, 기계=기계, 지역=지역)", "이름": "불도저(무한궤도)", "단위": "시간", "수량": "1 / 작업량" }],
"중간": [{ "이름": "작업량", "식": "로직(산림품셈:10-11 불도저 운반 작업량, 재료=재료)" }, { "이름": "보정작업", "식": "만약(재료 == '토사', '해당 없음', '암석작업(연암・보통암・경암)')", "출처": "건설품셈 공통 8-1-7 1" }],
"호표": [{ "종류": "로직", "요소": "로직(건설품셈:공통 8 기계 시간당 경비(손료 보정), 기계=기계, 지역=지역, 보정작업=보정작업)", "이름": "불도저(무한궤도)", "단위": "시간", "수량": "1 / 작업량" }],
"덧줄": [],
"끝수": null,
"비고": "불도저 규격 원문에 없음 — 설계자 고름(주③ 건설품셈 8-2-1) · 불도저 손료 보정(건설품셈 공통 8-1-7) 미반영 — 일반 기계 경비 로직"
"비고": "불도저 규격 원문에 없음 — 설계자 고름(주③ 건설품셈 8-2-1) · 해석: 파쇄암·발파암 운반 = 8-1-7 암석작업 손료 보정 · 토사 = 보정 없음(전석섞인토사는 재료 구분에 없음)"
}
]
}
+22
View File
@@ -119,6 +119,28 @@ def test_불도저_덤프_로더_손료_보정(whole):
whole, "건설품셈:공통 8 기계 시간당 경비", {"기계": "0602-0150", "지역": "전국평균"}
)
assert plain["중간"]["손료"] == 20659
# 주① 불도저 19톤 이상은 가산 0
big = {"기계": "0101-0019", "지역": "전국평균"}
assert (
mf.run(whole, ref, {**big, "보정작업": rock})["중간"]["손료"]
== mf.run(whole, "건설품셈:공통 8 기계 시간당 경비", big)["중간"]["손료"]
)
def test_손료만_로직_보정과_불도저_운반(whole):
rock = "암석작업(연암・보통암・경암)"
ref = "건설품셈:공통 8 기계 시간당 손료(손료 보정)"
assert mf.run(whole, ref, {"기계": "0201-0070", "보정작업": rock})["중간"]["손료"] == 28322
assert mf.run(whole, ref, {"기계": "7620-0003", "보정작업": rock})["중간"]["손료"] == 1232
# 산림 10-11 발파암 = 암석작업 보정 경비 × 1/작업량
given = {"재료": "발파암", "기계": "0101-0010", "지역": "전국평균"}
got = mf.run(whole, "산림품셈:10-11 불도저 운반", given)
hour = mf.run(
whole,
"건설품셈:공통 8 기계 시간당 경비(손료 보정)",
{"기계": "0101-0010", "지역": "전국평균", "보정작업": rock},
)
assert got[""][0]["단가"] == hour[""]
def test_노체포설(whole):