From a6fe6662595dd65388d4b639b45d2ffe6d78834c Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sat, 19 Sep 2026 20:04:21 +0900 Subject: [PATCH] =?UTF-8?q?fix(master=5Fdata):=208-1-7=20=EC=86=90?= =?UTF-8?q?=EB=A3=8C=20=EB=B3=B4=EC=A0=95=20=E2=80=94=20=EB=B6=88=EB=8F=84?= =?UTF-8?q?=EC=A0=80=20=C2=B7=20=EB=A1=9C=EB=8D=94(=EB=AC=B4=ED=95=9C?= =?UTF-8?q?=EA=B6=A4=EB=8F=84)=20=C2=B7=20=EB=8D=A4=ED=94=84=ED=8A=B8?= =?UTF-8?q?=EB=9F=AD=20=EA=B2=BD=EB=B9=84=20=EB=A1=9C=EC=A7=81=20=ED=95=9C?= =?UTF-8?q?=20=EC=A4=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 「8 기계 시간당 경비(손료 보정)」 — 보정작업 입력 · 가산비율(원문 8-1-7 표) - 불도저(무한궤도) 19톤 미만 · 타이어·습지 불도저 · 로더(무한궤도) · 덤프트럭 18톤 미만(주①) - 「8 기계 시간당 경비」 는 부르는 곳 529 곳이 그대로 — 비고에 보정 줄 안내 Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj --- .../master_data/로직_건설품셈_공통8장.json | 135 +++++++++++++++++- resources/tester/test_masterdata_check.py | 16 +++ 2 files changed, 150 insertions(+), 1 deletion(-) diff --git a/resources/master_data/로직_건설품셈_공통8장.json b/resources/master_data/로직_건설품셈_공통8장.json index 8b035ded..f938f061 100644 --- a/resources/master_data/로직_건설품셈_공통8장.json +++ b/resources/master_data/로직_건설품셈_공통8장.json @@ -130,7 +130,140 @@ { "이름": "기계손료", "식": "손료", "비목": "경비", "출처": "건설품셈 공통 8-1-6 2" } ], "끝수": "손료 원 미만 버림(건설품셈 공통 8-1-5 12) · 합계 원문 규정 없음", - "비고": "고르기는 쓰는 기계만 — 주연료·조종원이 있는 기계는 더 넣어 씀" + "비고": "고르기는 쓰는 기계만 — 주연료·조종원이 있는 기계는 더 넣어 씀 · 암석·전석섞인토사 작업의 불도저(19톤 미만 · 타이어·습지)·로더(무한궤도)·덤프트럭(18톤 미만)은 「8 기계 시간당 경비(손료 보정)」(8-1-7 1)" + }, + { + "열쇠": "8 기계 시간당 경비(손료 보정)", + "이름": "기계 시간당 기계경비(불도저 · 로더(무한궤도) · 덤프트럭 손료 보정)", + "결과단위": "원/시간", + "출처": "건설품셈 공통 8-1-5 · 8-1-6 · 8-1-7", + "소유": "공용", + "입력": [ + { + "이름": "기계", + "고르기": [ + "0101-0007", + "0101-0010", + "0101-0012", + "0102-0015", + "0102-0028", + "0102-0033", + "0121-0004", + "0121-0013", + "0301-0057", + "0301-0076", + "0301-0095", + "0301-0115", + "0301-0134", + "0301-0153", + "0301-0172", + "0301-0287", + "0602-0025", + "0602-0045", + "0602-0060", + "0602-0080", + "0602-0105", + "0602-0150" + ] + }, + { + "이름": "지역", + "고르기": [ + "전국평균", + "전국", + "서울", + "경기", + "강원", + "충북", + "충남", + "전북", + "경북", + "경남", + "부산", + "제주", + "대구", + "인천", + "대전", + "울산", + "세종", + "전남광주" + ], + "출처": "건설품셈 공통 8-1-7 5" + }, + { + "이름": "보정작업", + "고르기": [ + "해당 없음", + "암석작업(연암・보통암・경암)", + "전석섞인토사" + ], + "출처": "건설품셈 공통 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', '덤프트럭', '굴착기(무한궤도) 및 로더(무한궤도)'))", + "출처": "건설품셈 공통 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-1" + }, + { + "종류": "인력", + "요소": "인력:건설노임:{직종}", + "이름": "조종원", + "단위": "인", + "수량": "기계:건설품셈:{기계}.조종원 / 8", + "비목": "노무비", + "출처": "건설품셈 공통 8-1-3 6", + "비고": "환산 근거 미확인 — 우선 하루 ÷ 8" + } + ], + "덧줄": [ + { + "이름": "잡재료비", + "식": "재료비 * 기계:건설품셈:{기계}.잡재료율 / 100", + "비목": "재료비", + "출처": "건설품셈 공통 8-4 주②" + }, + { + "이름": "기계손료", + "식": "손료", + "비목": "경비", + "출처": "건설품셈 공통 8-1-6 2" + } + ], + "끝수": "손료 원 미만 버림(건설품셈 공통 8-1-5 12) · 합계 원문 규정 없음", + "비고": "주① 대로 불도저(무한궤도) 19톤 이상 · 덤프트럭 18톤 이상은 고르기에서 뺌(보정 없음 — 「8 기계 시간당 경비」) · 타이어·습지 불도저는 톤수와 관계없이 보정 · 굴착기(무한궤도)는 「8 굴착기(무한궤도) 시간당 경비」" }, { "열쇠": "8 굴착기+부착용 집게 시간당 경비", diff --git a/resources/tester/test_masterdata_check.py b/resources/tester/test_masterdata_check.py index be5f86b2..a7595e00 100644 --- a/resources/tester/test_masterdata_check.py +++ b/resources/tester/test_masterdata_check.py @@ -93,6 +93,22 @@ def test_굴착기_암석_보정(whole): assert cents(got["계"]) == "89864.24" +def test_불도저_덤프_로더_손료_보정(whole): + # 손료 = 가격 × 1000 × ((상각 + 정비) × (1 + 가산) + 관리) ÷ 10^7 · 원 미만 버림(8-1-7 1) + ref = "건설품셈:8 기계 시간당 경비(손료 보정)" + rock, boulder = "암석작업(연암・보통암・경암)", "전석섞인토사" + for machine, work, cost in ( + ("0602-0150", rock, 24285), # 덤프트럭 25% + ("0602-0150", "해당 없음", 20659), + ("0101-0010", boulder, 32794), # 불도저 10% + ("0301-0095", rock, 20985), # 로더(무한궤도) 20% + ): + given = {"기계": machine, "지역": "전국평균", "보정작업": work} + assert mf.run(whole, ref, given)["중간"]["손료"] == cost + plain = mf.run(whole, "건설품셈:8 기계 시간당 경비", {"기계": "0602-0150", "지역": "전국평균"}) + assert plain["중간"]["손료"] == 20659 + + def test_노체포설(whole): assert mf.run(whole, "산림품셈:9-16-1 노체포설 작업량", {})["결과"] == Decimal("24.255") got = mf.run(whole, "산림품셈:9-16-1 노체포설", {"지역": "전국평균", "보정작업": "해당 없음"})