From 8914b21bad7eaa2aa7eebd6528664124cda2f99e Mon Sep 17 00:00:00 2001 From: umsangdon Date: Tue, 10 Nov 2026 14:46:53 +0900 Subject: [PATCH] =?UTF-8?q?feat(814-1=205):=20=EC=8B=9C=EA=B0=84=EB=8B=B9?= =?UTF-8?q?=20=EA=B2=BD=EB=B9=84=20=EA=B3=84=EC=82=B0=EC=8B=9D=20=EA=B8=B0?= =?UTF-8?q?=EA=B3=84=20=EB=AA=A9=EB=A1=9D=20=E2=80=94=20=EC=9B=90=EB=AC=B8?= =?UTF-8?q?=EC=97=90=20=EC=9E=88=EB=8A=94=EB=8D=B0=20=EB=B9=A0=EC=A7=84=20?= =?UTF-8?q?=EA=B8=B0=EA=B3=84=20=EB=8D=94=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 기계표 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 --- M02_MasterTemplete/M02_Machine_Hourly.py | 21 + docs/raw/요구_1104/_목록_802-2_변환대조.xlsx | Bin 13009 -> 13010 bytes .../scripts/build_기계목록_빠진기계_814_1.py | 161 ++++++++ .../로직_건설품셈_08장_건설기계.json | 361 +++++++++++++++++- .../수식문서/수식_건설품셈_08장_건설기계.json | 10 +- 5 files changed, 543 insertions(+), 10 deletions(-) create mode 100644 resources/master_data/scripts/build_기계목록_빠진기계_814_1.py diff --git a/M02_MasterTemplete/M02_Machine_Hourly.py b/M02_MasterTemplete/M02_Machine_Hourly.py index 50b2c94da..3febcb3b0 100644 --- a/M02_MasterTemplete/M02_Machine_Hourly.py +++ b/M02_MasterTemplete/M02_Machine_Hourly.py @@ -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 diff --git a/docs/raw/요구_1104/_목록_802-2_변환대조.xlsx b/docs/raw/요구_1104/_목록_802-2_변환대조.xlsx index be806a05eb9a0e01eafc6338bdc0b709a11e073a..0c2ed113921c66a687ee0a218c95c4ad2f37b471 100644 GIT binary patch delta 1201 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 diff --git a/resources/master_data/scripts/build_기계목록_빠진기계_814_1.py b/resources/master_data/scripts/build_기계목록_빠진기계_814_1.py new file mode 100644 index 000000000..f822bba99 --- /dev/null +++ b/resources/master_data/scripts/build_기계목록_빠진기계_814_1.py @@ -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) diff --git a/resources/master_data/로직_건설품셈_08장_건설기계.json b/resources/master_data/로직_건설품셈_08장_건설기계.json index cf980a4ba..929d896f8 100644 --- a/resources/master_data/로직_건설품셈_08장_건설기계.json +++ b/resources/master_data/로직_건설품셈_08장_건설기계.json @@ -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"] }, { "이름": "지역", "고르기": ["전국평균", "전국", "서울", "경기", "강원", "충북", "충남", "전북", "경북", "경남", "부산", "제주", "대구", "인천", "대전", "울산", "세종", "전남광주"], diff --git a/resources/master_data/수식문서/수식_건설품셈_08장_건설기계.json b/resources/master_data/수식문서/수식_건설품셈_08장_건설기계.json index 5462af5b2..d637e805c 100644 --- a/resources/master_data/수식문서/수식_건설품셈_08장_건설기계.json +++ b/resources/master_data/수식문서/수식_건설품셈_08장_건설기계.json @@ -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_기계}", "칸": "조종원직종"}},