feat(master_data): 건설품셈 토목 8장(지반조사) 로직 22줄 · 자체 인력 6 · 자체 재료 24

- 보링 설치·천공(심도 가산 입력) · 표준관입·베인·자연시료·재하·콘관입 · 탄성파·전기비저항 · 대구경 보링(고성능 착정기) · 케이싱 등 · 폐공 되메우기
- 건설노임에 없는 기술자·숙련기술자 = 인력_자체
- 공통8장 조종원직종 입력 기계에 고성능 착정기
- 베인시험전단기 기구손료는 기계 요소 없어 비고에 막힘

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 19:22:17 +09:00
co-authored by Claude Opus 5
parent 6408f9d46e
commit 4c4be0e95b
5 changed files with 1927 additions and 4 deletions
@@ -416,7 +416,7 @@
"입력": [
{
"이름": "기계",
"고르기": ["2106-0002", "2106-0003", "2106-0005", "6802-0040", "6802-0060", "6802-0100", "6802-0120", "6802-0135", "6802-0160", "6801-0010", "6803-0100", "6803-0120", "4430-0400", "3302-0038", "3801-0795", "7330-0010", "7954-1119", "7110-0025", "7110-0013", "7120-0746"]
"고르기": ["2106-0002", "2106-0003", "2106-0005", "6802-0040", "6802-0060", "6802-0100", "6802-0120", "6802-0135", "6802-0160", "6801-0010", "6803-0100", "6803-0120", "4430-0400", "3302-0038", "3801-0795", "7330-0010", "7954-1119", "7110-0025", "7110-0013", "7120-0746", "7101-0450"]
},
{
"이름": "지역",
File diff suppressed because it is too large Load Diff
+8 -2
View File
@@ -4,9 +4,15 @@
"판": "2026-09-19",
"비고": "건설노임에 없는 직종 — 이름·단위만 · 값은 관리자가 채움 · 다른 직종에 대응시키지 않음",
"줄": [
{ "열쇠": "중급기술자", "이름": "중급기술자", "규격": "", "단위": "원/일", "값": null, "출처": "자체", "비고": "건설품셈 공통 2-9-12 · 2-11-8 · 2-11-9 · 2-12-4 작업편성인원 · 5-1-7 인장 · 건설품셈 유지관리 1-1-2" },
{ "열쇠": "중급기술자", "이름": "중급기술자", "규격": "", "단위": "원/일", "값": null, "출처": "자체", "비고": "건설품셈 공통 2-9-12 · 2-11-8 · 2-11-9 · 2-12-4 작업편성인원 · 5-1-7 인장 · 건설품셈 유지관리 1-1-2 · 건설품셈 토목 8-1-2 · 건설품셈 토목 8-1-3 · 건설품셈 토목 8-2-1 · 건설품셈 토목 8-2-2 · 건설품셈 토목 8-2-3 · 건설품셈 토목 8-2-4 · 건설품셈 토목 8-2-5 · 건설품셈 토목 8-2-6 · 건설품셈 토목 8-2-7 · 건설품셈 토목 8-3-1 · 건설품셈 토목 8-3-2 · 건설품셈 토목 8-4-1 · 건설품셈 토목 8-4-2 · 건설품셈 토목 8-4-3" },
{ "열쇠": "절단공", "이름": "절단공", "규격": "", "단위": "원/일", "값": null, "출처": "자체", "비고": "건설품셈 공통 6-2-5" },
{ "열쇠": "특수비계공", "이름": "특수비계공", "규격": "", "단위": "원/일", "값": null, "출처": "자체", "비고": "건설품셈 공통 6-3-6 설치 및 해체(해체)" },
{ "열쇠": "초급기술자", "이름": "초급기술자", "규격": "", "단위": "원/일", "값": null, "출처": "자체", "비고": "건설품셈 유지관리 2-4-3" }
{ "열쇠": "초급기술자", "이름": "초급기술자", "규격": "", "단위": "원/일", "값": null, "출처": "자체", "비고": "건설품셈 유지관리 2-4-3 · 건설품셈 토목 8-2-4 · 건설품셈 토목 8-2-5 · 건설품셈 토목 8-2-6" },
{ "열쇠": "고급숙련기술자", "이름": "고급숙련기술자", "규격": "", "단위": "원/일", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-2-2 · 건설품셈 토목 8-2-7" },
{ "열쇠": "중급숙련기술자", "이름": "중급숙련기술자", "규격": "", "단위": "원/일", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-2-2 · 건설품셈 토목 8-2-7 · 건설품셈 토목 8-4-1 · 건설품셈 토목 8-4-2 · 건설품셈 토목 8-4-3" },
{ "열쇠": "초급숙련기술자", "이름": "초급숙련기술자", "규격": "", "단위": "원/일", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-2-2 · 건설품셈 토목 8-2-7" },
{ "열쇠": "기술사", "이름": "기술사", "규격": "", "단위": "원/일", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-3-1 · 건설품셈 토목 8-3-2" },
{ "열쇠": "특급기술자", "이름": "특급기술자", "규격": "", "단위": "원/일", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-3-1 · 건설품셈 토목 8-3-2" },
{ "열쇠": "고급기술자", "이름": "고급기술자", "규격": "", "단위": "원/일", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-3-1 · 건설품셈 토목 8-3-2" }
]
}
+25 -1
View File
@@ -207,6 +207,30 @@
{ "열쇠": "콘크리트못 32㎜", "이름": "콘크리트못", "규격": "32㎜", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 건축 6-5-3" },
{ "열쇠": "와셔", "이름": "와셔", "규격": "", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 건축 6-5-3" },
{ "열쇠": "조인트테이프", "이름": "조인트테이프", "규격": "", "단위": "m", "값": null, "출처": "자체", "비고": "건설품셈 건축 6-5-3" },
{ "열쇠": "실링재 수밀코킹", "이름": "실링재", "규격": "수밀코킹", "단위": "m", "값": null, "출처": "자체", "비고": "건설품셈 건축 6-6-1" }
{ "열쇠": "실링재 수밀코킹", "이름": "실링재", "규격": "수밀코킹", "단위": "m", "값": null, "출처": "자체", "비고": "건설품셈 건축 6-6-1" },
{ "열쇠": "싱글코아바렐 보링용", "이름": "싱글코아바렐", "규격": "보링용", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-1-2" },
{ "열쇠": "메탈크라운비트 보링용", "이름": "메탈크라운비트", "규격": "보링용", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-1-2 · 건설품셈 토목 8-1-3" },
{ "열쇠": "쵸핑비트 보링용", "이름": "쵸핑비트", "규격": "보링용", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-1-2" },
{ "열쇠": "드라이브파이프헤드 보링용", "이름": "드라이브파이프헤드", "규격": "보링용", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-1-2" },
{ "열쇠": "드라이브파이프슈 보링용", "이름": "드라이브파이프슈", "규격": "보링용", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-1-2" },
{ "열쇠": "드라이브파이프 보링용", "이름": "드라이브파이프", "규격": "보링용", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-1-2" },
{ "열쇠": "더블코아바렐 보링용", "이름": "더블코아바렐", "규격": "보링용", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-1-3" },
{ "열쇠": "다이아몬드비트 보링용", "이름": "다이아몬드비트", "규격": "보링용", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-1-3" },
{ "열쇠": "메탈리밍쉘 보링용", "이름": "메탈리밍쉘", "규격": "보링용", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-1-3" },
{ "열쇠": "다이아몬드리밍쉘 보링용", "이름": "다이아몬드리밍쉘", "규격": "보링용", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-1-3" },
{ "열쇠": "코아리프터 보링용", "이름": "코아리프터", "규격": "보링용", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-1-3" },
{ "열쇠": "슈 표준관입시험용", "이름": "슈", "규격": "표준관입시험용", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-2-1" },
{ "열쇠": "샘플러 표준관입시험용", "이름": "샘플러", "규격": "표준관입시험용", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-2-1" },
{ "열쇠": "신월튜브 자연시료 채취용", "이름": "신월튜브", "규격": "자연시료 채취용", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-2-3" },
{ "열쇠": "베인 블레이드 대형 75×150×3㎜", "이름": "베인 블레이드", "규격": "대형 75×150×3㎜", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-2-2" },
{ "열쇠": "베인 전용로드 ø16×750", "이름": "베인 전용로드", "규격": "ø16×750", "단위": "본", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-2-2" },
{ "열쇠": "로드 ø40.5×1m", "이름": "로드", "규격": "ø40.5×1m", "단위": "본", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-2-2" },
{ "열쇠": "표준사 평판재하시험용", "이름": "표준사", "규격": "평판재하시험용", "단위": "㎏", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-2-4" },
{ "열쇠": "단독콘 정재하시험용", "이름": "단독콘", "규격": "정재하시험용", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-2-6" },
{ "열쇠": "윙비트 대구경 보링용", "이름": "윙비트", "규격": "대구경 보링용", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-4-1 · 건설품셈 토목 8-4-2" },
{ "열쇠": "벤토나이트 보링 이수용", "이름": "벤토나이트", "규격": "보링 이수용", "단위": "㎏", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-4-1 · 건설품셈 토목 8-4-2" },
{ "열쇠": "기포제 대구경 보링용", "이름": "기포제", "규격": "대구경 보링용", "단위": "", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-4-2" },
{ "열쇠": "에어해머 대구경 보링용", "이름": "에어해머", "규격": "대구경 보링용", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-4-2" },
{ "열쇠": "버튼비트 대구경 보링용", "이름": "버튼비트", "규격": "대구경 보링용", "단위": "개", "값": null, "출처": "자체", "비고": "건설품셈 토목 8-4-2" }
]
}
+15
View File
@@ -26,6 +26,7 @@ SAMPLES = [
"로직_건설품셈_토목5장.json",
"로직_건설품셈_토목6장.json",
"로직_건설품셈_토목7장.json",
"로직_건설품셈_토목8장.json",
"로직_산림품셈_03장.json",
"로직_산림품셈_04장.json",
"로직_산림품셈_05장.json",
@@ -350,6 +351,20 @@ def test_토목_배송관_철거_크레인_규격(whole):
assert got["트럭탑재형 크레인 15ton"] == Decimal("0.47") * Decimal("0.7")
def test_토목_보링_심도_가산():
"""토목 8-1-2 — 깊이 35m = 20m 넘는 15m 를 10m 단위 올림 2번 × 5% · 인력만 · 쵸핑비트는 호박돌층만."""
files = cm.load()
for row in files["인력_자체.json"][""] + files["재료_자체.json"][""]:
if row[""] is None: # 관리자가 채울 값 — 시험용 가짜 값(파일엔 안 씀)
row[""] = Decimal(1000)
given = {"": "점토층", "규격": "BX", "깊이": 35, "심도가산율": 5}
got = mf.run(mf.Master(files), "건설품셈:8-1-2 천공(토사·자갈·호박돌층)", given)
qty = {x["이름"]: x["수량"] for x in got[""]}
assert qty["중급기술자"] == Decimal("0.16") * Decimal("1.1")
assert qty["싱글코아바렐"] == Decimal("0.01")
assert qty["쵸핑비트"] == 0
def test_범위_입력은_막음(whole):
with pytest.raises(mf.FormulaError):
mf.run(