feat(814-1 5): 시간당 경비 계산식 기계 목록 — 원문에 있는데 빠진 기계 더함

- 기계표 630 대 가운데 어느 계산식(GC000267 ~ 276)에도 없던 384 대를 자료대로 배정(빌더 build_기계목록_빠진기계_814_1)
  · 연료 · 조종원 = GC000268 92 · 조종원 직종 없음 = GC000275 18 · 조종원 없음 = GC000272 43 · 연료 없음 = GC000276 7 · 손료만 = GC000273 198
  · 못 넣음 50 줄(33 대) = 기계표 값 빔 · 범위(「13∼18」) — 지어 넣는 값 없음
- 로직 · 수식 문서 「기계」 목록 끝에 덧붙임(기본값 그대로) — 1,513 문서 기본 · 옵션 표본 18,797 금액 전후 같음 · 시간당 경비 595 대 셈 됨
- 조합(굴착기 + 브레이커 · 집게) = 우리 조합 식 GC000270 · 271 부름 글(`M02_Machine_Hourly.combo`)
- 802-2 대조 목록 다시 지음(옵션 표본 수만 늚)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-10 14:46:53 +09:00
co-authored by Claude Opus 5.5
parent 56a3e0538f
commit 8914b21bad
5 changed files with 543 additions and 10 deletions
+21
View File
@@ -83,3 +83,24 @@ def hourly(key: str) -> dict[str, Any]:
"원문번호": code,
**sums,
}
def combo(main: str, part: str) -> tuple[str, str] | None:
"""조합 기계(굴착기 + 대형 브레이커 · 부착용 집게 · 814-1) → 우리 조합 식 (키, 부름 글)
`로직(GC000271, 기계='…', 브레이커='…', 지역='전국평균', …)` — 두 기계가 그 식 고르기에 있을 때만."""
try:
codes = [str(store.loaded()[1].get(k).get("원문번호") or "") for k in (main, part)]
except cm.mf.FormulaError:
return None
for row in sorted(_family(), key=lambda r: str(r.get("키"))):
ins = row.get("입력") or []
attach = [i for i in ins if i.get("이름") not in _PLAIN and i.get("고르기")]
if len(attach) != 1 or codes[0] not in [str(c) for c in _codes(row)]:
continue
if codes[1] not in [str(c) for c in attach[0]["고르기"]]:
continue
given = {"기계": codes[0], attach[0]["이름"]: codes[1]}
given |= {i["이름"]: (i.get("고르기") or [""])[0] for i in ins if i["이름"] not in given}
args = "".join(f", {k}='{v}'" for k, v in given.items())
return str(row["키"]), f"로직({row['키']}{args})"
return None
Binary file not shown.
@@ -0,0 +1,161 @@
"""시간당 경비 계산식(GC000267 ~ GC000276) 「기계」 고르기 · 선택 목록에 원문에 있는데 빠진 기계 더함(PLAN 814-1 · 요구 744 ~ 747).
기계표(EQ) 가운데 어느 계산식 목록에도 없는 기계를 자료(기계표 값)에 따라 식 하나에 배정 — 지어 넣는 값 없음:
연료(주연료 · 종류) · 조종원(인 · 직종) · 잡재료율 · 상각 · 정비 · 관리 계수 있음 = GC000268(기계경비)
연료 · 조종원(인) 있음 · 직종 없음 = GC000275(조종원직종 입력)
연료 있음 · 조종원 없음 = GC000272(조종원 없는 기종)
연료 없음 · 조종원(인 · 직종) 있음 = GC000276(연료 없는 기종)
연료 · 조종원(직종) 없음 · 가격 · 손료계수 있음 = GC000273(손료만 — 부착 장비 등)
그 식이 부르는 기계표 값이 비거나 수 하나가 아니면(「13∼18」) 안 넣고 「못 넣음」 목록에 적음.
8-1-7 손료 보정 식(GC000269 · GC000274)은 보정 기종 식에 그 기계 번호가 이미 있을 때만 같이 더함.
목록 끝에 덧붙임(기본값 그대로 = 기존 문서 금액 같음). 로직 파일(`로직_…_건설기계.json` 입력 고르기)과
수식 문서(`수식문서/수식_…_건설기계.json` 「기계」 선택 목록)를 같이 고침. 두 번 돌려도 같음.
쓰기: venv python resources/master_data/scripts/build_기계목록_빠진기계_814_1.py [--check]
"""
from __future__ import annotations
import json
import re
import sys
from pathlib import Path
HERE = Path(__file__).resolve().parent
DATA = HERE.parent
LOGIC = DATA / "로직_건설품셈_08장_건설기계.json"
DOC = DATA / "수식문서" / "수식_건설품셈_08장_건설기계.json"
FAMILY = [f"GC00027{i}" for i in range(6)] + ["GC000267", "GC000268", "GC000269"]
FAMILY = sorted(set(FAMILY) | {"GC000276"})
FIX = ("상각비계수", "정비비계수", "관리비계수")
NEEDS = {
"GC000268": ("가격", *FIX, "주연료종류", "주연료", "조종원직종", "조종원", "잡재료율"),
"GC000275": ("가격", *FIX, "주연료종류", "주연료", "조종원", "잡재료율"),
"GC000272": ("가격", *FIX, "주연료종류", "주연료", "잡재료율"),
"GC000276": ("가격", *FIX, "조종원직종", "조종원"),
"GC000273": ("가격", "손료계수"),
}
PAIR = {"GC000268": "GC000269", "GC000273": "GC000274"} # 8-1-7 보정 식
TEXT = ("주연료종류", "조종원직종") # 글 칸 — 그 밖 = 수 하나(범위 「13∼18」 · 빈 값 = 없음)
def _has(row: dict, field: str) -> bool:
v = (row.get("값") or {}).get(field)
if v in (None, ""):
return False
if field in TEXT:
return bool(str(v).strip())
try:
return float(str(v).replace(",", "")) != 0
except ValueError:
return False
def family_of(row: dict) -> tuple[str | None, list[str]]:
"""기계표 한 줄 → (식 키 | None, 빈 값 이름들) — 연료 · 조종원 유무로 식 가족을 고름."""
fuel, crew, job = _has(row, "주연료"), _has(row, "조종원"), _has(row, "조종원직종")
if fuel and crew:
key = "GC000268" if job else "GC000275"
elif fuel:
key = "GC000272"
elif crew and job:
key = "GC000276"
else:
key = "GC000273"
miss = [f for f in NEEDS[key] if not _has(row, f)]
return (None if miss else key), miss
def _rows() -> list[dict]:
data = json.loads((DATA / "기계.json").read_text("utf-8"))
return [
r for r in data.get("줄") or data.get("표") or [] if str(r.get("키", "")).startswith("EQ")
]
def _logic_lists(text: str) -> dict[str, list[str]]:
data = json.loads(text)
out = {}
for row in data["줄"]:
for i in row.get("입력") or []:
if row.get("키") in FAMILY and i.get("이름") == "기계":
out[row["키"]] = [str(c) for c in i.get("고르기") or []]
return out
def _span(text: str, key: str, start_pat: str) -> tuple[int, int]:
"""그 키 블록 안 첫 `start_pat` 뒤 배열 [ … ] 의 (여는 괄호, 닫는 괄호) 자리."""
at = text.index(f'"키": "{key}"')
m = re.compile(start_pat).search(text, at)
if not m:
raise SystemExit(f"{key} 기계 목록 자리를 못 찾음")
open_ = m.end() - 1
close = text.index("]", open_)
return open_, close
def _append(text: str, key: str, codes: list[str], start_pat: str) -> str:
if not codes:
return text
open_, close = _span(text, key, start_pat)
body = text[open_ + 1 : close]
if "\n" in body: # 여러 줄 꼴 — 마지막 줄 들여쓰기 그대로
last = body.rstrip().rsplit("\n", 1)[-1]
pad = last[: len(last) - len(last.lstrip())]
add = "".join(f',\n{pad}"{c}"' for c in codes)
cut = open_ + 1 + len(body.rstrip())
return text[:cut] + add + text[cut:]
add = "".join(f', "{c}"' for c in codes)
return text[:close] + add + text[close:]
LOGIC_PAT = r'"이름":\s*"기계",\s*"고르기":\s*\['
DOC_PAT = r'"열쇠":\s*"기계"[^\n]*?"목록":\s*\['
def plan() -> tuple[dict[str, list[str]], list[tuple[str, str, str, list[str]]]]:
logic = LOGIC.read_text("utf-8")
have = _logic_lists(logic)
taken = {c for v in have.values() for c in v}
fixes = {}
for r in json.loads(logic)["줄"]:
if r.get("키") in PAIR.values():
fixes[r["키"]] = " ".join(str(x.get("식") or "") for x in r.get("중간") or [])
add: dict[str, list[str]] = {}
skipped = []
for row in _rows():
code = str(row.get("원문번호") or "")
if not code or code in taken:
continue
key, miss = family_of(row)
if key is None:
skipped.append((code, str(row.get("이름")), str(row.get("규격") or ""), miss))
continue
if code in add.get(key, []):
continue
add.setdefault(key, []).append(code)
if PAIR.get(key) and f"'{code}'" in fixes.get(PAIR[key], ""):
add.setdefault(PAIR[key], []).append(code)
return add, skipped
def main(check: bool = False) -> None:
add, skipped = plan()
print("더함:", {k: len(v) for k, v in sorted(add.items())}, "· 못 넣음:", len(skipped))
for code, name, spec, miss in skipped:
print(f" 못 넣음 {code} {name} {spec} — 빈 값 {', '.join(miss)}")
if check or not add:
return
logic, doc = LOGIC.read_text("utf-8"), DOC.read_text("utf-8")
for key, codes in sorted(add.items()):
logic = _append(logic, key, codes, LOGIC_PAT)
doc = _append(doc, key, codes, DOC_PAT)
json.loads(logic), json.loads(doc) # 꼴 확인
LOGIC.write_text(logic, "utf-8", newline="")
DOC.write_text(doc, "utf-8", newline="")
if __name__ == "__main__":
main("--check" in sys.argv)
@@ -192,7 +192,99 @@
"2502-0075",
"5205-0035",
"2702-0030",
"2702-0060"
"2702-0060",
"0211-0060",
"0211-0080",
"0211-0100",
"0221-0040",
"0221-0070",
"0302-0025",
"0302-0172",
"0302-0229",
"0302-0287",
"0302-0350",
"0302-0500",
"0406-0054",
"0406-0115",
"0406-0161",
"0406-0206",
"0503-0036",
"0602-0200",
"0602-0240",
"0602-0320",
"1106-0015",
"1206-0010",
"1206-0014",
"1209-0001",
"1209-0002",
"1209-0004",
"1209-0006",
"1209-0007",
"1209-0008",
"1209-0013",
"1306-0044",
"1306-0060",
"1406-0025",
"1506-0011",
"1506-0012",
"1506-0015",
"1506-0019",
"1506-0025",
"1506-0030",
"1506-0037",
"2602-0015",
"2602-0025",
"2602-0035",
"2602-0045",
"2702-0040",
"3530-0015",
"3530-0036",
"3601-0204",
"3601-0302",
"3701-0200",
"3805-0120",
"4504-0021",
"4504-0028",
"5405-0150",
"5701-0010",
"7106-0035",
"7505-0125",
"7505-0200",
"7505-0500",
"7505-0700",
"9010-0003",
"9010-0006",
"9010-0010",
"9010-0012",
"9010-0020",
"9010-0022",
"9010-0033",
"9010-0040",
"9010-0044",
"9010-0060",
"9010-0080",
"9020-0010",
"9020-0015",
"9020-0016",
"9020-0022",
"9020-0035",
"9020-0050",
"9020-0072",
"9020-0160",
"9020-0180",
"9020-0200",
"9050-0075",
"9050-0150",
"9050-0450",
"9050-0750",
"9050-0850",
"9090-0800",
"9090-1000",
"9090-1200",
"9090-1300",
"9090-1400",
"9090-1500",
"9090-1600"
]
},
{
@@ -595,7 +687,50 @@
"6540-0131",
"3302-0038",
"4430-0400",
"7505-0100"
"7505-0100",
"6630-0003",
"6630-0005",
"6630-0007",
"6630-0010",
"6630-0013",
"7811-0025",
"7811-0030",
"7811-0040",
"7811-0045",
"7811-0070",
"7811-0120",
"7812-0005",
"7812-0007",
"7812-0009",
"7812-0018",
"7812-0020",
"7812-0035",
"7812-0070",
"7812-0100",
"7812-0150",
"7812-0200",
"9030-0016",
"9030-0018",
"9030-0025",
"9030-0035",
"9030-0045",
"9030-0050",
"9030-0080",
"9030-0100",
"9030-0240",
"9040-0010",
"9040-0030",
"9040-0050",
"9040-0060",
"9040-0100",
"9040-0120",
"9040-0200",
"9040-0250",
"9040-0300",
"9040-0380",
"9040-0680",
"9070-0015",
"9070-0020"
]
},
{
@@ -755,7 +890,205 @@
"7614-0300",
"0250-0100",
"5210-0010",
"5210-0019"
"5210-0019",
"0103-0016",
"0103-0019",
"0103-0023",
"0103-0027",
"0103-0032",
"0230-0004",
"0230-0006",
"0230-0007",
"0230-0008",
"0230-0010",
"0240-0007",
"0250-0080",
"0407-0054",
"0407-0092",
"0407-0107",
"0407-0161",
"0407-0206",
"0610-0150",
"0610-0200",
"0610-0240",
"2115-0024",
"2115-0031",
"2115-0036",
"2116-0031",
"2116-0036",
"2117-0022",
"2117-0027",
"2118-0010",
"2210-0145",
"3430-0300",
"3450-0642",
"4115-0100",
"4115-0150",
"4115-0200",
"4115-0300",
"4505-0015",
"4505-0026",
"4611-0075",
"5105-0050",
"5105-0100",
"5105-0150",
"5105-0200",
"5111-0040",
"5111-0050",
"5111-0060",
"5111-0076",
"5111-0091",
"5112-0001",
"5112-0002",
"5112-0003",
"5112-0004",
"5112-0005",
"5113-0001",
"5113-0002",
"5113-0003",
"5113-0004",
"5113-0005",
"5113-0006",
"5113-0007",
"5113-0008",
"5113-0009",
"5113-0010",
"5113-0011",
"5114-0001",
"5114-0002",
"5114-0003",
"5114-0004",
"5114-0005",
"5114-0006",
"5114-0007",
"5114-0008",
"5115-0030",
"5115-0055",
"5115-0075",
"5115-0095",
"5116-0001",
"5116-0002",
"5116-0003",
"5116-0004",
"5116-0005",
"5116-0006",
"5116-0007",
"5116-0008",
"5117-0001",
"5117-0002",
"5117-0003",
"5117-0004",
"5117-0005",
"5117-0006",
"5117-0007",
"5117-0008",
"5118-0001",
"5118-0002",
"5118-0003",
"5118-0004",
"5118-0005",
"5118-0006",
"5118-0007",
"5119-0625",
"5203-1800",
"5203-2200",
"5203-2700",
"5203-3500",
"5203-4500",
"5330-0074",
"5805-0002",
"5805-0003",
"5901-0006",
"5901-0010",
"5901-0016",
"6202-0200",
"6408-0015",
"6408-0020",
"6408-0030",
"6408-0040",
"6408-0050",
"6408-0085",
"6408-0100",
"6515-0090",
"6530-0030",
"6530-0040",
"6530-0045",
"6530-0060",
"6532-0220",
"6550-0130",
"7103-0010",
"7104-0010",
"7202-0008",
"7202-0010",
"7205-0125",
"7206-0020",
"7206-0070",
"7206-0100",
"7430-1100",
"7430-1300",
"7430-1500",
"7430-2300",
"7430-2500",
"7612-0300",
"7612-0400",
"7613-0075",
"7613-0150",
"7613-0300",
"7613-0400",
"7613-0600",
"7613-0900",
"7620-0002",
"7730-0080",
"7730-0100",
"7730-0125",
"7740-0100",
"7770-0004",
"7930-0001",
"7930-0002",
"7930-0003",
"7930-0005",
"7930-0007",
"7930-0010",
"7930-0015",
"7930-0020",
"7930-0025",
"7930-0030",
"7930-0040",
"7930-0050",
"7930-0075",
"7930-0100",
"7935-0180",
"7991-0050",
"7991-0100",
"7991-0500",
"7993-0020",
"8201-0100",
"8202-0100",
"8203-0019",
"8204-0100",
"8205-0100",
"9060-0060",
"9060-0100",
"9060-0200",
"9060-0300",
"9060-0500",
"9060-0600",
"9080-0050",
"9080-0080",
"9080-0100",
"9080-0120",
"9080-0150",
"9080-0200",
"9080-0300",
"9080-0500",
"9080-0700",
"9080-1000",
"9080-1100",
"9080-1400",
"9080-1500",
"9080-1750",
"9080-2000",
"9080-3000"
]
}
],
@@ -963,7 +1296,25 @@
"7110-0025",
"7110-0013",
"7120-0746",
"7101-0450"
"7101-0450",
"0260-0355",
"2107-0005",
"2330-0005",
"2330-0007",
"2402-0001",
"3302-0030",
"3302-0047",
"3302-0057",
"3801-0120",
"4304-0060",
"4304-0061",
"6330-0015",
"6330-0022",
"6330-0032",
"6330-0040",
"7205-0475",
"7205-0540",
"7360-0055"
]
},
{
@@ -1019,7 +1370,7 @@
"소유": "공용",
"비고": "원문 운전경비 표에 주연료가 빈 기종(공기식 크롤러드릴 등 — 동력은 공기압축기) — 손료 + 조종원",
"입력": [
{ "이름": "기계", "고르기": ["5401-0017"] },
{ "이름": "기계", "고르기": ["5401-0017", "4108-0060", "4108-0090", "4108-0120", "4108-0150", "4108-0180", "4108-0210", "5401-0015"] },
{
"이름": "지역",
"고르기": ["전국평균", "전국", "서울", "경기", "강원", "충북", "충남", "전북", "경북", "경남", "부산", "제주", "대구", "인천", "대전", "울산", "세종", "전남광주"],
@@ -62,7 +62,7 @@
"갈래": "기계경비식"
},
"변수": [
{"열쇠": "기계", "기호": "S", "아래": "기계", "위": "", "이름": "기계", "단위": "", "연결": {"갈래": "선택", "목록": ["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", "0602-0060", "0602-0105", "1630-0080", "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"], "값": "1730-0015"}},
{"열쇠": "기계", "기호": "S", "아래": "기계", "위": "", "이름": "기계", "단위": "", "연결": {"갈래": "선택", "목록": ["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", "0602-0060", "0602-0105", "1630-0080", "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", "0211-0060", "0211-0080", "0211-0100", "0221-0040", "0221-0070", "0302-0025", "0302-0172", "0302-0229", "0302-0287", "0302-0350", "0302-0500", "0406-0054", "0406-0115", "0406-0161", "0406-0206", "0503-0036", "0602-0200", "0602-0240", "0602-0320", "1106-0015", "1206-0010", "1206-0014", "1209-0001", "1209-0002", "1209-0004", "1209-0006", "1209-0007", "1209-0008", "1209-0013", "1306-0044", "1306-0060", "1406-0025", "1506-0011", "1506-0012", "1506-0015", "1506-0019", "1506-0025", "1506-0030", "1506-0037", "2602-0015", "2602-0025", "2602-0035", "2602-0045", "2702-0040", "3530-0015", "3530-0036", "3601-0204", "3601-0302", "3701-0200", "3805-0120", "4504-0021", "4504-0028", "5405-0150", "5701-0010", "7106-0035", "7505-0125", "7505-0200", "7505-0500", "7505-0700", "9010-0003", "9010-0006", "9010-0010", "9010-0012", "9010-0020", "9010-0022", "9010-0033", "9010-0040", "9010-0044", "9010-0060", "9010-0080", "9020-0010", "9020-0015", "9020-0016", "9020-0022", "9020-0035", "9020-0050", "9020-0072", "9020-0160", "9020-0180", "9020-0200", "9050-0075", "9050-0150", "9050-0450", "9050-0750", "9050-0850", "9090-0800", "9090-1000", "9090-1200", "9090-1300", "9090-1400", "9090-1500", "9090-1600"], "값": "1730-0015"}},
{"열쇠": "지역", "기호": "S", "아래": "지역", "위": "", "이름": "지역", "단위": "", "출처": "건설품셈 공통 8-1-7 5", "연결": {"갈래": "선택", "목록": ["전국평균", "전국", "서울", "경기", "강원", "충북", "충남", "전북", "경북", "경남", "부산", "제주", "대구", "인천", "대전", "울산", "세종", "전남광주"], "값": "전국평균"}},
{"열쇠": "손료", "기호": "C", "아래": "손료", "위": "", "이름": "손료", "단위": "", "출처": "건설품셈 공통 8-1-5 12 · 8-1-6 4", "연결": {"갈래": "식"}},
{"열쇠": "연료", "기호": "S", "아래": "연료", "위": "", "이름": "연료", "단위": "", "출처": "건설품셈 공통 8-4 주①㉰", "연결": {"갈래": "요소", "키": "EQ:{S_기계}", "칸": "주연료종류"}},
@@ -272,7 +272,7 @@
"갈래": "기계경비식"
},
"변수": [
{"열쇠": "기계", "기호": "S", "아래": "기계", "위": "", "이름": "기계", "단위": "", "연결": {"갈래": "선택", "목록": ["4611-0350", "7812-0015", "4506-0200", "4506-0400", "1730-0015", "1630-0080", "1305-0007", "2106-0002", "2106-0003", "2106-0005", "7210-0485", "7360-0090", "6540-0131", "3302-0038", "4430-0400", "7505-0100"], "값": "4611-0350"}},
{"열쇠": "기계", "기호": "S", "아래": "기계", "위": "", "이름": "기계", "단위": "", "연결": {"갈래": "선택", "목록": ["4611-0350", "7812-0015", "4506-0200", "4506-0400", "1730-0015", "1630-0080", "1305-0007", "2106-0002", "2106-0003", "2106-0005", "7210-0485", "7360-0090", "6540-0131", "3302-0038", "4430-0400", "7505-0100", "6630-0003", "6630-0005", "6630-0007", "6630-0010", "6630-0013", "7811-0025", "7811-0030", "7811-0040", "7811-0045", "7811-0070", "7811-0120", "7812-0005", "7812-0007", "7812-0009", "7812-0018", "7812-0020", "7812-0035", "7812-0070", "7812-0100", "7812-0150", "7812-0200", "9030-0016", "9030-0018", "9030-0025", "9030-0035", "9030-0045", "9030-0050", "9030-0080", "9030-0100", "9030-0240", "9040-0010", "9040-0030", "9040-0050", "9040-0060", "9040-0100", "9040-0120", "9040-0200", "9040-0250", "9040-0300", "9040-0380", "9040-0680", "9070-0015", "9070-0020"], "값": "4611-0350"}},
{"열쇠": "지역", "기호": "S", "아래": "지역", "위": "", "이름": "지역", "단위": "", "출처": "건설품셈 공통 8-1-7 5", "연결": {"갈래": "선택", "목록": ["전국평균", "전국", "서울", "경기", "강원", "충북", "충남", "전북", "경북", "경남", "부산", "제주", "대구", "인천", "대전", "울산", "세종", "전남광주"], "값": "전국평균"}},
{"열쇠": "손료", "기호": "C", "아래": "손료", "위": "", "이름": "손료", "단위": "", "출처": "건설품셈 공통 8-1-5 12 · 8-1-6 4", "연결": {"갈래": "식"}},
{"열쇠": "연료", "기호": "S", "아래": "연료", "위": "", "이름": "연료", "단위": "", "출처": "건설품셈 공통 8-4 주①㉰", "연결": {"갈래": "요소", "키": "EQ:{S_기계}", "칸": "주연료종류"}},
@@ -306,7 +306,7 @@
"결과단위": "원/시간",
"출처": "건설품셈 공통 8-1-5 · 8-1-6",
"변수": [
{"열쇠": "기계", "기호": "S", "아래": "기계", "위": "", "이름": "기계", "단위": "", "연결": {"갈래": "선택", "목록": ["7620-0003", "7621-0100", "7995-0050", "5210-0013", "5210-0027", "5220-0015", "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", "0250-0100", "5210-0010", "5210-0019"], "값": "7620-0003"}},
{"열쇠": "기계", "기호": "S", "아래": "기계", "위": "", "이름": "기계", "단위": "", "연결": {"갈래": "선택", "목록": ["7620-0003", "7621-0100", "7995-0050", "5210-0013", "5210-0027", "5220-0015", "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", "0250-0100", "5210-0010", "5210-0019", "0103-0016", "0103-0019", "0103-0023", "0103-0027", "0103-0032", "0230-0004", "0230-0006", "0230-0007", "0230-0008", "0230-0010", "0240-0007", "0250-0080", "0407-0054", "0407-0092", "0407-0107", "0407-0161", "0407-0206", "0610-0150", "0610-0200", "0610-0240", "2115-0024", "2115-0031", "2115-0036", "2116-0031", "2116-0036", "2117-0022", "2117-0027", "2118-0010", "2210-0145", "3430-0300", "3450-0642", "4115-0100", "4115-0150", "4115-0200", "4115-0300", "4505-0015", "4505-0026", "4611-0075", "5105-0050", "5105-0100", "5105-0150", "5105-0200", "5111-0040", "5111-0050", "5111-0060", "5111-0076", "5111-0091", "5112-0001", "5112-0002", "5112-0003", "5112-0004", "5112-0005", "5113-0001", "5113-0002", "5113-0003", "5113-0004", "5113-0005", "5113-0006", "5113-0007", "5113-0008", "5113-0009", "5113-0010", "5113-0011", "5114-0001", "5114-0002", "5114-0003", "5114-0004", "5114-0005", "5114-0006", "5114-0007", "5114-0008", "5115-0030", "5115-0055", "5115-0075", "5115-0095", "5116-0001", "5116-0002", "5116-0003", "5116-0004", "5116-0005", "5116-0006", "5116-0007", "5116-0008", "5117-0001", "5117-0002", "5117-0003", "5117-0004", "5117-0005", "5117-0006", "5117-0007", "5117-0008", "5118-0001", "5118-0002", "5118-0003", "5118-0004", "5118-0005", "5118-0006", "5118-0007", "5119-0625", "5203-1800", "5203-2200", "5203-2700", "5203-3500", "5203-4500", "5330-0074", "5805-0002", "5805-0003", "5901-0006", "5901-0010", "5901-0016", "6202-0200", "6408-0015", "6408-0020", "6408-0030", "6408-0040", "6408-0050", "6408-0085", "6408-0100", "6515-0090", "6530-0030", "6530-0040", "6530-0045", "6530-0060", "6532-0220", "6550-0130", "7103-0010", "7104-0010", "7202-0008", "7202-0010", "7205-0125", "7206-0020", "7206-0070", "7206-0100", "7430-1100", "7430-1300", "7430-1500", "7430-2300", "7430-2500", "7612-0300", "7612-0400", "7613-0075", "7613-0150", "7613-0300", "7613-0400", "7613-0600", "7613-0900", "7620-0002", "7730-0080", "7730-0100", "7730-0125", "7740-0100", "7770-0004", "7930-0001", "7930-0002", "7930-0003", "7930-0005", "7930-0007", "7930-0010", "7930-0015", "7930-0020", "7930-0025", "7930-0030", "7930-0040", "7930-0050", "7930-0075", "7930-0100", "7935-0180", "7991-0050", "7991-0100", "7991-0500", "7993-0020", "8201-0100", "8202-0100", "8203-0019", "8204-0100", "8205-0100", "9060-0060", "9060-0100", "9060-0200", "9060-0300", "9060-0500", "9060-0600", "9080-0050", "9080-0080", "9080-0100", "9080-0120", "9080-0150", "9080-0200", "9080-0300", "9080-0500", "9080-0700", "9080-1000", "9080-1100", "9080-1400", "9080-1500", "9080-1750", "9080-2000", "9080-3000"], "값": "7620-0003"}},
{"열쇠": "손료", "기호": "C", "아래": "손료", "위": "", "이름": "손료", "단위": "", "출처": "건설품셈 공통 8-1-5 12 · 8-1-6 4", "연결": {"갈래": "식"}},
{"열쇠": "P_기계", "기호": "P", "아래": "기계", "위": "", "이름": "EQ:{기계}.가격", "단위": "", "연결": {"갈래": "요소", "키": "EQ:{S_기계}", "칸": "가격"}},
{"열쇠": "k_기계손료", "기호": "k", "아래": "기계손료", "위": "", "이름": "EQ:{기계}.손료계수", "단위": "", "연결": {"갈래": "요소", "키": "EQ:{S_기계}", "칸": "손료계수"}}
@@ -367,7 +367,7 @@
"갈래": "기계경비식"
},
"변수": [
{"열쇠": "기계", "기호": "S", "아래": "기계", "위": "", "이름": "기계", "단위": "", "연결": {"갈래": "선택", "목록": ["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"], "값": "2106-0002"}},
{"열쇠": "기계", "기호": "S", "아래": "기계", "위": "", "이름": "기계", "단위": "", "연결": {"갈래": "선택", "목록": ["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", "0260-0355", "2107-0005", "2330-0005", "2330-0007", "2402-0001", "3302-0030", "3302-0047", "3302-0057", "3801-0120", "4304-0060", "4304-0061", "6330-0015", "6330-0022", "6330-0032", "6330-0040", "7205-0475", "7205-0540", "7360-0055"], "값": "2106-0002"}},
{"열쇠": "지역", "기호": "S", "아래": "지역", "위": "", "이름": "지역", "단위": "", "출처": "건설품셈 공통 8-1-7 5", "연결": {"갈래": "선택", "목록": ["전국평균", "전국", "서울", "경기", "강원", "충북", "충남", "전북", "경북", "경남", "부산", "제주", "대구", "인천", "대전", "울산", "세종", "전남광주"], "값": "전국평균"}},
{"열쇠": "조종원직종", "기호": "S", "아래": "조종원직종", "위": "", "이름": "조종원직종", "단위": "", "출처": "건설품셈 공통 8-1-3 5", "연결": {"갈래": "선택", "목록": ["1048", "1049", "1050"], "값": "1048"}},
{"열쇠": "손료", "기호": "C", "아래": "손료", "위": "", "이름": "손료", "단위": "", "출처": "건설품셈 공통 8-1-5 12 · 8-1-6 4", "연결": {"갈래": "식"}},
@@ -412,7 +412,7 @@
"갈래": "기계경비식"
},
"변수": [
{"열쇠": "기계", "기호": "S", "아래": "기계", "위": "", "이름": "기계", "단위": "", "연결": {"갈래": "선택", "목록": ["5401-0017"], "값": "5401-0017"}},
{"열쇠": "기계", "기호": "S", "아래": "기계", "위": "", "이름": "기계", "단위": "", "연결": {"갈래": "선택", "목록": ["5401-0017", "4108-0060", "4108-0090", "4108-0120", "4108-0150", "4108-0180", "4108-0210", "5401-0015"], "값": "5401-0017"}},
{"열쇠": "지역", "기호": "S", "아래": "지역", "위": "", "이름": "지역", "단위": "", "출처": "건설품셈 공통 8-1-7 5", "연결": {"갈래": "선택", "목록": ["전국평균", "전국", "서울", "경기", "강원", "충북", "충남", "전북", "경북", "경남", "부산", "제주", "대구", "인천", "대전", "울산", "세종", "전남광주"], "값": "전국평균"}},
{"열쇠": "손료", "기호": "C", "아래": "손료", "위": "", "이름": "손료", "단위": "", "출처": "건설품셈 공통 8-1-5 12 · 8-1-6 4", "연결": {"갈래": "식"}},
{"열쇠": "직종", "기호": "S", "아래": "직종", "위": "", "이름": "직종", "단위": "", "출처": "건설품셈 공통 8-1-3 5", "연결": {"갈래": "요소", "키": "EQ:{S_기계}", "칸": "조종원직종"}},