- 검사 넷: 틀 · 본문 대조(표 허구 · 절 결손) · 로직 검사(요소·표·칸 · 찾기 조건 · 로직 입력 · 돌고 도는 참조) · 시험 계산(호표 줄 · 비목 합) - 식 읽기·계산은 master_formula.py(틀 7장 범위 · eval 없음 · Decimal) - 틀: 번호로 적은 값은 원문 이름을 비고에 · 분수·식 값 · 짝 칸 · 8장 검사 - 기계 아홉 줄 비고에 조종원직종 원문 이름(건설기계운전사) - 시험 test_masterdata_check.py: 견본 셋 손 계산 그대로 · 견본 파일 검사 통과 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
6.7 KiB
6.7 KiB
마스터 데이터 파일 틀
resources/master_data/ 첫 층 = 정본. old/ · ref/ 는 읽지 않음.
1. 용어
- 요소 = 원문에 적힌 이름·수 그대로. 계산하지 않음.
- 일위대가 로직 = 요소를 변수로 끌어와 조립한 단위당 계산법. 설계 값 자리는 비움.
- 다른 것을 끌어와 계산하면 로직(기계 시간당 경비 · 기계 작업량 식 포함).
2. 파일
- 이름 =
그룹_원문[_장].json— 날짜 없음 · 마스터는 항상 최신. 예:인력_건설노임.json·소요량_산림품셈_13장.json·로직_산림품셈_13장.json - 그룹 = 인력 · 재료 · 기계 · 소요량 · 계수 · 환율 · 요율 · 로직
- 원문 이름 = 산림품셈 · 건설품셈 · 건설노임 · 제조노임 · 나라장터자재 · 오피넷유가 · 한국은행환율 · 조달청제비율 · 자체
- UTF-8 · LF · 들여쓰기 2칸 · 칸 이름은 한글.
3. 출처
- 한 칸 ·
원문 이름 + 번호— 「산림품셈 13-4-1」 · 「건설품셈 공통 8-4-1」(건설은 부문 필수) · 「건설노임 1018」 · 「자체」 - [주] 는 뒤에 붙임 — 「산림품셈 13-4-4 주⑩」
- 판(기준일)은 파일 머리에 한 번.
4. 요소 파일
{
"그룹": "인력",
"원문": "건설노임",
"판": "2026-01-01",
"줄": [
{ "열쇠": "1018", "이름": "포설공", "규격": "", "단위": "원/일", "값": 0, "출처": "건설노임 1018" }
]
}
열쇠= 원문이 준 번호(직종 번호 · 물품 번호 · 기계 분류번호0201-0070). 없으면 이름.- 값이 여럿인 요소(기계)는
값을 묶음으로 —{ "가격": …, "상각비계수": …, "정비비계수": …, "관리비계수": …, "손료계수": …, "주연료": …, "주연료종류": …, "잡재료율": …, "조종원": …, "조종원직종": … }·손료계수= 원문 「계」. - 묶음 요소는
단위·출처도 같은 모양의 묶음. - 원문에 없는 값을 지어 넣지 않음. 원문 「-」 = 칸을 비움(
null). - 원문 이름 대신 번호로 적은 값(
조종원직종= 노임 번호 「1048」)은 원문 이름을비고칸에.
5. 표형 요소 (소요량 · 계수)
원문 표 하나 = 표 하나. 머리가 여러 단이어도 조건 칸 + 값 칸의 긴 줄로 폄. 표들은 파일 머리 아래 표 칸에 목록으로 둠.
{
"열쇠": "13-4-1 메쌓기",
"이름": "메쌓기(인력)",
"기준": "1㎡",
"출처": "산림품셈 13-4-1",
"조건": { "뒷길이": "수", "돌": "고르기", "쌓기": "고르기" },
"값칸": { "석공": "인", "보통인부": "인" },
"줄": [
{ "뒷길이": 35, "돌": "견치돌", "쌓기": "골쌓기", "석공": 0.5, "보통인부": 0.4 }
],
"주": ["① …"]
}
- 조건 종류 —
수(같은 값) ·고르기(글자) ·범위(줄에[아래, 위]· 끝 열림은null· 포함 여부는범위규칙에 「초과·이하」처럼). - 원문 「-」 칸은 줄에서 그 값 칸을 뺌. 줄 전체가 「-」 면 줄을 뺌.
- 원문에 없는 조건 칸은 줄에서 뺌 — 빈 조건 칸은 그 조건에 무엇이든 맞음.
- 값 칸에 범위(「80 ∼ 100」)는
[아래, 위]— 로직은 설계자 입력 칸으로 받음(기본값 두지 않음). - 수와 글이 섞인 칸(「20(135°)」)은 값 칸에 수 ·
<값 칸>원문칸에 원문 글. - 줄마다 단위가 다르면
단위칸을 줄에 둠. - 분수·식으로 적힌 값(「L/V×2×60」)은 값 칸에 식 글자 그대로 ·
<값 칸>원문칸에 원문. - 원문에 짝 표시 없이 나란히 놓인 줄은
짝칸으로 묶음. - 수는 원문 그대로(쉼표만 뺌). 단위 환산하지 않음.
주는 원문 글 그대로 — 계산에 쓰는 수가 들어 있으면 따로 계수 표로도 올림.
6. 로직 파일
{
"그룹": "로직",
"원문": "산림품셈",
"줄": [
{
"열쇠": "13-4-1 메쌓기",
"이름": "돌쌓기 메쌓기(인력)",
"결과단위": "원/㎡",
"출처": "산림품셈 13-4-1",
"소유": "공용",
"입력": [
{ "이름": "뒷길이", "단위": "㎝" },
{ "이름": "돌", "고르기": ["견치돌", "깬돌", "깬잡석", "호박돌 및 야면석"] }
],
"중간": [{ "이름": "증가율", "식": "…" }],
"호표": [
{ "종류": "인력", "요소": "인력:건설노임:…", "단위": "인", "수량": "…", "비목": "노무비" }
],
"덧줄": [{ "이름": "잡재료비", "식": "노무비 * 0.05", "비목": "재료비", "출처": "…" }],
"끝수": "원 미만 버림"
}
]
}
호표줄 = 실무 일위대가표 한 줄(종류 · 이름·규격 · 단위 · 수량 · 단가 · 금액). 단가는 적지 않음 —요소에서 옴. 금액 = 수량 × 단가.종류= 인력 · 재료 · 기계 · 로직(하위 로직의 결과를 단가로 씀).비목= 노무비 · 재료비 · 경비.덧줄식에서 비목 합을 이름으로 씀.결과단위가 돈이 아닌 로직(㎥/시간)은호표없이중간+결과식.종류가 로직이고비목칸이 없는 호표 줄은 불러온 결과를 비목별로 나눠 얹음.- 근거가 덜 선 줄은
비고칸에 적음 — 「환산 근거 미확인」. - 입력에 원문 범위가 있으면
범위: [아래, 위]· 기본값 두지 않음. 소유= 공용 · 개인(뒤 단계 자리).
7. 변수 · 식
- 요소 —
그룹:원문:열쇠· 값 묶음은.칸—기계:건설품셈:0201-0070.주연료· 둘째 쌍점 뒤는 모두 열쇠(재료:오피넷유가:경유:전국평균). - 열쇠에
{이름}— 입력·중간 값을 끼움 —기계:건설품셈:{기계}.가격 - 표 찾기 —
찾기(소요량:산림품셈:13-4-1 메쌓기, 뒷길이=뒷길이, 돌=돌, 쌓기=쌓기).석공 - 찾기·로직 인자의 글자 값은 작은따옴표 —
구분='V(다짐속도,km/hr)'· 따옴표 없으면 이름(입력·중간). - 로직 부르기 —
로직(건설품셈:8 굴착기(무한궤도) 시간당 경비, 기계='0201-0070')· 돈 로직의 결과는 비목 묶음.노무비.재료비.경비.계· 돈 아닌 로직은 수 하나. - 입력 · 중간 · 비목 합은 이름 그대로.
- 쓸 수 있는 것 —
+ - * /· 괄호 · 비교< <= > >= == !=·그리고또는·찾기·로직·만약(조건, 참, 거짓)·올림버림반올림(자리) ·최소최대. 그 밖은 쓰지 않음. - 로직이 돌고 도는 참조를 만들지 않음.
8. 검사
- 고친 뒤
scripts/check_master.py— 틀 · 본문 대조 · 로직 검사. 로직은계산으로 손 계산과 맞댐.