feat(master_data): 건설품셈 토목 4장(궤도) 로직 22줄 · 8장 기계 고르기 넓힘 · 자체 재료 10개

- 4-2 자갈궤도(단선·복선 시공량 · 50㎏ 레일 5% 증 · 신호수) · 4-3 콘크리트궤도(단선 5% 감 · 방진상자)
- 4-4 분기기(종류별 할증률) · 신축이음매(일단·양단) · 4-5 가스압접·테르밋(소모재료 · 열차감시원 · 기타재료 비율) · 장대레일
- 4-6 자갈채집 · 레일 절단·천공 · 침목천공 · 파워렌치 · 타이템퍼(손료 + 주연료·잡재료 5%) · 교상발판·가드레일 등
- 8장 고르기: 지게차 5.0ton · 궤도 소형장비 손료 5종 · 재료_자체 바퀴숫돌·버너·노즐·테르밋 재료
- 막힘: 측량중급기술자(건설노임 요소 없음) · 모터카·자갈화차(기계 요소 없음) — 비고

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 18:52:53 +09:00
co-authored by Claude Opus 5
parent 3826002a00
commit 87c4fd8446
4 changed files with 1362 additions and 3 deletions
@@ -69,7 +69,7 @@
"출처": "건설품셈 공통 8-1-5 · 8-1-6",
"소유": "공용",
"입력": [
{ "이름": "기계", "고르기": ["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", "5205-0071", "5205-0103", "5205-0210", "5405-0110", "7505-0025", "0502-0036", "1306-0100", "7204-0160", "1506-0032", "0121-0004", "2105-0002", "2105-0003", "2105-0010", "2105-0015", "2105-0018", "1305-0007", "1306-0120", "1106-0010", "1106-0012", "1206-0008", "3201-0003", "5205-0170", "3201-0001", "1406-0008", "1406-0015", "0302-0057", "3601-0202", "3601-0402", "3611-0142"] },
{ "이름": "기계", "고르기": ["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", "5205-0071", "5205-0103", "5205-0210", "5405-0110", "7505-0025", "0502-0036", "1306-0100", "7204-0160", "1506-0032", "0121-0004", "2105-0002", "2105-0003", "2105-0010", "2105-0015", "2105-0018", "1305-0007", "1306-0120", "1106-0010", "1106-0012", "1206-0008", "3201-0003", "5205-0170", "3201-0001", "1406-0008", "1406-0015", "0302-0057", "3601-0202", "3601-0402", "3611-0142", "2502-0050"] },
{
"이름": "지역",
"고르기": [
@@ -411,7 +411,12 @@
"5204-0300",
"5204-0400",
"5204-0500",
"5204-0600"
"5204-0600",
"7950-0149",
"7951-0066",
"7952-0246",
"7953-3400",
"7954-1119"
]
}
],
File diff suppressed because it is too large Load Diff
+11 -1
View File
@@ -88,6 +88,16 @@
{ "열쇠": "에폭시", "이름": "에폭시", "규격": "", "단위": "kg", "값": null, "출처": "자체", "비고": "건설품셈 토목 1-9-4 낙석방지망 재료(참고자료) · 포켓식만" },
{ "열쇠": "IV전선 2.0㎜", "이름": "IV전선", "규격": "2.0㎜", "단위": "m", "값": null, "출처": "자체", "비고": "건설품셈 토목 6-7-5 강관압입추진공 조명시설" },
{ "열쇠": "백열등 100W", "이름": "백열등", "규격": "100W", "단위": "EA", "값": null, "출처": "자체", "비고": "건설품셈 토목 6-7-5 강관압입추진공 조명시설" },
{ "열쇠": "일체식 방수시트", "이름": "일체식 방수시트", "규격": "부직포 부착 터널 방수시트", "단위": "㎡", "값": null, "출처": "자체", "비고": "건설품셈 토목 3-4-1 터널 방수 재료량" }
{ "열쇠": "일체식 방수시트", "이름": "일체식 방수시트", "규격": "부직포 부착 터널 방수시트", "단위": "㎡", "값": null, "출처": "자체", "비고": "건설품셈 토목 3-4-1 터널 방수 재료량" },
{ "열쇠": "바퀴숫돌 단면용", "이름": "바퀴숫돌", "규격": "단면용 A36m B11호 A150×8×22 KSL 6501", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 4-5-1 가스압접 소모재료(참고자료)" },
{ "열쇠": "바퀴숫돌 측면용", "이름": "바퀴숫돌", "규격": "측면용 A24 QWV1호 A205×25×25 KSL 6501", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 4-5-1 가스압접 소모재료(참고자료)" },
{ "열쇠": "바퀴숫돌 평면용", "이름": "바퀴숫돌", "규격": "평면용 A24 QWV1호 A205×25×25 KSL 6501", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 4-5-1 가스압접 소모재료(참고자료)" },
{ "열쇠": "바퀴숫돌 최종용", "이름": "바퀴숫돌", "규격": "최종용 A24 QWV 5호 A205×22×22", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 4-5-1 가스압접 소모재료(참고자료)" },
{ "열쇠": "압접가열용 버너", "이름": "버너", "규격": "압접가열용", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 4-5-1 가스압접 소모재료(참고자료)" },
{ "열쇠": "압접버너용 노즐", "이름": "노즐", "규격": "압접버너용", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 4-5-1 가스압접 소모재료(참고자료)" },
{ "열쇠": "테르밋용재", "이름": "테르밋용재", "규격": "점화용", "단위": "포", "값": null, "출처": "자체", "비고": "건설품셈 토목 4-5-2 테르밋 용접 소모재료(참고자료)" },
{ "열쇠": "테르밋 몰드", "이름": "몰드", "규격": "테르밋 용접용", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 4-5-2 테르밋 용접 소모재료(참고자료)" },
{ "열쇠": "테르밋 골무", "이름": "골무", "규격": "테르밋 용접용", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 4-5-2 테르밋 용접 소모재료(참고자료)" },
{ "열쇠": "테르밋 퓨즈", "이름": "퓨즈", "규격": "테르밋 용접용", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 4-5-2 테르밋 용접 소모재료(참고자료)" }
]
}
@@ -22,6 +22,7 @@ SAMPLES = [
"로직_건설품셈_토목1장.json",
"로직_건설품셈_토목2장.json",
"로직_건설품셈_토목3장.json",
"로직_건설품셈_토목4장.json",
"로직_건설품셈_토목6장.json",
"로직_산림품셈_03장.json",
"로직_산림품셈_04장.json",
@@ -306,6 +307,13 @@ def test_토목_터널굴착_장대할증(whole):
assert got[""][0]["수량"] == Decimal("1.2")
def test_토목_궤광조립_직결형_단선감(whole):
"""토목 4-3-1 — 직결형 시공량은 분리형 250m(병합 칸) · 단선 5% 감 = 궤도공 16 ÷ 237.5."""
given = {"단선감": 5, "구분": "침목매립식(직결형)", "지역": "전국평균", "보정작업": "해당 없음"}
got = mf.run(whole, "건설품셈:4-3-1 궤광조립(콘크리트)", given)
assert got[""][0]["수량"] == Decimal(16) / Decimal("237.5")
def test_범위_입력은_막음(whole):
with pytest.raises(mf.FormulaError):
mf.run(