From 24fc6ec0901c72459469e2c9a83deff7032cb8a4 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Tue, 8 Sep 2026 01:14:34 +0900 Subject: [PATCH 1/5] =?UTF-8?q?feat(B08):=20=ED=99=94=EB=A9=B4=EC=97=90=20?= =?UTF-8?q?=EC=95=88=20=EB=B3=B4=EC=9D=B4=EB=8D=98=20=ED=99=95=EC=A0=95=20?= =?UTF-8?q?=EB=8C=80=EA=B8=B0=20=EC=85=8B=EC=9D=84=20=EB=93=9C=EB=9F=AC?= =?UTF-8?q?=EB=83=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 목록에만 있고 화면에 없으면 사용자는 그것이 잠정인 줄도 모름. 셋 다 「지금 어떤 값으로 돌고 있는지 + 왜 잠정인지」를 함께 보임. - 콘크리트 타설 방식을 좌측 패널 칸으로 냄. ⚠ 금액에 바로 걸리는 값이라 기본값으로 돌고 있으면 「기본값 「레디믹스트」로 계산 중 — 아직 안 정한 값」 안내를 띄움. 설정 기본을 None 으로 바꿔 「안 정함」과 「일부러 레디믹스트를 고른 것」을 가름 — 값을 미리 넣으면 그 구별이 사라짐. 되돌리기도 됨. - 물구멍 근거에 잠정값을 적음 — 「관 Ø 미정(법 3~6㎝ / 실무 Ø50) · 간격 2.0㎡당 1개소(법 2~3㎡당 1개소 이상)」. 「미확정」만으로는 무엇을 정해야 하는지 모름. - 준비공의 벌목 줄에 공종 미확정 사유와 후보를 함께 적음(수확베기·단목베기· 위험목 베기 중 어느 것인지 원본이 말하지 않음). 검증 — 전체 580 passed, tsc 오류 0. 화면에서 셋 다 뜨는 것과 타설 방식 저장·되돌리기까지 확인 후 검증으로 바꾼 값은 원래대로 복원. Co-Authored-By: Claude Opus 5 (1M context) --- .../B08_Quantity_Engine_Preparation.py | 6 +++- .../B08_Quantity_Engine_UnitQuantity.py | 5 ++- B08_Quantity/B08_Quantity_Router_Earthwork.py | 16 ++++++++- B08_Quantity/B08_Quantity_UI_EarthworkGrid.ts | 2 ++ .../B08_Quantity_UI_EarthworkGrid_Style.ts | 12 +++++++ B08_Quantity/B08_Quantity_UI_Page.ts | 33 +++++++++++++++++++ common_util/common_util_project_settings.py | 24 ++++++++++++-- ui_template/ui_template_locale_b2.ts | 10 ++++++ 8 files changed, 102 insertions(+), 6 deletions(-) diff --git a/B08_Quantity/B08_Quantity_Engine_Preparation.py b/B08_Quantity/B08_Quantity_Engine_Preparation.py index 7a3bf0ae..8c706584 100644 --- a/B08_Quantity/B08_Quantity_Engine_Preparation.py +++ b/B08_Quantity/B08_Quantity_Engine_Preparation.py @@ -55,7 +55,11 @@ def preparation_rows(slope_totals: dict[str, float] | None = None) -> list[dict[ "status": STATUS_COUNTED_ELSEWHERE, # ⚠ 값을 여기서 또 내면 같은 나무를 두 번 벤다. 참고로 면적만 보인다. "reference_amount": tree_area, - "reason": "토공집계의 「지장목제거」로 이미 섬 — 여기서 또 세우면 이중계상", + "reason": ( + "토공집계의 「지장목제거」로 이미 섬 — 여기서 또 세우면 이중계상. " + "⚠ 다만 **공종 미확정** — 품셈 4장이 벌목을 목적별로 갈라(수확베기·단목베기·" + "위험목 베기) 임도 지장목이 어디에 붙는지 원본이 말하지 않음. 지금은 공종코드 없이 감." + ), "work_item_code": None, }, { diff --git a/B08_Quantity/B08_Quantity_Engine_UnitQuantity.py b/B08_Quantity/B08_Quantity_Engine_UnitQuantity.py index ce9ff1da..8e7ea4a1 100644 --- a/B08_Quantity/B08_Quantity_Engine_UnitQuantity.py +++ b/B08_Quantity/B08_Quantity_Engine_UnitQuantity.py @@ -238,7 +238,10 @@ def stone_masonry( "m", masonry_area / constants["weep_hole_area_m2"] * constants["weep_hole_length_m"], DESTINATION["물구멍"], - "돌쌓기 ÷ 2㎡/개소 × 0.5 m/개소 (관 규격 미확정)", + # ⚠ 「미확정」만 적으면 사용자가 무엇을 정해야 하는지 모른다 — + # **지금 무슨 값으로 돌고 있는지**를 함께 적는다(원단위 미확보와 같은 방식). + "돌쌓기 ÷ 2㎡/개소 × 0.5 m/개소 · ⚠ 잠정: 관 Ø 미정(법 3~6㎝ / 실무 Ø50) ·" + " 간격 2.0㎡당 1개소(법 2~3㎡당 1개소 이상)", ) ) diff --git a/B08_Quantity/B08_Quantity_Router_Earthwork.py b/B08_Quantity/B08_Quantity_Router_Earthwork.py index a99b8f81..db9ab2f0 100644 --- a/B08_Quantity/B08_Quantity_Router_Earthwork.py +++ b/B08_Quantity/B08_Quantity_Router_Earthwork.py @@ -36,8 +36,10 @@ from B08_Quantity.B08_Quantity_Engine_HaulSummary import summary_input_rows from B08_Quantity.B08_Quantity_Engine_SlopeArea import build_table as build_slope_table from B08_Quantity.B08_Quantity_Engine_SlopeLength import station_slopes from common_util.common_util_project_settings import ( + CONCRETE_PLACING_METHODS, ROCK_METHODS, application_ratio, + concrete_placing_method, quantity_settings, rock_classes, save_section, @@ -99,6 +101,9 @@ async def get_earthwork_table(project_id: UUID, route_id: int) -> JSONResponse: table["preparation"] = build_preparation_table( slope.get("totals") or {}, await _route_structures(project_id) ) + method, method_is_default = concrete_placing_method(settings) + # ⚠ 금액에 바로 걸리는 값이라 「기본값으로 돌고 있음」을 응답에 실어 화면이 띄우게 한다. + table["concrete_placing"] = {"method": method, "is_default": method_is_default} table["settings"] = settings table["project_root_known"] = project_root is not None table["route_id"] = route_id @@ -164,6 +169,8 @@ class QuantitySettingsBody(BaseModel): # 자재별 관급/사급 — `{자재명: {"supply": …, "install_by": …}}`. # 표 안에서 줄마다 고른 값이 여기로 온다(2026-09-07 확정). material_supply: dict[str, Any] | None = None + # 콘크리트 타설 방식. `""` 는 「안 정함」으로 되돌리는 뜻이라 서버가 None 으로 만든다. + concrete_placing_method: str | None = None @router.put("/{project_id}/quantity/settings") @@ -183,6 +190,10 @@ async def save_quantity_settings(project_id: UUID, body: QuantitySettingsBody) - content={"status": "error", "message": "프로젝트 저장 폴더를 찾지 못했습니다."}, ) values = {key: value for key, value in body.model_dump().items() if value is not None} + if "concrete_placing_method" in values: + method = values["concrete_placing_method"] + # 「안 정함」으로 되돌릴 수 있어야 한다 — 빈 값이면 지운다(8-22 ② 와 같은 자리). + values["concrete_placing_method"] = method if method in CONCRETE_PLACING_METHODS else None if "rock_methods" in values: # 「안 정함」(빈 값)은 저장하지 않는다 — 정한 것과 구별이 안 된다. 통째로 갈아 끼우므로 # 여기서 버리면 그 갈래는 미지정으로 돌아간다. @@ -195,7 +206,10 @@ async def save_quantity_settings(project_id: UUID, body: QuantitySettingsBody) - # ⚠ 고른 값을 **되돌릴 수 있어야** 하는 칸은 통째로 갈아 끼운다 — 병합이면 # 「안 정함」으로 되돌아가지 않는다(2026-09-07 화면에서 걸린 자리). saved = await asyncio.to_thread( - _save_quantity, root, values, ("rock_methods", "material_supply") + _save_quantity, + root, + values, + ("rock_methods", "material_supply", "concrete_placing_method"), ) except Exception: logger.exception("B08 설정 저장 실패(쓰기): project_id=%s", project_id) diff --git a/B08_Quantity/B08_Quantity_UI_EarthworkGrid.ts b/B08_Quantity/B08_Quantity_UI_EarthworkGrid.ts index ade6b38f..9825c0e7 100644 --- a/B08_Quantity/B08_Quantity_UI_EarthworkGrid.ts +++ b/B08_Quantity/B08_Quantity_UI_EarthworkGrid.ts @@ -63,6 +63,8 @@ export interface QuantitySettings { rock_methods?: Record; /** 자재별 관급/사급 — 표 안에서 줄마다 고른 값. */ material_supply?: Record; + /** 콘크리트 타설 방식. `null`·없음이면 **아직 안 정한 것**이고 화면이 기본값 안내를 띄운다. */ + concrete_placing_method?: string | null; } export interface EarthworkTable { diff --git a/B08_Quantity/B08_Quantity_UI_EarthworkGrid_Style.ts b/B08_Quantity/B08_Quantity_UI_EarthworkGrid_Style.ts index c3d9dcbb..fb8fe14d 100644 --- a/B08_Quantity/B08_Quantity_UI_EarthworkGrid_Style.ts +++ b/B08_Quantity/B08_Quantity_UI_EarthworkGrid_Style.ts @@ -32,6 +32,18 @@ const CSS = ` box-shadow: inset 2px 0 0 var(--color-accent, #6c8ebf); } +/* 잠정값 안내 — 금액에 걸리는 값이 조용히 기본으로 돌지 않게. */ +.b08-quantity__notice { + margin: 0.35rem 0 0; + padding: 0.4rem 0.5rem; + font-size: 0.85em; + line-height: 1.4; + color: var(--color-text); + background: var(--color-surface-raised); + border-left: 3px solid var(--color-warning, #c08a3e); + border-radius: 3px; +} + .b08-grid__caption { margin: 0; font-size: 12px; diff --git a/B08_Quantity/B08_Quantity_UI_Page.ts b/B08_Quantity/B08_Quantity_UI_Page.ts index 65dbbb1c..896e7d2e 100644 --- a/B08_Quantity/B08_Quantity_UI_Page.ts +++ b/B08_Quantity/B08_Quantity_UI_Page.ts @@ -83,6 +83,7 @@ async function saveQuantitySettings(projectId: string, draft: DraftSettings): Pr // 병합해 옛 값이 남아 되돌릴 길이 없다(화면에서 걸린 자리). 빈 값은 서버가 버린다. rock_methods: draft.rock_methods, material_supply: draft.material_supply, + concrete_placing_method: draft.concrete_placing_method, }), }, ); @@ -172,6 +173,8 @@ interface DraftSettings { application_ratios_pct: Record; // 갈래별 시공법 — `""` 는 「안 정함」이고 저장에서 빠진다. rock_methods: Record; + // 콘크리트 타설 방식 — `""` 는 「안 정함」이고 저장에서 지워진다. + concrete_placing_method: string; // 자재별 관급/사급 — 표 안에서 줄마다 고른 값. material_supply: Record; dirty: boolean; @@ -252,6 +255,35 @@ function buildQuantitySidePanel( } } + // ── 콘크리트 타설 방식 — ⚠ **금액에 바로 걸리는 값**이라 잠정임을 조용히 두지 않는다 ── + panel.append(field(L("B08_Quantity_Side_Placing"), "")); + panel.append( + selectField( + L("B08_Quantity_Side_Placing_Label"), + draft.concrete_placing_method, + [ + { value: "", label: L("B08_Quantity_Placing_Unset") }, + { value: "ready_mixed", label: L("B08_Quantity_Placing_Ready") }, + { value: "machine_mixed", label: L("B08_Quantity_Placing_Machine") }, + { value: "hand_mixed", label: L("B08_Quantity_Placing_Hand") }, + ], + (value) => { + draft.concrete_placing_method = value; + draft.dirty = true; + }, + ), + ); + const placing = ( + table as unknown as { concrete_placing?: { method: string; is_default: boolean } } + ).concrete_placing; + if (placing?.is_default) { + // 「확인 필요」만 있으면 무엇을 정해야 하는지 모른다 — **지금 무엇으로 돌고 있는지**를 함께 적는다. + const notice = document.createElement("p"); + notice.className = "b08-quantity__notice"; + notice.textContent = L("B08_Quantity_Placing_Default_Notice"); + panel.append(notice); + } + const saveButton = createButton({ label: L("B08_Quantity_Btn_Save"), variant: "ghost", @@ -431,6 +463,7 @@ export async function renderB08Quantity(root: HTMLElement): Promise { rock_ratios_pct: { ...(stored.rock_ratios_pct ?? {}) }, application_ratios_pct: { ...(stored.application_ratios_pct ?? {}) }, rock_methods: { ...((stored.rock_methods ?? {}) as Record) }, + concrete_placing_method: (stored.concrete_placing_method as string) ?? "", material_supply: { ...((stored.material_supply ?? {}) as Record) }, dirty: false, }; diff --git a/common_util/common_util_project_settings.py b/common_util/common_util_project_settings.py index c274cf4d..25a5dd3a 100644 --- a/common_util/common_util_project_settings.py +++ b/common_util/common_util_project_settings.py @@ -94,9 +94,10 @@ def default_settings() -> dict[str, Any]: # 화면에 드러난다 — 사급으로 조용히 넘기면 관급자재대가 새 나간다. "material_supply": {}, # 콘크리트 타설 방식 — `ready_mixed`(FP-12-01-01) / `machine_mixed`(-02) / - # `hand_mixed`(-03). **설계 판단**이라 사용자가 고르는 값이고, 기본은 실무가 - # 쓰는 레디믹스트로 둔다. ⚠ 잠정이며 사용자 확정 대기 항목이다. - "concrete_placing_method": "ready_mixed", + # `hand_mixed`(-03). **설계 판단**이라 사용자가 고른다. + # ⚠ 기본은 `None` — 「안 정함」과 「일부러 레디믹스트를 고른 것」을 갈라야 + # 화면이 「기본값 적용 중」을 정직하게 띄운다. 값을 미리 넣으면 그 구별이 사라진다. + "concrete_placing_method": None, "dataset_versions": {}, }, "estimation": { @@ -189,6 +190,23 @@ def rock_classes(settings: dict[str, Any]) -> list[str]: return list(ROCK_CLASS_SETS.get(name, ROCK_CLASS_SETS[DEFAULT_ROCK_CLASS_SET])) +#: 타설 방식 — 안 정했을 때 쓰는 값. **금액에 바로 걸리는 자리**라 화면이 잠정임을 띄운다. +CONCRETE_PLACING_METHODS = ("ready_mixed", "machine_mixed", "hand_mixed") +DEFAULT_CONCRETE_PLACING_METHOD = "ready_mixed" + + +def concrete_placing_method(settings: dict[str, Any]) -> tuple[str, bool]: + """(타설 방식, 기본값을 쓰고 있는가). + + ⚠ 둘째 값이 참이면 **사용자가 아직 안 정한 것**이다 — 화면이 「기본값 적용 중」을 띄워야 + 한다. 조용히 기본으로 돌면 사용자는 그것이 잠정인 줄도 모른다. + """ + stored = settings.get("concrete_placing_method") + if stored in CONCRETE_PLACING_METHODS: + return str(stored), False + return DEFAULT_CONCRETE_PLACING_METHOD, True + + def application_ratio(settings: dict[str, Any], key: str) -> float: """반영률을 0~1 로. 없으면 100 %(=1.0) — 실무 관측치를 기본값으로 쓰지 않는다.""" raw = (settings.get("application_ratios_pct") or {}).get(key, 100) diff --git a/ui_template/ui_template_locale_b2.ts b/ui_template/ui_template_locale_b2.ts index 73dae8c7..2073135f 100644 --- a/ui_template/ui_template_locale_b2.ts +++ b/ui_template/ui_template_locale_b2.ts @@ -628,6 +628,16 @@ export const ui_locales_b2 = { B08_Quantity_Method_Unset: ["안 정함", "Not set"], B08_Quantity_Method_Ripping: ["긁어내기(암절취)", "Ripping"], B08_Quantity_Method_Blasting: ["터뜨리기(발파암)", "Blasting"], + B08_Quantity_Side_Placing: ["콘크리트 타설", "Concrete Placing"], + B08_Quantity_Side_Placing_Label: ["타설 방식", "Method"], + B08_Quantity_Placing_Unset: ["안 정함(기본값 사용)", "Not set (default)"], + B08_Quantity_Placing_Ready: ["레디믹스트", "Ready-mixed"], + B08_Quantity_Placing_Machine: ["기계비빔", "Machine-mixed"], + B08_Quantity_Placing_Hand: ["인력비빔", "Hand-mixed"], + B08_Quantity_Placing_Default_Notice: [ + "⚠ 기본값 「레디믹스트」로 계산 중 — 아직 안 정한 값입니다. 타설 방식에 따라 단가가 갈립니다.", + "⚠ Using the default (ready-mixed) — not yet decided. Unit prices differ by method.", + ], B08_Quantity_Material_Failed: [ "자재총괄을 불러오지 못했습니다.", "Failed to load the material summary.", From 01578eaed6084e7fa8a846364f4abf17d254f2c8 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Tue, 8 Sep 2026 01:21:44 +0900 Subject: [PATCH 2/5] =?UTF-8?q?feat(B08):=20=ED=83=80=EC=84=A4=20=EB=B0=A9?= =?UTF-8?q?=EC=8B=9D=20=EB=8B=A8=EA=B0=80=20=EC=B0=A8=EC=9D=B4=20=ED=91=9C?= =?UTF-8?q?=EC=8B=9C=20+=20=EA=B0=92=20=EC=9E=90=EB=A6=AC=20=EC=8B=9D=20?= =?UTF-8?q?=EA=B9=83=EB=B0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 타설 방식 — 「무엇을 정해야 하는지」만으로는 부족하고 「정하면 얼마나 달라지는지」가 보여야 사용자가 판단함. 세 방식 단가 차이가 6배라 조용히 기본값을 쓰면 총액이 갈림. - 방식 이름을 늘 값 옆에 보임(「적용 중: 레디믹스트 (기본값 — 확인 필요)」). 코드(12-01-01)만으로는 무엇을 쓰는지 모름. - 참고 단가 세 줄을 안내로 띄움 — 레디믹스트 65,826 · 기계비빔 163,508 · 인력비빔 408,327 원/㎥. ⚠ **표시 전용**이며 B08 의 어떤 계산에도 안 들어감 (금액은 B09 몫). 출처·산출일을 데이터에 함께 적음. 품셈 마스터 — 값 자리에 식이 적힌 칸에 깃발(`expression_cells`). `0.2 × 30%`(기초잡석 소할)처럼 계산이 그대로 적힌 칸은 값이 숫자로 안 읽혀 그 성분이 조용히 빠짐. 형태 판정은 통과하고 배분율 딱지도 없어 아무 검사에도 안 걸리던 자리(서브 창이 실물에서 부딪힘 — 기초잡석이 부설다짐 0.6인만으로 섬). ⚠ 식을 계산하지 않고 드러내기만 함 — 뜻을 잘못 읽으면 조용히 틀림. 31표에서 잡힘(9-12·9-13 터파기 계열 · 12-24 뒷채움 · 12-25 기초잡석 등). 검증 — 품셈 34건 통과, 전체 588 passed, tsc 오류 0. 화면에서 방식 이름·기본값 표시·단가 세 줄 확인. Co-Authored-By: Claude Opus 5 (1M context) --- .../B08_Quantity_Build_WorkItemMaster.py | 34 ++ B08_Quantity/B08_Quantity_Router_Earthwork.py | 10 +- B08_Quantity/B08_Quantity_UI_Page.ts | 38 +- .../work_item_mapping_2026-01-01.json | 35 +- .../data_work_item_master/_manifest.json | 6 +- .../work_item_master_2026-01-01.json | 554 +++++++++++++++++- ui_template/ui_template_locale_b2.ts | 3 + 7 files changed, 655 insertions(+), 25 deletions(-) diff --git a/B08_Quantity/B08_Quantity_Build_WorkItemMaster.py b/B08_Quantity/B08_Quantity_Build_WorkItemMaster.py index e725c006..edf5ba37 100644 --- a/B08_Quantity/B08_Quantity_Build_WorkItemMaster.py +++ b/B08_Quantity/B08_Quantity_Build_WorkItemMaster.py @@ -314,6 +314,38 @@ SHARE_TAG_RE = re.compile( CAPACITY_SYMBOLS = {"K", "k", "f", "E", "Cm", "㎝(sec)", "q", "qo", "Q"} +# ⚠ **값 자리에 숫자가 아니라 식이 적힌 칸** (2026-09-07 서브 창 제보로 확인). +# `0.2 × 30%`(기초잡석 소할) · `(0.2+0.26)/2` · `1/1.3` 처럼 계산이 그대로 적혀 있다. +# 형태 판정은 통과하는데 **값이 숫자로 안 읽혀 그 성분이 조용히 빠진다** — +# `partial_ratio` 와 같은 병인데 배분율 딱지가 없어 아무 검사에도 안 걸렸다. +# ⚠ 여기서 **식을 계산하지 않는다.** 뜻을 잘못 읽으면 조용히 틀리므로 **드러내기만** 한다. +_PLAIN_NUMBER_RE = re.compile(r"^[\d,]+(?:\.\d+)?$") +_CALC_CELL_RE = re.compile(r"^[\d,.\s()×xX*/÷+\-%]+$") +_CALC_MAX_LEN = 22 + + +def expression_cells(table: dict[str, Any]) -> list[str]: + """값 자리에 식이 적힌 칸 목록. 없으면 빈 목록.""" + found: list[str] = [] + for row in table.get("rows", []): + for cell in row: + text = norm(cell) + if not text or len(text) > _CALC_MAX_LEN or _PLAIN_NUMBER_RE.match(text): + continue + if ( + _CALC_CELL_RE.match(text) + and re.search(r"\d", text) + and re.search(r"[×xX*/÷+]", text) + ): + found.append(text) + # 순서를 지키되 중복은 지운다 — 같은 식이 여러 줄에 반복된다. + seen: list[str] = [] + for item in found: + if item not in seen: + seen.append(item) + return seen + + def resource_shares(table: dict[str, Any]) -> dict[str, float]: """`{인력: 10.0, 장비: 90.0}` — 딱지에 붙은 몫. 없으면 빈 칸.""" shares: dict[str, float] = {} @@ -421,6 +453,8 @@ def build() -> dict[str, Any]: "basis_source": basis_source, "resource_shares": shares, "partial_ratio": partial, + # ⚠ 값 자리에 식이 적힌 칸 — 그 성분은 숫자로 안 읽히므로 **금액을 만들면 안 된다**. + "expression_cells": expression_cells(table), # 공식 기호가 이 표에 직접 있는가 — 없으면 앞 표에서 물려받는 모양이다. "capacity_formula_here": capacity_formula_pending(table), "variant_key": variant_axis(table), diff --git a/B08_Quantity/B08_Quantity_Router_Earthwork.py b/B08_Quantity/B08_Quantity_Router_Earthwork.py index db9ab2f0..e30c9e13 100644 --- a/B08_Quantity/B08_Quantity_Router_Earthwork.py +++ b/B08_Quantity/B08_Quantity_Router_Earthwork.py @@ -31,6 +31,7 @@ from B08_Quantity.B08_Quantity_Engine_EarthworkSummary import SummaryInput from B08_Quantity.B08_Quantity_Engine_EarthworkSummary import build_table as build_summary_table from B08_Quantity.B08_Quantity_Engine_EarthworkTable import StationArea, build_table from B08_Quantity.B08_Quantity_Engine_HaulSummary import build_table as build_haul_table +from B08_Quantity.B08_Quantity_Engine_Handoff import load_mapping from B08_Quantity.B08_Quantity_Engine_Preparation import build_table as build_preparation_table from B08_Quantity.B08_Quantity_Engine_HaulSummary import summary_input_rows from B08_Quantity.B08_Quantity_Engine_SlopeArea import build_table as build_slope_table @@ -103,7 +104,14 @@ async def get_earthwork_table(project_id: UUID, route_id: int) -> JSONResponse: ) method, method_is_default = concrete_placing_method(settings) # ⚠ 금액에 바로 걸리는 값이라 「기본값으로 돌고 있음」을 응답에 실어 화면이 띄우게 한다. - table["concrete_placing"] = {"method": method, "is_default": method_is_default} + table["concrete_placing"] = { + "method": method, + "is_default": method_is_default, + # ⚠ **표시 전용 참고값** — 「무엇을 정해야 하는지」만으로는 부족하고 + # 「정하면 얼마나 달라지는지」가 보여야 사용자가 판단한다(2026-09-07 조율 창). + # B08 의 어떤 계산에도 안 들어간다. + "price_hint": (load_mapping().concrete_placing or {}).get("price_hint_krw_per_m3"), + } table["settings"] = settings table["project_root_known"] = project_root is not None table["route_id"] = route_id diff --git a/B08_Quantity/B08_Quantity_UI_Page.ts b/B08_Quantity/B08_Quantity_UI_Page.ts index 896e7d2e..fdf95ad2 100644 --- a/B08_Quantity/B08_Quantity_UI_Page.ts +++ b/B08_Quantity/B08_Quantity_UI_Page.ts @@ -134,6 +134,13 @@ function numberField(label: string, value: number, onInput: (value: number) => v return row; } +/** 타설 방식 표기 — 코드가 아니라 사람이 읽는 이름으로 보인다. */ +const PLACING_LABELS: Record = { + ready_mixed: "레디믹스트", + machine_mixed: "기계비빔", + hand_mixed: "인력비빔", +}; + /** 고르는 칸. 첫 보기는 **「안 정함」**이고 그것이 기본이다 — 찍으면 값이 조용히 틀린다. */ function selectField( label: string, @@ -274,8 +281,37 @@ function buildQuantitySidePanel( ), ); const placing = ( - table as unknown as { concrete_placing?: { method: string; is_default: boolean } } + table as unknown as { + concrete_placing?: { + method: string; + is_default: boolean; + price_hint?: { basis?: string; values?: Record }; + }; + } ).concrete_placing; + if (placing) { + // ⚠ 방식 이름을 **늘** 값 옆에 보인다 — 코드(`12-01-01`)만으로는 무엇을 쓰는지 모른다. + const label = PLACING_LABELS[placing.method] ?? placing.method; + panel.append( + field( + L("B08_Quantity_Placing_Current"), + placing.is_default ? `${label} (${L("B08_Quantity_Placing_Default_Tag")})` : label, + ), + ); + } + // ⚠ 「정하면 얼마나 달라지는지」까지 보여야 사용자가 판단한다. 이 값은 **참고 표시 전용**이고 + // B08 의 어떤 계산에도 안 들어간다(금액은 B09 몫). + const hint = placing?.price_hint; + if (hint?.values) { + const line = document.createElement("p"); + line.className = "b08-quantity__notice"; + const parts = Object.entries(hint.values).map( + ([key, value]) => + `${PLACING_LABELS[key] ?? key} ${Math.round(value).toLocaleString("ko-KR")}원`, + ); + line.textContent = `${L("B08_Quantity_Placing_Hint")} ${hint.basis ?? ""} — ${parts.join(" · ")}`; + panel.append(line); + } if (placing?.is_default) { // 「확인 필요」만 있으면 무엇을 정해야 하는지 모른다 — **지금 무엇으로 돌고 있는지**를 함께 적는다. const notice = document.createElement("p"); diff --git a/resources/data_work_item_mapping/work_item_mapping_2026-01-01.json b/resources/data_work_item_mapping/work_item_mapping_2026-01-01.json index 423e8e63..f00b08f0 100644 --- a/resources/data_work_item_mapping/work_item_mapping_2026-01-01.json +++ b/resources/data_work_item_mapping/work_item_mapping_2026-01-01.json @@ -142,19 +142,12 @@ "items": [ { "group": "지장목제거", - "candidates": [ - "FP-04-01 수확베기", - "FP-04-02 단목베기", - "FP-04-03 위험목 베기" - ], + "candidates": ["FP-04-01 수확베기", "FP-04-02 단목베기", "FP-04-03 위험목 베기"], "why": "품셈 4장은 벌목을 목적별로 가르는데 임도 지장목이 어느 쪽인지 원본이 말하지 않음" }, { "group": "흙깎기/측구터파기 암", - "candidates": [ - "FP-09-04 암절취(리핑)", - "FP-09-05 발파암" - ], + "candidates": ["FP-09-04 암절취(리핑)", "FP-09-05 발파암"], "why": "설계자가 넣는 암 갈래 이름(풍화암·연암·보통암·경암)이 리핑이냐 발파냐를 말하지 않음. 갈래마다 시공법을 지정하는 칸이 필요함" } ] @@ -173,10 +166,7 @@ "why": "품셈 12장에 「옹벽」 공종이 없음. 실무 내역은 「반중력식옹벽 H=2.0」 한 줄이고 그 일위대가가 위 공종을 묶음.", "needs": "일위대가 조립은 B09 몫 — B08 은 물량과 묶음만 넘김", "placing_note": "타설 코드는 프로젝트 설정의 타설 방식으로 갈림(기본 레디믹스트). 철근구조물 판정은 원단위의 D13·D16 에서 자동으로 나옴.", - "not_ready": [ - "FP-12-03", - "FP-12-25" - ], + "not_ready": ["FP-12-03", "FP-12-25"], "not_ready_why": "B09 일위대가가 아직 안 섬 — 지금 세우면 절반짜리가 됨(2026-09-07 조율 창)" } ] @@ -190,11 +180,18 @@ }, "default_method": "ready_mixed", "default_is_provisional": true, - "structure_kinds": [ - "무근구조물", - "철근구조물", - "소형구조물" - ], - "kind_rule": "원단위 성분에 철근(이형철근·원형철근)이 있으면 철근구조물, 없으면 무근구조물. 소형구조물 판정 기준은 미확보." + "structure_kinds": ["무근구조물", "철근구조물", "소형구조물"], + "kind_rule": "원단위 성분에 철근(이형철근·원형철근)이 있으면 철근구조물, 없으면 무근구조물. 소형구조물 판정 기준은 미확보.", + "price_hint_krw_per_m3": { + "note": "⚠ **표시 전용.** 사용자가 타설 방식을 고를 때 「정하면 얼마나 달라지는지」를 보이려고 둔 값이며 B08 의 어떤 계산에도 들어가지 않는다(금액은 B09 몫 — 8-2 경계). 값은 B09 가 2026-09-07 에 낸 철근구조물 기준 단가이고, 요율·노임이 바뀌면 어긋난다 — 화면이 「참고」임을 함께 적는다.", + "basis": "철근구조물 콘크리트 타설 (원/㎥)", + "computed_by": "B09", + "computed_on": "2026-09-07", + "values": { + "ready_mixed": 65826, + "machine_mixed": 163508, + "hand_mixed": 408327 + } + } } } diff --git a/resources/data_work_item_master/_manifest.json b/resources/data_work_item_master/_manifest.json index 8c85eaa2..4e0d4f1b 100644 --- a/resources/data_work_item_master/_manifest.json +++ b/resources/data_work_item_master/_manifest.json @@ -1,7 +1,7 @@ { "schema_version": "1.0", "dataset_id": "data_work_item_master_manifest", - "generated_at": "2026-09-08T01:00:54+09:00", + "generated_at": "2026-09-08T01:18:06+09:00", "built_by": "B08_Quantity/B08_Quantity_Build_WorkItemMaster.py", "source": { "dataset_id": "pum_forest", @@ -12,8 +12,8 @@ "files": [ { "file": "work_item_master_2026-01-01.json", - "sha256": "fe454c56c9dc01ad7dae04a8f90d776d08c5ce33badeadb2606b35234bfce7eb", - "size_bytes": 785034 + "sha256": "086441e1380441259e860620d1e81b886019f11838dea601c0a3797f6f1a3d3e", + "size_bytes": 800211 }, { "file": "form_undetermined_2026-01-01.json", diff --git a/resources/data_work_item_master/work_item_master_2026-01-01.json b/resources/data_work_item_master/work_item_master_2026-01-01.json index 2a294516..de454654 100644 --- a/resources/data_work_item_master/work_item_master_2026-01-01.json +++ b/resources/data_work_item_master/work_item_master_2026-01-01.json @@ -2,7 +2,7 @@ "schema_version": "1.0", "dataset_id": "work_item_master_forest", "effective_date": "2026-01-01", - "generated_at": "2026-09-08T01:00:54+09:00", + "generated_at": "2026-09-08T01:18:06+09:00", "dataset_version": { "dataset_id": "pum_forest", "effective_date": "2026-01-01", @@ -150,6 +150,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "2.5톤 차량", @@ -258,6 +259,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "단 위", @@ -881,6 +883,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "설계서의 총액", @@ -949,6 +952,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "경 암 ( 硬 岩 )", @@ -1073,6 +1077,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "자연상태의 체적", @@ -1120,6 +1125,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "사용고재(시멘트공대 및 공드람 제외)", @@ -1184,6 +1190,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "6톤 차량", @@ -1760,6 +1767,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "시 멘 트", @@ -1818,6 +1826,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "모 래", @@ -1859,6 +1868,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "모 래" @@ -1885,6 +1895,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "원 형 철 근", @@ -1961,6 +1972,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "목 재", @@ -2112,6 +2124,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "6월∼9월", @@ -2158,6 +2171,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "3년차 이상", @@ -2204,6 +2218,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "집단화 정도", @@ -2254,6 +2269,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "작업구역", @@ -2328,6 +2344,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "산지경사", @@ -2402,6 +2419,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "도 보", @@ -2468,6 +2486,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "식생을 제거하지 않고는 보행이 곤란하다", @@ -2514,6 +2533,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "가슴높이 이상의 초본․관목", @@ -2560,6 +2580,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "어렵다(높이 1.2m 이상이고, 직경이 4~6cm 이상)", @@ -2606,6 +2627,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "돌 등 장애물 함량이 30% 이상이고, 나무뿌리가 밀하게 분포할 경우", @@ -2652,6 +2674,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "과밀(80%초과 피복)", @@ -2708,6 +2731,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "대 (임지의 71% 이상 분포)", @@ -2754,6 +2778,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "돌, 도랑, 그루터기 등으로 주행이 매우 힘들다", @@ -2800,6 +2825,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "가선을 이용한 기계장비의 원목․생산재 집재", @@ -2881,6 +2907,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "11~20m", @@ -2927,6 +2954,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "규격재 생산을 위한 조재" @@ -2963,6 +2991,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "산림병해충방제 (단목베기, 나무주사)", @@ -3049,6 +3078,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "산림병해충방제 (산물수집-기계장비 집재)", @@ -3101,6 +3131,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "매개충나무주사" @@ -3148,6 +3179,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "사면형", @@ -3204,6 +3236,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "접근성", @@ -3254,6 +3287,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "방제 수종", @@ -3298,6 +3332,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "그물망 피복 시 임내 운반거리", @@ -3366,6 +3401,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "장비의 규격 (굴삭기)", @@ -3410,6 +3446,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "작업 가능 시간", @@ -3472,6 +3509,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "1", @@ -3527,6 +3565,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "적용방법", @@ -3763,6 +3802,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "2회", @@ -3832,6 +3872,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "거 푸 집 씻 기", @@ -3909,6 +3950,9 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [ + "+10%" + ], "capacity_formula_here": false, "variant_key": [ "위치 및 면적", @@ -4275,6 +4319,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "보통휘발유 (주연료)", @@ -4319,6 +4364,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "예취기(휘발유)" @@ -4349,6 +4395,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "아키아윈치(휘발유)" @@ -4377,6 +4424,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "2드럼 케이블윈치(휘발유)" @@ -4405,6 +4453,7 @@ "basis_source": "표 안", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "천공기 (휘발유)" @@ -4445,6 +4494,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "트랙터 부착 기계", @@ -4562,6 +4612,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "트랙 접지력 보강", @@ -4603,6 +4654,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "주재료", @@ -4649,6 +4701,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "주재료", @@ -4687,6 +4740,7 @@ "basis_source": "표 안", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "주재료", @@ -4723,6 +4777,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "주재료", @@ -4771,6 +4826,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "농약 (Fluroxypyr -meptyl + Triclypyr-TEA 미탁제)" @@ -4801,6 +4857,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "소금처리량(g)" @@ -4833,6 +4890,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "농약 (글리포세이트)", @@ -4880,6 +4938,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "수량", @@ -4968,6 +5027,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "훈증약제", @@ -5036,6 +5096,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "수 량", @@ -5089,6 +5150,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "수 량", @@ -5142,6 +5204,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "수 량", @@ -5195,6 +5258,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "수 량", @@ -5241,6 +5305,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "그물망", @@ -5285,6 +5350,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "메인파쇄기날", @@ -5332,6 +5398,9 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [ + "+10%" + ], "capacity_formula_here": false, "variant_key": [ "위치 및 면적", @@ -5718,6 +5787,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "45cc (배기량기준)" @@ -5756,6 +5826,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "예취기 (배기량 35cc)" @@ -5794,6 +5865,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "아키아윈치", @@ -5967,6 +6039,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "배부식분무기" @@ -6005,6 +6078,7 @@ "basis_source": "표 안", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "45cc (배기량 기준)" @@ -6043,6 +6117,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "5HP(양수기)" @@ -6081,6 +6156,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "무인헬기(FAZER) 내용가동시간 1,400시간기준" @@ -6119,6 +6195,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "무인멀티콥터(평균가) 내용가동시간 1,000시간 기준", @@ -6163,6 +6240,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "1톤(방제차량)", @@ -6207,6 +6285,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "-" @@ -6247,6 +6326,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "손료계수(10⁻⁷)", @@ -6312,6 +6392,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "소요인력", @@ -6342,6 +6423,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "위치 및 면적", @@ -7278,6 +7360,7 @@ "basis_source": "표 안", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "구 분", @@ -7310,6 +7393,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "위치 및 면적", @@ -8358,6 +8442,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "구 분", @@ -8396,6 +8481,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "위치 및 면적", @@ -9359,6 +9445,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "노면정지", @@ -9403,6 +9490,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "모든 벌채산물 임내존치지역", @@ -9499,6 +9587,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "10㎥ 미만", @@ -9561,6 +9650,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "10㎥ 미만", @@ -9653,6 +9743,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "드론조종자 (건설기계조종원)", @@ -9735,6 +9826,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "위치 및 임․소반", @@ -11217,6 +11309,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "벌도목 구분", @@ -11271,6 +11364,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "벌도ㆍ조재 공정량(㎥)", @@ -11301,6 +11395,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "154" @@ -11337,6 +11432,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "위치 및 임․소반", @@ -12161,6 +12257,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "벌목", @@ -12311,6 +12408,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "5m 미만", @@ -12380,6 +12478,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "특별인부", @@ -12466,6 +12565,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "보통인부" @@ -12504,6 +12604,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "0.13인" @@ -12540,6 +12641,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "1인" @@ -12594,6 +12696,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "0.3m 미만", @@ -12649,6 +12752,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "특별인부", @@ -12746,6 +12850,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "특별인부(인)", @@ -12919,6 +13024,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "10∼ 19", @@ -12975,6 +13081,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "줄떼", @@ -13019,6 +13126,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "지게", @@ -13108,6 +13216,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "특별인부", @@ -13258,6 +13367,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "소묘식재", @@ -13302,6 +13412,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "소나무", @@ -13388,6 +13499,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "소묘", @@ -13438,6 +13550,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "0.3m 미만", @@ -13493,6 +13606,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "0.3m 미만", @@ -13548,6 +13662,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "인 력 시 공", @@ -13677,6 +13792,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "인력품의 10%" @@ -13713,6 +13829,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "특별인부(인)", @@ -13870,6 +13987,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "인력품의 10%" @@ -13896,6 +14014,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "8 ∼ 17", @@ -13952,6 +14071,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "파종상 만들기", @@ -14020,6 +14140,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "지면긁기작업", @@ -14067,6 +14188,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "맹아근주 정리작업" @@ -14107,6 +14229,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "움싹본수조절", @@ -14161,6 +14284,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "큰나무 식재" @@ -14201,6 +14325,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "보통인부" @@ -14241,6 +14366,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "묘목", @@ -14323,6 +14449,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "보통인부(인)" @@ -14363,6 +14490,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "줄떼", @@ -14407,6 +14535,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "줄떼심기", @@ -14451,6 +14580,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "새채집", @@ -14526,6 +14656,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "말뚝", @@ -14593,6 +14724,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "보통토사", @@ -14673,6 +14805,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "단끊기", @@ -14743,6 +14876,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "단끊기", @@ -14804,6 +14938,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "단끊기", @@ -14858,6 +14993,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "종자", @@ -14956,6 +15092,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "6", @@ -15008,6 +15145,7 @@ "basis_source": "표 안", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "15", @@ -15065,6 +15203,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "표토채취", @@ -15125,6 +15264,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "채 취", @@ -15193,6 +15333,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "조경공", @@ -15240,6 +15381,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "보통인부" @@ -15280,6 +15422,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "조경공", @@ -15356,6 +15499,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "조경공", @@ -15403,6 +15547,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "보통인부" @@ -15452,6 +15597,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "자재", @@ -15576,6 +15722,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "자재", @@ -15690,6 +15837,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "초본 위주형", @@ -15778,6 +15926,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "초본 위주형", @@ -15876,6 +16025,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "자재", @@ -15942,6 +16092,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "9", @@ -16009,6 +16160,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "9", @@ -16076,6 +16228,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "10% 이내", @@ -16128,6 +16281,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "조경공", @@ -16181,6 +16335,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "특 별 인 부", @@ -16225,6 +16380,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "폭 1.5m 이하", @@ -16282,6 +16438,9 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [ + "1/1.3" + ], "capacity_formula_here": false, "variant_key": [ "K(버킷계수)", @@ -16338,6 +16497,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "표시봉 설치" @@ -16378,6 +16538,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "지주목 설치" @@ -16418,6 +16579,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "대 절" @@ -16458,6 +16620,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "소묘, 중묘", @@ -16502,6 +16665,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "소 묘", @@ -16561,6 +16725,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "인공림(10년이하 조림지)", @@ -16620,6 +16785,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "낫" @@ -16660,6 +16826,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "묘목찾기", @@ -16730,6 +16897,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "묘목찾기", @@ -16800,6 +16968,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "괭이, 도끼 등" @@ -16849,6 +17018,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "기계작업" @@ -16891,6 +17061,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "약제살포", @@ -16941,6 +17112,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "소금 처리", @@ -17015,6 +17187,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "뿌리 고살", @@ -17071,6 +17244,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "80% 이상", @@ -17139,6 +17313,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "특별인부 (체인톱 사용)", @@ -17197,6 +17372,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "0~0.5m", @@ -17304,6 +17480,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "11미만", @@ -17362,6 +17539,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "특 별 인 부", @@ -17406,6 +17584,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "특 별 인 부", @@ -17456,6 +17635,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "우 드 칩", @@ -17528,6 +17708,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "100m이하", @@ -17578,6 +17759,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "ha당원목재적 평균거리", @@ -17650,6 +17832,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "ha당원목재적 평균거리", @@ -17747,6 +17930,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "8", @@ -17930,6 +18114,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "20이하㎥", @@ -18012,6 +18197,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "50m 내외" @@ -18059,6 +18245,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "50이하", @@ -18190,6 +18377,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "20m이하", @@ -18251,6 +18439,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "30이하", @@ -18382,6 +18571,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "0.1∼0.2㎥", @@ -18462,6 +18652,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "60m 이하", @@ -18514,6 +18705,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "50이하", @@ -18645,6 +18837,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "100m 이하", @@ -18734,6 +18927,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "120m 이하", @@ -18799,6 +18993,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "120m 이하", @@ -18864,6 +19059,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "100m이하", @@ -19004,6 +19200,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "100m 이하", @@ -19090,6 +19287,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "100m 이하", @@ -19166,6 +19364,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "100m 이하", @@ -19245,6 +19444,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "20㎥ 미만", @@ -19293,6 +19493,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "원목의 길이", @@ -19365,6 +19566,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "원목의 길이", @@ -19437,6 +19639,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "원목집재와 동시에 부산물 수집시" @@ -19474,6 +19677,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "9㎝ 이하", @@ -19561,6 +19765,7 @@ "basis_source": "표 안", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "생산목 검척" @@ -19589,6 +19794,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "2.1m", @@ -19692,6 +19898,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "1회 적 재 량", @@ -19776,6 +19983,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "100", @@ -19856,6 +20064,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "0.5", @@ -19933,6 +20142,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "100", @@ -20013,6 +20223,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "100", @@ -20090,6 +20301,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "100", @@ -20185,6 +20397,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "특별인부", @@ -20281,6 +20494,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "특별인부", @@ -20359,6 +20573,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "10~12", @@ -20518,6 +20733,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "10~12", @@ -20655,6 +20871,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "아바멕틴", @@ -20706,6 +20923,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "10~12", @@ -20865,6 +21083,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "10~16", @@ -21023,6 +21242,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "티아메톡삼 분산성액제 15%", @@ -21081,6 +21301,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "10∼12", @@ -21265,6 +21486,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "10∼12", @@ -21449,6 +21671,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "10∼12", @@ -21643,6 +21866,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "디노테퓨란(15)․에마멕틴벤조에이트(4.5) 분산성액제 19.5%", @@ -21695,6 +21919,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "10∼12", @@ -21879,6 +22104,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "10∼12", @@ -22063,6 +22289,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "10∼12", @@ -22247,6 +22474,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "사업 구분", @@ -22925,6 +23153,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "공종", @@ -23531,6 +23760,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "위치 및 면적", @@ -24131,6 +24361,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "아바멕틴(1.8)·설폭사플로르(4.2) 분산성액제 6%" @@ -24159,6 +24390,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "10∼12", @@ -24353,6 +24585,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "테부코나졸 유탁제 25%" @@ -24381,6 +24614,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "10∼12", @@ -24575,6 +24809,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "6", @@ -24879,6 +25114,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "4cm", @@ -25070,6 +25306,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "중부지방소나무" @@ -25110,6 +25347,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "8롤 미만", @@ -25174,6 +25412,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "트랩설치", @@ -25233,6 +25472,7 @@ "basis_source": "표 안", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "특별인부", @@ -25341,6 +25581,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "산림항공방제", @@ -25419,6 +25660,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "소형헬기 (AS350)", @@ -25609,6 +25851,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "드론조종자 (건설기계 조종원)", @@ -25694,6 +25937,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "드론조종자 (건설기계 조종원)", @@ -25789,6 +26033,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "특별인부", @@ -25846,6 +26091,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "250배", @@ -25992,6 +26238,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "방제실행 등록" @@ -26039,6 +26286,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "10m이하", @@ -26111,6 +26359,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "10개 이하", @@ -26170,6 +26419,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "잔가지 줍기" @@ -26208,6 +26458,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "벌목부", @@ -26287,6 +26538,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "이동식 임목 파쇄기" @@ -26345,6 +26597,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "특별인부" @@ -26392,6 +26645,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "보통인부(인)" @@ -26434,6 +26688,9 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [ + "1/1.30" + ], "capacity_formula_here": true, "variant_key": [ "K", @@ -26499,6 +26756,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "대형브레이커+ 유압식백호우 (무한궤도,0.7㎥)", @@ -26557,6 +26815,9 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [ + "1/1.40" + ], "capacity_formula_here": true, "variant_key": [ "K", @@ -26622,6 +26883,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "자재", @@ -26728,6 +26990,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "연 암", @@ -26782,6 +27045,9 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [ + "1/1.625" + ], "capacity_formula_here": true, "variant_key": [ "K", @@ -26847,6 +27113,9 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [ + "10.0 (9+11)/2" + ], "capacity_formula_here": false, "variant_key": [ "대형브레이커+유압식백호우 (무한궤도,0.7㎥)" @@ -26894,6 +27163,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "무근콘크리트" @@ -26936,6 +27206,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "무근콘크리트" @@ -26987,6 +27258,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "철근콘크리트" @@ -27019,6 +27291,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "인력", @@ -27084,6 +27357,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "철근콘크리트" @@ -27126,6 +27400,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "메쌓기", @@ -27193,6 +27468,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "콘크리트" @@ -27233,6 +27509,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "아스팔트" @@ -27282,6 +27559,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "인력", @@ -27382,6 +27660,11 @@ "장비": 90.0 }, "partial_ratio": true, + "expression_cells": [ + "(0.2+0.26)/2", + "1/1.3", + "(0.7+0.6)/2-0.05" + ], "capacity_formula_here": true, "variant_key": [ "인력(10%)", @@ -27457,6 +27740,10 @@ "장비": 90.0 }, "partial_ratio": true, + "expression_cells": [ + "1/1.35", + "(0.65+0.45)/2-0.05" + ], "capacity_formula_here": true, "variant_key": [ "인력 (10%)", @@ -27548,6 +27835,10 @@ "장비": 90.0 }, "partial_ratio": true, + "expression_cells": [ + "(0.006+0.02+0.03)/3", + "1/1.625" + ], "capacity_formula_here": true, "variant_key": [ "인력 (10%)", @@ -27648,6 +27939,10 @@ "장비": 90.0 }, "partial_ratio": true, + "expression_cells": [ + "(0.2+0.26)/2", + "(0.7+0.6)/2-0.05" + ], "capacity_formula_here": true, "variant_key": [ "인력 (10%)", @@ -27723,6 +28018,9 @@ "장비": 90.0 }, "partial_ratio": true, + "expression_cells": [ + "(0.27+0.35)/2" + ], "capacity_formula_here": false, "variant_key": [ "인력 (10%)", @@ -27772,6 +28070,9 @@ "장비": 90.0 }, "partial_ratio": true, + "expression_cells": [ + "(0.34+0.44)/2" + ], "capacity_formula_here": false, "variant_key": [ "인력 (10%)", @@ -27821,6 +28122,9 @@ "장비": 90.0 }, "partial_ratio": true, + "expression_cells": [ + "(0.55+0.45)/2-0.05" + ], "capacity_formula_here": true, "variant_key": [ "인력 (10%)", @@ -27896,6 +28200,7 @@ "장비": 90.0 }, "partial_ratio": true, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "인력 (10%)", @@ -27945,6 +28250,7 @@ "장비": 90.0 }, "partial_ratio": true, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "인력 (10%)", @@ -27994,6 +28300,9 @@ "장비": 90.0 }, "partial_ratio": true, + "expression_cells": [ + "(0.65+0.45)/2-0.05" + ], "capacity_formula_here": true, "variant_key": [ "인력 (10%)", @@ -28093,6 +28402,7 @@ "장비": 90.0 }, "partial_ratio": true, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "인력 (10%)", @@ -28168,6 +28478,7 @@ "장비": 90.0 }, "partial_ratio": true, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "인력 (10%)", @@ -28243,6 +28554,9 @@ "장비": 90.0 }, "partial_ratio": true, + "expression_cells": [ + "(0.50+0.35)/2-0.05" + ], "capacity_formula_here": true, "variant_key": [ "인력 (10%)", @@ -28334,6 +28648,7 @@ "장비": 90.0 }, "partial_ratio": true, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "인력 (10%)", @@ -28401,6 +28716,7 @@ "장비": 90.0 }, "partial_ratio": true, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "인력 (10%)", @@ -28468,6 +28784,9 @@ "장비": 90.0 }, "partial_ratio": true, + "expression_cells": [ + "1/1.625" + ], "capacity_formula_here": true, "variant_key": [ "인력 (10%)", @@ -28567,6 +28886,7 @@ "장비": 90.0 }, "partial_ratio": true, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "인력 (10%)", @@ -28642,6 +28962,7 @@ "장비": 90.0 }, "partial_ratio": true, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "인력 (10%)", @@ -28717,6 +29038,7 @@ "장비": 90.0 }, "partial_ratio": true, + "expression_cells": [], "capacity_formula_here": true, "variant_key": [ "인력 (10%)", @@ -28816,6 +29138,7 @@ "장비": 90.0 }, "partial_ratio": true, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "인력 (10%)", @@ -28891,6 +29214,7 @@ "장비": 90.0 }, "partial_ratio": true, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "인력 (10%)", @@ -28975,6 +29299,7 @@ "장비": 90.0 }, "partial_ratio": true, + "expression_cells": [], "capacity_formula_here": true, "variant_key": [ "인력 (10%)", @@ -29047,6 +29372,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": true, "variant_key": [ "A", @@ -29123,6 +29449,9 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [ + "1/1.30" + ], "capacity_formula_here": false, "variant_key": [ "K(버킷계수)", @@ -29179,6 +29508,9 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [ + "1/1.3" + ], "capacity_formula_here": false, "variant_key": [ "T(표토두께)", @@ -29280,6 +29612,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": true, "variant_key": [ "K", @@ -29336,6 +29669,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "V(다짐속도,km/hr)", @@ -29404,6 +29738,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "흡입준비(t1)", @@ -29484,6 +29819,9 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [ + "1/1.3" + ], "capacity_formula_here": true, "variant_key": [ "L", @@ -29564,6 +29902,9 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [ + "1/1.3" + ], "capacity_formula_here": true, "variant_key": [ "굴착기 (무한궤도, 0.7㎥)", @@ -29633,6 +29974,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "보통인부 (인)", @@ -29710,6 +30052,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "인력시공", @@ -29772,6 +30115,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "인력", @@ -29821,6 +30165,9 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [ + "(0.0046+0.061)/2" + ], "capacity_formula_here": false, "variant_key": [ "인력", @@ -29895,6 +30242,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "특별인부", @@ -29956,6 +30304,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "특별인부", @@ -30003,6 +30352,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "굴착기 (무한궤도)", @@ -30073,6 +30423,9 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [ + "1/1.25" + ], "capacity_formula_here": false, "variant_key": [ "K(버킷계수)", @@ -30138,6 +30491,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "운반비", @@ -30182,6 +30536,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "운반비", @@ -30235,6 +30590,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "구 입", @@ -30279,6 +30635,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "골재생산", @@ -30323,6 +30680,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "운반비", @@ -30367,6 +30725,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "운반", @@ -30526,6 +30885,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "토사", @@ -30610,6 +30970,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "보통인부(인)" @@ -30668,6 +31029,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "소 재 (조재목)", @@ -30762,6 +31124,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "작업반장(인)", @@ -30809,6 +31172,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "작업반장(인)", @@ -30863,6 +31227,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "작업반장(인)", @@ -30917,6 +31282,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "차량구분", @@ -30954,6 +31320,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "시간(분)" @@ -30984,6 +31351,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "보통인부(인)" @@ -31014,6 +31382,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "연장", @@ -31102,6 +31471,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "연료비", @@ -31158,6 +31528,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "짐내리는 인부", @@ -31230,6 +31601,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "운반대" @@ -31274,6 +31646,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "특별인부", @@ -31349,6 +31722,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "콘크리트 블 록", @@ -31464,6 +31838,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "작업반장", @@ -31522,6 +31897,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "작업반장", @@ -31580,6 +31956,11 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [ + "1/1.30", + "1/1.35", + "1/1.625" + ], "capacity_formula_here": true, "variant_key": [ "L", @@ -31698,6 +32079,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": true, "variant_key": [ "K", @@ -31748,6 +32130,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "적재(t1)", @@ -31849,6 +32232,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "인원(명)" @@ -31895,6 +32279,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "인원(명)" @@ -31931,6 +32316,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "① 드론준비시간(분)", @@ -31996,6 +32382,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "비계공", @@ -32057,6 +32444,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "건축목공", @@ -32101,6 +32489,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "건축목공", @@ -32145,6 +32534,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": true, "variant_key": [ "부설장비", @@ -32235,6 +32625,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "무근구조물", @@ -32285,6 +32676,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "무근구조물", @@ -32335,6 +32727,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "무근구조물", @@ -32375,6 +32768,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "25", @@ -32445,6 +32839,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "25", @@ -32525,6 +32920,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "미 장 공" @@ -32553,6 +32949,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "무근콘크리트", @@ -32598,6 +32995,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "f₁" @@ -32630,6 +33028,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "Type-Ⅰ", @@ -32671,6 +33070,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "f₁" @@ -32701,6 +33101,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "Type-Ⅰ", @@ -32737,6 +33138,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "시멘트(kg)", @@ -32795,6 +33197,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "설 치", @@ -32844,6 +33247,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "철근공(인)", @@ -32927,6 +33331,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "횟수별", @@ -33061,6 +33466,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "문양 스티로폴(자재비 포함)", @@ -33118,6 +33524,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "콘크리트믹서트럭 직접타설인경우", @@ -33199,6 +33606,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "명칭", @@ -33258,6 +33666,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "특별인부", @@ -33301,6 +33710,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "포장두께(㎝)", @@ -33376,6 +33786,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "콘크리트(레미콘)", @@ -33466,6 +33877,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "콘크리트", @@ -33548,6 +33960,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "콘크리트", @@ -33598,6 +34011,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "유공관 설치", @@ -33721,6 +34135,17 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [ + "0.62/2.5", + "0.76/2.5", + "0.90/2.5", + "0.26/2.5", + "0.35/2.5", + "0.46/2.5", + "0.96/2.5", + "1.78/2.5", + "2.35/2.5" + ], "capacity_formula_here": false, "variant_key": [ "∅800mm", @@ -33845,6 +34270,20 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [ + "0.62/2.5", + "0.76/2.5", + "0.90/2.5", + "0.26/2.5", + "0.35/2.5", + "0.46/2.5", + "0.96/2.5", + "1.78/2.5", + "2.35/2.5", + "0.016/2.5/2", + "0.0298/2.5/2", + "0.0355/2.5/2" + ], "capacity_formula_here": false, "variant_key": [ "∅800mm", @@ -33949,6 +34388,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "절단기", @@ -34015,6 +34455,17 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [ + "0.31/8.0", + "0.37/8.0", + "0.43/8.0", + "0.25/8.0", + "0.22/8.0", + "0.41/8.0", + "0.15/8.0", + "0.19/8.0", + "0.23/8.0" + ], "capacity_formula_here": false, "variant_key": [ "∅800mm", @@ -34119,6 +34570,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "콘크리트 (레미콘)", @@ -34233,6 +34685,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "콘크리트 (레미콘)", @@ -34331,6 +34784,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "파형강관부설", @@ -34384,6 +34838,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "구체콘크리트 (레미콘)", @@ -34474,6 +34929,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "구체콘크리트 (레미콘)", @@ -34622,6 +35078,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "무근콘크리트", @@ -34704,6 +35161,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "구체콘크리트 (철근)", @@ -34777,6 +35235,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "결속선(R=0.9mm)", @@ -34838,6 +35297,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "자재", @@ -34927,6 +35387,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "자재", @@ -35005,6 +35466,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "자재", @@ -35062,6 +35524,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "재료비", @@ -35106,6 +35569,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "자재", @@ -35184,6 +35648,9 @@ "장비": 90.0 }, "partial_ratio": true, + "expression_cells": [ + "0.9/1.30" + ], "capacity_formula_here": true, "variant_key": [ "뒷채움 자재비 및 운반비 별산", @@ -35306,6 +35773,9 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [ + "0.2 × 30%" + ], "capacity_formula_here": true, "variant_key": [ "소할(30%)", @@ -35394,6 +35864,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "기계", @@ -35466,6 +35937,9 @@ "장비": 90.0 }, "partial_ratio": true, + "expression_cells": [ + "0.95/1.175" + ], "capacity_formula_here": true, "variant_key": [ "뒷채움 자재비 및 운반비 별산", @@ -35579,6 +36053,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "자재", @@ -35636,6 +36111,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "자재", @@ -35685,6 +36161,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "자재", @@ -35742,6 +36219,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "재료비", @@ -35795,6 +36273,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "자재", @@ -35868,6 +36347,9 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [ + "150×150×15" + ], "capacity_formula_here": false, "variant_key": [ "재료", @@ -35983,6 +36465,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "재료비", @@ -36027,6 +36510,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "재료비", @@ -36071,6 +36555,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "재료", @@ -36129,6 +36614,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "자재", @@ -36202,6 +36688,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "재료비", @@ -36246,6 +36733,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "자재", @@ -36327,6 +36815,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "재료비" @@ -36365,6 +36854,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "자재", @@ -36422,6 +36912,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "제작비", @@ -36472,6 +36963,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "자재", @@ -36538,6 +37030,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "패 널 류 보, 드롭헤드, 강관파이프, 훅  클래프, 웨지핀" @@ -36574,6 +37067,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "패 널", @@ -36625,6 +37119,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "요 율" @@ -36665,6 +37160,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "복 잡", @@ -36715,6 +37211,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "복 잡", @@ -36788,6 +37285,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "규격", @@ -36844,6 +37342,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "보통인부", @@ -36890,6 +37389,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "작업반장", @@ -36954,6 +37454,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "40㎝이상∼60㎝미만", @@ -37002,6 +37503,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "인 부", @@ -37057,6 +37559,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "증가율(%)" @@ -37089,6 +37592,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "25㎝(17×17)", @@ -37168,6 +37672,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "35cm 이하", @@ -37228,6 +37733,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "모래 기초다짐", @@ -37296,6 +37802,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "(mm)", @@ -37367,6 +37874,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "골쌓기", @@ -37563,6 +38071,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "35cm 이하", @@ -37623,6 +38132,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "야면석(㎥) 깬잡석(㎥) 깬 돌(㎥) 견치돌(㎥)" @@ -37671,6 +38181,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "골쌓기", @@ -37857,6 +38368,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "야면석(㎥) 호박돌(㎥)", @@ -37909,6 +38421,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "상부의 두께(㎝) 하부의 두께(㎝)" @@ -37941,6 +38454,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "∼1.5", @@ -37983,6 +38497,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "메쌓기", @@ -38057,6 +38572,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "35cm 이하", @@ -38117,6 +38633,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "25㎝", @@ -38176,6 +38693,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "종 별", @@ -38256,6 +38774,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "35cm 이하", @@ -38325,6 +38844,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "직경 40㎝이상 ∼60㎝미만", @@ -38412,6 +38932,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "직경 40㎝이상 ∼60㎝미만", @@ -38499,6 +39020,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "직경 40㎝이상 ~60㎝미만", @@ -38595,6 +39117,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "직경 40㎝이상 ~60㎝미만", @@ -38682,6 +39205,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "직경 40㎝이상 ∼60㎝미만", @@ -38769,6 +39293,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "뒷길이 평균 적용" @@ -38811,6 +39336,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "인 력", @@ -38877,6 +39403,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "직경 15㎝ 길이 4m" @@ -38917,6 +39444,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "보통 인부 (인)" @@ -38953,6 +39481,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "보 통 인 부 (인)" @@ -39007,6 +39536,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "계수" @@ -39045,6 +39575,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "8 9", @@ -39207,6 +39738,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "조약돌량(㎥)", @@ -39258,6 +39790,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "조립 설치", @@ -39348,6 +39881,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "조약돌량(㎥)", @@ -39415,6 +39949,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "조립 설치", @@ -39510,6 +40045,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "특별인부", @@ -39557,6 +40093,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "자재", @@ -39655,6 +40192,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "보통토사", @@ -39719,6 +40257,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "작 업 반 장", @@ -39759,6 +40298,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "4m 표준", @@ -39826,6 +40366,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "보통구조", @@ -39909,6 +40450,7 @@ "장비": 90.0 }, "partial_ratio": true, + "expression_cells": [], "capacity_formula_here": true, "variant_key": [ "인력(10%)", @@ -39966,6 +40508,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "식생매트설치", @@ -40021,6 +40564,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "간 단 구 조", @@ -40068,6 +40612,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "단 끊 기", @@ -40127,6 +40672,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "보 통 인 부" @@ -40181,6 +40727,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "어려운 조건", @@ -40218,6 +40765,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "어려운 조건", @@ -40280,6 +40828,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "사 면", @@ -40380,6 +40929,7 @@ "basis_source": null, "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "폭 1.5m 이하", @@ -40446,6 +40996,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "0.8㎥ 굴착기(우드그랩 부착)", @@ -40493,6 +41044,7 @@ "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, + "expression_cells": [], "capacity_formula_here": false, "variant_key": [ "0.8㎥ 굴착기", diff --git a/ui_template/ui_template_locale_b2.ts b/ui_template/ui_template_locale_b2.ts index 2073135f..f79261e6 100644 --- a/ui_template/ui_template_locale_b2.ts +++ b/ui_template/ui_template_locale_b2.ts @@ -631,6 +631,9 @@ export const ui_locales_b2 = { B08_Quantity_Side_Placing: ["콘크리트 타설", "Concrete Placing"], B08_Quantity_Side_Placing_Label: ["타설 방식", "Method"], B08_Quantity_Placing_Unset: ["안 정함(기본값 사용)", "Not set (default)"], + B08_Quantity_Placing_Current: ["적용 중", "In use"], + B08_Quantity_Placing_Default_Tag: ["기본값 — 확인 필요", "default — needs review"], + B08_Quantity_Placing_Hint: ["참고 단가(B09 산출):", "Reference unit price (from B09):"], B08_Quantity_Placing_Ready: ["레디믹스트", "Ready-mixed"], B08_Quantity_Placing_Machine: ["기계비빔", "Machine-mixed"], B08_Quantity_Placing_Hand: ["인력비빔", "Hand-mixed"], From 92e0ddca0175eb59c06ae56f0872c3fd353c5aec Mon Sep 17 00:00:00 2001 From: umsangdon Date: Tue, 8 Sep 2026 01:27:47 +0900 Subject: [PATCH 3/5] =?UTF-8?q?feat(B08):=20=EB=AC=B6=EC=9D=8C=20=EC=A1=B0?= =?UTF-8?q?=EA=B0=81=20=EB=B6=80=EC=9C=84=EB=B3=84=20=EC=88=98=EB=9F=89=20?= =?UTF-8?q?+=20=EC=B2=A0=EA=B7=BC=20=EA=B0=88=EB=9E=98=20=EC=9B=90?= =?UTF-8?q?=EB=AC=B8=20=EC=9E=90=EB=8F=99=20=ED=8C=90=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 옹벽 네 조각이 B09 에 다 서서 이제 물량을 실어 보냄. - `composite_parts` 에 조각마다 수량·단위·근거(`basis_kind`)를 실음. 코드만 보내면 받는 쪽이 상세 줄을 못 세움. 조각은 **원단위 성분 이름으로** 찾고 못 찾으면 0 이 아니라 사유와 함께 `not_ready` 로 남김. - ⚠ 철근은 ㎏ → ton 환산. 단가가 원/ton 인데 원단위는 ㎏ 이라 안 맞추면 1000배 틀림. D13 13.45 + D16 30.42 = 43.87㎏/m × 10m = 0.4387ton. - 철근 갈래는 **품셈 12-3 [주]① 원문**이 정함 — 「간단: 중력식 옹벽 / 보통: 반중력식 옹벽 / 복잡: 부벽식 옹벽」. 거푸집 사용횟수(1-7-1)와 같은 자리라 사람이 고를 칸을 만들지 않음. 캔틸레버식은 예시에 없어 「보통」으로 때우지 않고 미확보로 드러냄. - 전개 결과에 저장 제원(`options`)을 실어 뒤 단계가 형식을 읽게 함. 치수를 다시 쓰라는 뜻이 아니라 읽으라는 것 — 치수 정본은 여전히 하나. - 화면(구조물 원단위 탭)에 묶음 조각과 갈래를 보임. ⚠ 옛 시험 하나를 계약 변경에 맞춰 옮김 — `composite_not_ready` 가 「일위대가가 아직 안 선 공종」에서 「물량을 못 채운 조각」으로 뜻이 바뀜. 검증 — 인계 54건 통과, 전체 594 passed, tsc 오류 0. Co-Authored-By: Claude Opus 5 (1M context) --- B08_Quantity/B08_Quantity_Engine_Handoff.py | 120 +++++++++++++++++- .../B08_Quantity_Engine_UnitQuantity.py | 6 + B08_Quantity/B08_Quantity_Router_Material.py | 12 ++ B08_Quantity/B08_Quantity_UI_MaterialGrid.ts | 39 ++++++ .../rebar_complexity_2026-01-01.json | 70 ++++++++++ .../work_item_mapping_2026-01-01.json | 75 +++++++++-- 6 files changed, 309 insertions(+), 13 deletions(-) create mode 100644 resources/data_rebar/rebar_complexity_2026-01-01.json diff --git a/B08_Quantity/B08_Quantity_Engine_Handoff.py b/B08_Quantity/B08_Quantity_Engine_Handoff.py index 983589c4..522101c6 100644 --- a/B08_Quantity/B08_Quantity_Engine_Handoff.py +++ b/B08_Quantity/B08_Quantity_Engine_Handoff.py @@ -50,6 +50,11 @@ from common_util.common_util_quantity_spread import spread_by_unit DATASET_DIR = Path(__file__).resolve().parents[1] / "resources" / "data_work_item_mapping" DATASET_PREFIX = "work_item_mapping_" +#: 철근 갈래표 — **품셈 12-3 [주]① 원문**이 구조물 예시로 갈라 둔 것이라 사람이 고르는 값이 +#: 아니다(거푸집 사용횟수 1-7-1 과 같은 자리). 원문 예시에 안 걸리면 지어내지 않는다. +REBAR_DIR = Path(__file__).resolve().parents[1] / "resources" / "data_rebar" +REBAR_PREFIX = "rebar_complexity_" + #: 줄이 어디서 왔나 — 되짚을 때 쓴다. ORIGIN_EARTHWORK = "earthwork" ORIGIN_STRUCTURE = "structure" @@ -92,6 +97,7 @@ class WorkItemMapping: pending_user: dict[str, Any] = field(default_factory=dict) composite: dict[str, Any] = field(default_factory=dict) concrete_placing: dict[str, Any] = field(default_factory=dict) + unit_conversion: dict[str, Any] = field(default_factory=dict) def for_earthwork(self, group: str, ground: str | None) -> dict[str, Any] | None: # noqa: D401 """공종+지반유형으로 찾는다. 지반이 갈리지 않는 공종은 `ground` 없는 줄이 받는다.""" @@ -143,9 +149,75 @@ def load_mapping(path: Path | None = None) -> WorkItemMapping: pending_user=payload.get("pending_user") or {}, composite=payload.get("composite") or {}, concrete_placing=payload.get("concrete_placing") or {}, + unit_conversion=(payload.get("composite") or {}).get("unit_conversion") or {}, ) +def composite_quantities( + structure: dict[str, Any], + composite: dict[str, Any], + mapping: WorkItemMapping, +) -> tuple[list[dict[str, Any]], list[str]]: + """묶음 조각마다 **부위별 수량**을 채운다. (조각 목록, 못 채운 사유). + + ⚠ 조각은 **원단위 성분 이름으로** 찾는다. 이름이 어긋나면 물량이 조용히 0 이 되므로 + 못 찾으면 그 조각을 `not_ready` 로 남기고 사유를 적는다 — 0 을 적지 않는다. + ⚠ **단위를 반드시 맞춘다.** 철근 단가는 `원/ton` 인데 원단위는 `㎏` 이다. + 안 맞추면 **1000배 틀린다** — 밑수에서 겪은 것과 같은 자리다. + """ + amounts: dict[str, tuple[float, str]] = {} + for component in structure.get("components") or []: + name = str(component.get("name") or "").strip() + amounts[name] = (float(component.get("amount") or 0.0), str(component.get("unit") or "")) + kg_to_ton = float((mapping.unit_conversion or {}).get("kg_to_ton") or 0.001) + + parts: list[dict[str, Any]] = [] + missing: list[str] = [] + for spec in composite.get("parts") or []: + if not isinstance(spec, dict): # 옛 모양(코드 문자열)은 그대로 흘린다 + parts.append({"code": str(spec)}) + continue + sources = list(spec.get("from_components") or []) + found = [name for name in sources if name in amounts] + total = sum(amounts[name][0] for name in found) + if spec.get("unit_from") == "kg" and spec.get("unit") == "ton": + total *= kg_to_ton + kinds = { + component.get("basis_kind") + for component in structure.get("components") or [] + if str(component.get("name") or "").strip() in found + } + suffix = spec.get("kind_suffix") + entry: dict[str, Any] = { + "code": spec.get("code"), + "name": spec.get("name"), + "unit": spec.get("unit"), + "quantity": total if found else None, + # 조각마다 근거를 단다 — 치수 전개와 관측값이 한 묶음에 섞인다. + "basis_kind": next(iter(kinds)) if len(kinds) == 1 else (sorted(kinds) or None), + "from_components": sources, + } + if suffix == "rebar_complexity": + # 갈래는 원문이 정한다 — 화면·인계에 이름과 근거를 함께 실어 사람이 검증하게 한다. + complexity, why = rebar_complexity( + str(structure.get("type_id") or ""), structure.get("options") or {} + ) + entry["kind"] = complexity + entry["kind_basis"] = why + if complexity: + entry["code"] = f"{spec.get('code')}#{complexity}" + else: + entry["not_ready"] = True + entry["why"] = why + missing.append(f"{spec.get('name')}: {why}") + if spec.get("not_ready") or not found: + entry["not_ready"] = True + entry["why"] = str(spec.get("why") or "원단위에 해당 성분이 없음") + missing.append(f"{spec.get('name') or spec.get('code')}: {entry['why']}") + parts.append(entry) + return parts, missing + + def structure_kind(structure: dict[str, Any]) -> str: """콘크리트 구조물 종류 — **원단위에 철근이 있나 없나로 판정한다.** @@ -169,6 +241,44 @@ def placing_code(mapping: WorkItemMapping, method: str | None) -> tuple[str | No return codes.get(default), True +def load_rebar_table(path: Path | None = None) -> dict[str, Any]: + """철근 갈래표를 읽는다. 파일이 없으면 **빈 표** — 전부 「갈래 미확보」로 드러난다.""" + target = path + if target is None: + files = sorted(REBAR_DIR.glob(REBAR_PREFIX + "*.json")) if REBAR_DIR.is_dir() else [] + target = files[-1] if files else None + if target is None or not target.is_file(): + return {} + return json.loads(target.read_text(encoding="utf-8")) + + +def rebar_complexity( + type_id: str, options: dict[str, Any], table: dict[str, Any] | None = None +) -> tuple[str | None, str]: + """(철근 갈래, 근거). **원문 예시에 걸리는 것만** 정하고 안 걸리면 `(None, 사유)`. + + 품셈 12-3 [주]① — 「간단: 측구·간단한 기초·**중력식 옹벽** / 보통: 수문·**반중력식 옹벽**· + 교대 / 복잡: 교량 슬래브·암거·우물통·**부벽식 옹벽** / 매우복잡: 구주식 교대·교각…」. + 사람에게 묻지 않는다 — **판정할 수 있는 것을 물으면 그것이 곧 미결이 된다.** + """ + found = table if table is not None else load_rebar_table() + form = options.get("form") + fallback: dict[str, Any] | None = None + for row in found.get("form_map") or []: + if row.get("type_id") != type_id: + continue + if "form" not in row: + fallback = row + continue + if row.get("form") == form: + if row.get("class"): + return str(row["class"]), f"품셈 12-3 [주]① 「{row.get('matched')}」" + return None, str(row.get("why") or "원문 예시에 없음") + if fallback and fallback.get("class"): + return str(fallback["class"]), f"품셈 12-3 [주]① 「{fallback.get('matched')}」" + return None, f"품셈 12-3 [주]① 예시에 없는 구조({type_id} {form}) — 임의로 고르지 않음" + + def _spec_detail(structure: dict[str, Any]) -> str: """규격 표기 — 저장된 제원에서 만든다. 없는 값은 적지 않는다.""" parts: list[str] = [] @@ -307,6 +417,10 @@ def _structure_rows( code = entry.get("work_item_code") composite = mapping.composite_for(type_id) if code is None else None kind = structure_kind(structure) if composite else None + parts: list[dict[str, Any]] | None = None + parts_missing: list[str] = [] + if composite: + parts, parts_missing = composite_quantities(structure, composite, mapping) if code is None and composite is None: unmatched.append(f"구조물({type_id})") length = float(structure.get("length_m") or 0.0) @@ -328,11 +442,11 @@ def _structure_rows( "station_to": structure.get("end_m"), "spec_detail": _spec_detail(structure), # 품셈에 그 이름의 공종이 없어 여러 공종을 묶는 자리 — 빈 코드와 구별한다. - "composite_parts": (composite or {}).get("parts"), + "composite_parts": parts, # 철근이 있나 없나로 자동 판정 — 사람이 고르는 값이 아니다. "structure_kind": kind, - # ⚠ 아직 일위대가가 안 선 공종 — 지금 세우면 절반짜리가 된다. - "composite_not_ready": (composite or {}).get("not_ready"), + # ⚠ 물량을 못 채운 조각 — 0 으로 적지 않고 사유와 함께 드러낸다. + "composite_not_ready": parts_missing or None, "in_bill": True, "in_bill_reason": (composite or {}).get("why", ""), "origin": ORIGIN_STRUCTURE, diff --git a/B08_Quantity/B08_Quantity_Engine_UnitQuantity.py b/B08_Quantity/B08_Quantity_Engine_UnitQuantity.py index 8e7ea4a1..e0fc9591 100644 --- a/B08_Quantity/B08_Quantity_Engine_UnitQuantity.py +++ b/B08_Quantity/B08_Quantity_Engine_UnitQuantity.py @@ -127,6 +127,9 @@ class StructureQuantity: # 측점 — 내역 줄에 「어디부터 어디까지」를 적으려면 여기서 따라가야 한다(B09 인계). start_m: float | None = None end_m: float | None = None + # 저장된 제원 — **형식(반중력식…)처럼 뒤 단계가 봐야 하는 값**이 여기 있다. + # 치수를 다시 쓰라는 뜻이 아니라 **읽으라고** 실어 나른다(치수 정본은 여전히 하나). + options: dict[str, Any] = field(default_factory=dict) components: list[Component] = field(default_factory=list) notes: list[str] = field(default_factory=list) @@ -353,6 +356,7 @@ def expand( height_m=height, start_m=start if structure.get("start_m") is not None else None, end_m=end if structure.get("end_m") is not None else None, + options=dict(options), ) expander = EXPANDERS.get(type_id) if expander is None: @@ -420,6 +424,8 @@ def build_table( "height_m": item.height_m, "start_m": item.start_m, "end_m": item.end_m, + # 저장된 제원 — 형식(반중력식…)처럼 **뒤 단계가 읽어야 하는** 값이 여기 있다. + "options": item.options, "notes": item.notes, "components": [ { diff --git a/B08_Quantity/B08_Quantity_Router_Material.py b/B08_Quantity/B08_Quantity_Router_Material.py index 53c2b928..9d347c76 100644 --- a/B08_Quantity/B08_Quantity_Router_Material.py +++ b/B08_Quantity/B08_Quantity_Router_Material.py @@ -100,10 +100,22 @@ async def get_material_summary(project_id: UUID) -> JSONResponse: unit_table, supply_map=settings.get("material_supply") or {}, ) + # 묶음으로 서는 구조물의 조각을 화면에도 보인다 — 코드만으로는 사람이 검증 못 한다. + handoff = build_handoff(unit_quantity_table=unit_table) + composite = [ + { + "name": row["name"], + "parts": row["composite_parts"], + "not_ready": row.get("composite_not_ready"), + } + for row in handoff["work_items"] + if row.get("composite_parts") + ] return JSONResponse( content={ "unit_quantity": unit_table, "material": material_table, + "composite": composite, "skipped_structures": skipped, "structure_count": len(structures), } diff --git a/B08_Quantity/B08_Quantity_UI_MaterialGrid.ts b/B08_Quantity/B08_Quantity_UI_MaterialGrid.ts index 3da8cfa0..16872f43 100644 --- a/B08_Quantity/B08_Quantity_UI_MaterialGrid.ts +++ b/B08_Quantity/B08_Quantity_UI_MaterialGrid.ts @@ -61,6 +61,20 @@ export interface UnitQuantityStructure { }[]; } +/** 묶음으로 서는 구조물의 조각. 품셈에 그 이름의 공종이 없어 여러 공종으로 나뉜다. */ +export interface CompositePart { + code: string | null; + name?: string; + unit?: string; + quantity: number | null; + basis_kind?: string | string[] | null; + /** 철근 갈래(간단/보통/복잡/매우복잡) — 품셈 원문이 정한다. */ + kind?: string | null; + kind_basis?: string; + not_ready?: boolean; + why?: string; +} + export interface MaterialResponse { unit_quantity: { structures: UnitQuantityStructure[]; @@ -72,6 +86,12 @@ export interface MaterialResponse { material: MaterialTable; skipped_structures: string[]; structure_count: number; + /** 인계에서 온 묶음 조각 — 화면이 「무엇으로 나뉘어 서는지」를 보인다. */ + composite?: { + name: string; + parts: CompositePart[]; + not_ready?: string[] | null; + }[]; } /** 거푸집·동바리 안내에 쓰는 값. */ @@ -321,6 +341,25 @@ export function renderUnitQuantityGrid(response: MaterialResponse): HTMLElement wrap.append(line); } + // ⚠ 품셈에 그 이름의 공종이 없어 **여러 공종으로 나뉘어 서는** 구조물 — 무엇으로 + // 나뉘는지와 각 조각의 물량·갈래를 보인다. 코드만으로는 사람이 검증할 수 없다. + for (const group of response.composite ?? []) { + const box = document.createElement("p"); + box.className = "b08-quantity__notice"; + const parts = group.parts.map((part) => { + const kind = part.kind ? `#${part.kind}` : ""; + const amount = + part.quantity === null || part.quantity === undefined + ? "-" + : `${num(part.quantity, 3)}${part.unit ?? ""}`; + return `${part.name ?? part.code}${kind} ${amount}${part.not_ready ? " ⚠" : ""}`; + }); + box.textContent = `${group.name}: 묶음 공종 — ${parts.join(" · ")}`; + wrap.append(box); + const blocked = warning("⚠ 물량을 못 채운 조각", group.not_ready ?? []); + if (blocked) wrap.append(blocked); + } + if (!unit.structures.length) { const empty = document.createElement("p"); empty.className = "b08-quantity__message"; diff --git a/resources/data_rebar/rebar_complexity_2026-01-01.json b/resources/data_rebar/rebar_complexity_2026-01-01.json new file mode 100644 index 00000000..acdced1a --- /dev/null +++ b/resources/data_rebar/rebar_complexity_2026-01-01.json @@ -0,0 +1,70 @@ +{ + "schema_version": "1.0", + "dataset_id": "rebar_complexity", + "effective_date": "2026-01-01", + "note": "철근 가공·조립 갈래(간단/보통/복잡/매우복잡) — **품셈 12-3 [주]① 원문**이 구조물을 예시로 갈라 둔다. 사람이 고르는 값이 아니라 법으로 정해지는 값이다(거푸집 사용횟수 1-7-1 과 같은 자리).", + "source": { + "doc": "산림사업 표준품셈 12-3 철근 현장가공 및 조립 [주] ①", + "table_id": "F0335", + "quote": "간단한 것이란 측구, 간단한 기초 및 중력식 옹벽 등을 말하며, 보통의 것이란 수문, 반중력식 옹벽 및 교대 등을 말하고, 복잡한 것이란 교량의 슬래브, 암거, 우물통 부벽식 옹벽 등을 말하며, 매우 복잡한 것이란 구주식(기둥형) 교대, 교각, 지하철, 터널" + }, + "policy": { + "auto_decided": true, + "unlisted_is_flagged": true, + "note": "원문 예시에 걸리는 것만 정한다. 안 걸리면 「갈래 미확보」로 드러내고 임의로 고르지 않는다." + }, + "classes": [ + { "key": "간단", "examples": ["측구", "간단한 기초", "중력식 옹벽"] }, + { "key": "보통", "examples": ["수문", "반중력식 옹벽", "교대"] }, + { "key": "복잡", "examples": ["교량 슬래브", "암거", "우물통", "부벽식 옹벽"] }, + { "key": "매우복잡", "examples": ["구주식(기둥형) 교대", "교각", "지하철", "터널"] } + ], + "form_map": [ + { + "type_id": "retaining_wall", + "form": "중력식", + "class": "간단", + "matched": "중력식 옹벽" + }, + { + "type_id": "retaining_wall", + "form": "반중력식", + "class": "보통", + "matched": "반중력식 옹벽" + }, + { + "type_id": "retaining_wall", + "form": "부벽식", + "class": "복잡", + "matched": "부벽식 옹벽" + }, + { + "type_id": "retaining_wall", + "form": "캔틸레버식", + "class": null, + "why": "원문 [주]① 예시에 캔틸레버식 옹벽이 없음 — 임의로 고르지 않고 미확보로 드러냄" + }, + { + "type_id": "box_culvert", + "class": "복잡", + "matched": "암거" + }, + { + "type_id": "pipe_inlet_basin", + "class": "간단", + "matched": "간단한 기초", + "note": "관보호공 집수정 — 원문의 「간단한 기초」에 해당. ⚠ 벽체까지 간단으로 볼지는 확인 필요" + } + ], + "price_hint_krw_per_ton": { + "note": "⚠ **표시 전용.** 갈래를 자동으로 정하더라도 화면에 갈래 이름과 차이를 보여야 사람이 검증할 수 있다. B08 의 어떤 계산에도 안 들어간다(금액은 B09 몫).", + "computed_by": "B09", + "computed_on": "2026-09-07", + "values": { + "간단": 919146.7, + "보통": 1032497.4, + "복잡": 1143569.7, + "매우복잡": 1278375.3 + } + } +} diff --git a/resources/data_work_item_mapping/work_item_mapping_2026-01-01.json b/resources/data_work_item_mapping/work_item_mapping_2026-01-01.json index f00b08f0..66632217 100644 --- a/resources/data_work_item_mapping/work_item_mapping_2026-01-01.json +++ b/resources/data_work_item_mapping/work_item_mapping_2026-01-01.json @@ -142,12 +142,19 @@ "items": [ { "group": "지장목제거", - "candidates": ["FP-04-01 수확베기", "FP-04-02 단목베기", "FP-04-03 위험목 베기"], + "candidates": [ + "FP-04-01 수확베기", + "FP-04-02 단목베기", + "FP-04-03 위험목 베기" + ], "why": "품셈 4장은 벌목을 목적별로 가르는데 임도 지장목이 어느 쪽인지 원본이 말하지 않음" }, { "group": "흙깎기/측구터파기 암", - "candidates": ["FP-09-04 암절취(리핑)", "FP-09-05 발파암"], + "candidates": [ + "FP-09-04 암절취(리핑)", + "FP-09-05 발파암" + ], "why": "설계자가 넣는 암 갈래 이름(풍화암·연암·보통암·경암)이 리핑이냐 발파냐를 말하지 않음. 갈래마다 시공법을 지정하는 칸이 필요함" } ] @@ -158,18 +165,62 @@ { "type_id": "retaining_wall", "parts": [ - "FP-12-01-01#철근구조물", - "FP-12-04 합판거푸집", - "FP-12-03 철근 현장가공 및 조림", - "FP-12-25 기초잡석" + { + "code": "FP-12-01-01", + "name": "콘크리트 타설", + "unit": "㎥", + "from_components": [ + "콘크리트", + "버림콘크리트" + ], + "kind_suffix": "concrete_placing" + }, + { + "code": "FP-12-04", + "name": "합판거푸집", + "unit": "㎡", + "from_components": [ + "합판거푸집" + ] + }, + { + "code": "FP-12-38", + "name": "유로폼", + "unit": "㎡", + "from_components": [ + "유로폼" + ] + }, + { + "code": "FP-12-03", + "name": "철근 현장가공 및 조립", + "unit": "ton", + "from_components": [ + "이형철근 D13", + "이형철근 D16" + ], + "unit_from": "kg", + "kind_suffix": "rebar_complexity" + }, + { + "code": "FP-12-25", + "name": "기초잡석", + "unit": "㎥", + "from_components": [], + "not_ready": true, + "why": "관측 원단위에 기초잡석 물량이 없음 — 울진 라이브러리 반중력식 H=2.0 항목에 그 줄이 없다" + } ], "why": "품셈 12장에 「옹벽」 공종이 없음. 실무 내역은 「반중력식옹벽 H=2.0」 한 줄이고 그 일위대가가 위 공종을 묶음.", "needs": "일위대가 조립은 B09 몫 — B08 은 물량과 묶음만 넘김", "placing_note": "타설 코드는 프로젝트 설정의 타설 방식으로 갈림(기본 레디믹스트). 철근구조물 판정은 원단위의 D13·D16 에서 자동으로 나옴.", - "not_ready": ["FP-12-03", "FP-12-25"], - "not_ready_why": "B09 일위대가가 아직 안 섬 — 지금 세우면 절반짜리가 됨(2026-09-07 조율 창)" + "parts_note": "조각마다 **어느 성분에서 나오는지**(`from_components`)를 적는다. 이름을 바꾸면 물량이 조용히 0 이 되므로 원단위 성분 이름과 정확히 같아야 하고, 못 찾으면 드러낸다. `unit_from` 이 있으면 그 단위에서 목표 단위로 환산한다 — **철근은 ㎏ → ton (÷1000)**. ⚠ 단위를 안 맞추면 1000배 틀린다." } - ] + ], + "unit_conversion": { + "note": "조각 단위 환산. 단가의 단위(원/ton)와 원단위의 단위(㎏)가 달라 반드시 맞춰야 한다.", + "kg_to_ton": 0.001 + } }, "concrete_placing": { "note": "콘크리트 타설은 **타설 방식 × 구조물 종류**로 갈린다. 방식은 설계 판단이라 프로젝트 설정(`quantity.concrete_placing_method`)이 고르고, 종류는 **원단위에 철근이 있나 없나로 자동 판정**한다 — 사람이 고르는 값이 아니다(2026-09-07 3자 확정).", @@ -180,7 +231,11 @@ }, "default_method": "ready_mixed", "default_is_provisional": true, - "structure_kinds": ["무근구조물", "철근구조물", "소형구조물"], + "structure_kinds": [ + "무근구조물", + "철근구조물", + "소형구조물" + ], "kind_rule": "원단위 성분에 철근(이형철근·원형철근)이 있으면 철근구조물, 없으면 무근구조물. 소형구조물 판정 기준은 미확보.", "price_hint_krw_per_m3": { "note": "⚠ **표시 전용.** 사용자가 타설 방식을 고를 때 「정하면 얼마나 달라지는지」를 보이려고 둔 값이며 B08 의 어떤 계산에도 들어가지 않는다(금액은 B09 몫 — 8-2 경계). 값은 B09 가 2026-09-07 에 낸 철근구조물 기준 단가이고, 요율·노임이 바뀌면 어긋난다 — 화면이 「참고」임을 함께 적는다.", From 8b0f7e8baf3cd334500c3e548b58882a3c2a74b5 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Tue, 8 Sep 2026 01:41:47 +0900 Subject: [PATCH 4/5] =?UTF-8?q?feat(B08):=20=EC=9C=A0=EB=A1=9C=ED=8F=BC=20?= =?UTF-8?q?=EA=B0=88=EB=9E=98=20=EC=9B=90=EB=AC=B8=20=EC=9E=90=EB=8F=99=20?= =?UTF-8?q?=ED=8C=90=EC=A0=95=20+=20=EB=AA=BB=20=EC=B1=84=EC=9A=B4=20?= =?UTF-8?q?=EC=A1=B0=EA=B0=81=20=EC=82=AC=EC=9C=A0=EB=A5=BC=20=EA=B5=AC?= =?UTF-8?q?=EC=A1=B0=EB=A1=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 「원문이 이미 정해 둠」 **네 번째** — 품셈 12-38-3 [주]④ 「보통: 측구, 수로, 옹벽, 일반적인 벽체, 박스」. 앞선 셋(거푸집 사용횟수 1-7-1 · 철근 갈래 12-3 [주]① · 밑수는 표 위 본문)과 같은 자리라 사람이 고를 칸을 안 만듦. 옹벽 → `FP-12-38#보통`, 근거 문구를 조각에 함께 실음. - ⚠ 12-38-1 「사용횟수」는 1-7-1 과 **다른 자리**임. 그쪽은 유로폼(강재)의 잔존율(12회 25% · 25회 10%)로 임대료·손료 산정용이고, 1-7-1 은 소모성 거푸집 전용 횟수(옹벽 3회)임. 이름이 같아 하나로 이으면 조용히 틀림 — 데이터에 그 구분을 적고 시험으로 못 박음. - 유로폼 자재는 12-38-2 가 10㎡당 패널 0.89매로 냄. B08 은 **면적(㎡)** 으로 보내고 매수 환산은 밑수를 아는 B09 가 함 — B08 이 환산하면 밑수가 두 벌. `composite_not_ready` 를 `{code, reason}` 구조로 바꿈. 받는 쪽이 「단가 없음」과 「물량 없음」을 갈라야 함(기초잡석이 후자). 원단위 자체가 없으면 조각을 늘어놓지 않고 한 줄로 말함 — 같은 사유가 조각마다 다섯 번 반복되면 진짜 사유가 묻힘(화면에서 실제로 그렇게 보였음). 시험 추가 — 같은 공종코드가 지반만 달리해 여러 줄 오는 표본(도자 토사·리핑암). 실물에서 잡힌 모양이라 고정 자료에도 넣음. 검증 — 인계 59건 통과, 전체 600 passed, tsc 오류 0. 화면 그리기는 실제 모듈을 그대로 돌려 확인(사용자 프로젝트·DB 무접촉). Co-Authored-By: Claude Opus 5 (1M context) --- B08_Quantity/B08_Quantity_Engine_Formwork.py | 3 + B08_Quantity/B08_Quantity_Engine_Handoff.py | 39 +++++- B08_Quantity/B08_Quantity_Router_Material.py | 3 +- B08_Quantity/B08_Quantity_UI_MaterialGrid.ts | 16 ++- .../formwork_reuse_2026-01-01.json | 112 ++++++++++++++++-- .../work_item_mapping_2026-01-01.json | 3 +- 6 files changed, 163 insertions(+), 13 deletions(-) diff --git a/B08_Quantity/B08_Quantity_Engine_Formwork.py b/B08_Quantity/B08_Quantity_Engine_Formwork.py index d37945dc..65c80556 100644 --- a/B08_Quantity/B08_Quantity_Engine_Formwork.py +++ b/B08_Quantity/B08_Quantity_Engine_Formwork.py @@ -51,6 +51,8 @@ class FormworkTable: reuse_by_class: list[dict[str, Any]] = field(default_factory=list) reuse_ratio_pct: dict[str, Any] = field(default_factory=dict) shoring: dict[str, Any] = field(default_factory=dict) + #: 유로폼 설치·해체 유형 — 품셈 12-38-3 [주]④ 가 시설 예시로 갈라 둔 것. + euroform_type: dict[str, Any] = field(default_factory=dict) def for_type(self, type_id: str) -> dict[str, Any] | None: for row in self.type_map: @@ -72,6 +74,7 @@ def load_formwork_table(path: Path | None = None) -> FormworkTable: reuse_by_class=list(payload.get("reuse_by_class") or []), reuse_ratio_pct=payload.get("reuse_ratio_pct") or {}, shoring=payload.get("shoring") or {}, + euroform_type=payload.get("euroform_type") or {}, ) diff --git a/B08_Quantity/B08_Quantity_Engine_Handoff.py b/B08_Quantity/B08_Quantity_Engine_Handoff.py index 522101c6..af1dff06 100644 --- a/B08_Quantity/B08_Quantity_Engine_Handoff.py +++ b/B08_Quantity/B08_Quantity_Engine_Handoff.py @@ -165,6 +165,12 @@ def composite_quantities( ⚠ **단위를 반드시 맞춘다.** 철근 단가는 `원/ton` 인데 원단위는 `㎏` 이다. 안 맞추면 **1000배 틀린다** — 밑수에서 겪은 것과 같은 자리다. """ + # ⚠ 원단위 자체가 없으면 조각을 늘어놓지 않는다 — 같은 사유가 다섯 번 반복되면 + # **진짜 사유가 묻힌다**(화면에서 실제로 그렇게 보였다). 한 줄로 말한다. + if not (structure.get("components") or []): + note = "; ".join(structure.get("notes") or []) or "구조물 원단위가 없음" + return [], [{"code": None, "reason": note}] + amounts: dict[str, tuple[float, str]] = {} for component in structure.get("components") or []: name = str(component.get("name") or "").strip() @@ -197,6 +203,16 @@ def composite_quantities( "basis_kind": next(iter(kinds)) if len(kinds) == 1 else (sorted(kinds) or None), "from_components": sources, } + if suffix == "euroform_type": + kind, why = euroform_type(str(structure.get("type_id") or "")) + entry["kind"] = kind + entry["kind_basis"] = why + if kind: + entry["code"] = f"{spec.get('code')}#{kind}" + else: + entry["not_ready"] = True + entry["why"] = why + missing.append({"code": spec.get("code"), "reason": why}) if suffix == "rebar_complexity": # 갈래는 원문이 정한다 — 화면·인계에 이름과 근거를 함께 실어 사람이 검증하게 한다. complexity, why = rebar_complexity( @@ -209,11 +225,12 @@ def composite_quantities( else: entry["not_ready"] = True entry["why"] = why - missing.append(f"{spec.get('name')}: {why}") + missing.append({"code": spec.get("code"), "reason": why}) if spec.get("not_ready") or not found: entry["not_ready"] = True entry["why"] = str(spec.get("why") or "원단위에 해당 성분이 없음") - missing.append(f"{spec.get('name') or spec.get('code')}: {entry['why']}") + # ⚠ 「단가 없음」과 「물량 없음」을 받는 쪽이 갈라야 하므로 **구조로** 낸다. + missing.append({"code": spec.get("code"), "reason": entry["why"]}) parts.append(entry) return parts, missing @@ -279,6 +296,24 @@ def rebar_complexity( return None, f"품셈 12-3 [주]① 예시에 없는 구조({type_id} {form}) — 임의로 고르지 않음" +def euroform_type(type_id: str, table: dict[str, Any] | None = None) -> tuple[str | None, str]: + """유로폼 설치·해체 유형 — **품셈 12-38-3 [주]④ 원문**이 시설 예시로 갈라 둔다. + + 「보통: 측구, 수로, **옹벽**, 일반적인 벽체, 박스」. 거푸집 사용횟수(1-7-1)·철근 갈래 + (12-3 [주]①)에 이어 **네 번째** 같은 자리다 — 미결로 올리기 전에 원문부터 뒤진다. + + ⚠ 12-38-1 「사용횟수」와 헷갈리지 말 것 — 그쪽은 유로폼(강재)의 **잔존율**이고 + 1-7-1 의 소모성 거푸집 전용 횟수와도 다른 자리다. + """ + from B08_Quantity.B08_Quantity_Engine_Formwork import load_formwork_table + + found = table if table is not None else load_formwork_table().euroform_type + for row in (found or {}).get("type_map") or []: + if row.get("type_id") == type_id and row.get("class"): + return str(row["class"]), f"품셈 12-38-3 [주]④ 「{row.get('matched')}」" + return None, f"품셈 12-38-3 [주]④ 예시에 없는 시설({type_id}) — 임의로 고르지 않음" + + def _spec_detail(structure: dict[str, Any]) -> str: """규격 표기 — 저장된 제원에서 만든다. 없는 값은 적지 않는다.""" parts: list[str] = [] diff --git a/B08_Quantity/B08_Quantity_Router_Material.py b/B08_Quantity/B08_Quantity_Router_Material.py index 9d347c76..5498ec10 100644 --- a/B08_Quantity/B08_Quantity_Router_Material.py +++ b/B08_Quantity/B08_Quantity_Router_Material.py @@ -109,7 +109,8 @@ async def get_material_summary(project_id: UUID) -> JSONResponse: "not_ready": row.get("composite_not_ready"), } for row in handoff["work_items"] - if row.get("composite_parts") + # 조각이 없어도(원단위 자체가 없어 못 세운 경우) 사유는 보여야 한다. + if row.get("composite_parts") or row.get("composite_not_ready") ] return JSONResponse( content={ diff --git a/B08_Quantity/B08_Quantity_UI_MaterialGrid.ts b/B08_Quantity/B08_Quantity_UI_MaterialGrid.ts index 16872f43..98eb43ff 100644 --- a/B08_Quantity/B08_Quantity_UI_MaterialGrid.ts +++ b/B08_Quantity/B08_Quantity_UI_MaterialGrid.ts @@ -90,7 +90,8 @@ export interface MaterialResponse { composite?: { name: string; parts: CompositePart[]; - not_ready?: string[] | null; + /** 못 채운 조각 — 「단가 없음」과 「물량 없음」을 가르려고 사유를 구조로 받는다. */ + not_ready?: { code: string | null; reason: string }[] | null; }[]; } @@ -135,6 +136,11 @@ function headRow(labels: string[]): HTMLTableSectionElement { return head; } +/** 못 채운 조각의 사유를 사람이 읽는 줄로. 코드가 있으면 앞에 붙인다. */ +function reasons(items?: { code: string | null; reason: string }[] | null): string[] { + return (items ?? []).map((item) => (item.code ? `${item.code} ${item.reason}` : item.reason)); +} + /** 못 정한 값 안내 — 목록이 있을 때만 뜬다. 매번 뜨면 잡음이 된다. */ function warning(title: string, items: string[]): HTMLElement | null { if (!items.length) return null; @@ -344,6 +350,12 @@ export function renderUnitQuantityGrid(response: MaterialResponse): HTMLElement // ⚠ 품셈에 그 이름의 공종이 없어 **여러 공종으로 나뉘어 서는** 구조물 — 무엇으로 // 나뉘는지와 각 조각의 물량·갈래를 보인다. 코드만으로는 사람이 검증할 수 없다. for (const group of response.composite ?? []) { + // 조각이 하나도 없으면 「묶음 공종 — 」 빈 줄이 남는다. 사유만 보이는 것이 낫다. + if (!group.parts?.length) { + const blocked = warning("⚠ 묶음을 못 세움", reasons(group.not_ready)); + if (blocked) wrap.append(blocked); + continue; + } const box = document.createElement("p"); box.className = "b08-quantity__notice"; const parts = group.parts.map((part) => { @@ -356,7 +368,7 @@ export function renderUnitQuantityGrid(response: MaterialResponse): HTMLElement }); box.textContent = `${group.name}: 묶음 공종 — ${parts.join(" · ")}`; wrap.append(box); - const blocked = warning("⚠ 물량을 못 채운 조각", group.not_ready ?? []); + const blocked = warning("⚠ 물량을 못 채운 조각", reasons(group.not_ready)); if (blocked) wrap.append(blocked); } diff --git a/resources/data_formwork/formwork_reuse_2026-01-01.json b/resources/data_formwork/formwork_reuse_2026-01-01.json index 0c426ae5..a8cc0429 100644 --- a/resources/data_formwork/formwork_reuse_2026-01-01.json +++ b/resources/data_formwork/formwork_reuse_2026-01-01.json @@ -17,22 +17,45 @@ { "reuse_count": 2, "class": "복잡한 구조", - "examples": ["T형보", "난간", "복잡한 교각", "교대", "수문관 본체"] + "examples": [ + "T형보", + "난간", + "복잡한 교각", + "교대", + "수문관 본체" + ] }, { "reuse_count": 3, "class": "약간 복잡한 구조", - "examples": ["슬래브", "교대", "교각", "옹벽", "파라펫트", "날개벽"] + "examples": [ + "슬래브", + "교대", + "교각", + "옹벽", + "파라펫트", + "날개벽" + ] }, { "reuse_count": 4, "class": "비교적 간단한 구조", - "examples": ["측구", "수로", "확대기초", "우물통"] + "examples": [ + "측구", + "수로", + "확대기초", + "우물통" + ] }, { "reuse_count": 6, "class": "극히 간단한 구조", - "examples": ["수문 기초", "관의 기초", "호안 기초", "보호공 기초"] + "examples": [ + "수문 기초", + "관의 기초", + "호안 기초", + "보호공 기초" + ] } ], "type_map": [ @@ -57,12 +80,87 @@ "reuse_ratio_pct": { "note": "품셈 12-4 「사용횟수별 기준수량에 대한 비율(%)」. **B09 일위대가가 쓰는 값**이며 B08 은 참고로만 싣는다 — 여기서 곱하면 이중계상.", "table_id": "F0336", - "plywood": { "1": 100.0, "2": 57.0, "3": 46.1, "4": 40.1, "5": 37.1, "6": 34.7 }, - "timber": { "1": 100.0, "2": 60.0, "3": 47.1, "4": 40.0, "5": 34.2, "6": 32.0 } + "plywood": { + "1": 100.0, + "2": 57.0, + "3": 46.1, + "4": 40.1, + "5": 37.1, + "6": 34.7 + }, + "timber": { + "1": 100.0, + "2": 60.0, + "3": 47.1, + "4": 40.0, + "5": 34.2, + "6": 32.0 + } }, "shoring": { "note": "강관동바리(품셈 12-20)는 **슬래브를 떠받칠 때** 필요하다. 지금 서는 구조물(옹벽·집수정)은 벽체 거푸집만이라 대상이 아니다.", - "targets_pending": ["box_culvert", "ford_bridge"], + "targets_pending": [ + "box_culvert", + "ford_bridge" + ], "why": "그 둘은 원단위·치수가 미확보라 슬래브 면적 자체가 안 나온다 — 동바리도 함께 미확보" + }, + "euroform_type": { + "note": "유로폼 설치·해체 유형(간단/보통/복잡) — **품셈 12-38-3 [주]④ 원문**이 시설 예시로 갈라 둔다. 거푸집 사용횟수(1-7-1)·철근 갈래(12-3 [주]①)와 같은 자리로, 사람이 고르는 값이 아니다.", + "source": { + "doc": "산림사업 표준품셈 12-38-3 설치 및 해체 [주]④", + "table_id": "F0396", + "quote": "복잡 — 토목: 교대, 날개벽 등 복잡하고 보강이 많은 구조 / 보통 — 측구, 수로, 옹벽, 일반적인 벽체, 박스 등 / 간단 — 수문 또는 관의 기초, 건축 매트기초 등 간단한 구조" + }, + "classes": [ + { + "key": "복잡", + "examples": [ + "교대", + "날개벽" + ], + "daily_area_m2": 25 + }, + { + "key": "보통", + "examples": [ + "측구", + "수로", + "옹벽", + "일반적인 벽체", + "박스" + ], + "daily_area_m2": 35 + }, + { + "key": "간단", + "examples": [ + "수문 기초", + "관의 기초", + "매트기초" + ], + "daily_area_m2": 40 + } + ], + "type_map": [ + { + "type_id": "retaining_wall", + "class": "보통", + "matched": "옹벽" + }, + { + "type_id": "box_culvert", + "class": "보통", + "matched": "박스" + }, + { + "type_id": "pipe_inlet_basin", + "class": "간단", + "matched": "관의 기초", + "note": "⚠ 집수정 벽체까지 간단으로 볼지는 확인 필요 — 거푸집 사용횟수와 같은 물음" + } + ], + "reuse_note": "⚠ 12-38-1 「사용횟수」는 **1-7-1 과 다른 자리다.** 1-7-1 은 합판거푸집처럼 **소모성 거푸집을 몇 번 쓰나**(옹벽 3회)이고, 12-38-1 은 유로폼(강재)의 **잔존율 기준**(12회 사용 잔존율 25 % · 25회 사용 잔존율 10 %)으로 **임대료·손료 산정용**이다. 하나로 잇지 않는다.", + "material_unit_note": "유로폼 자재는 12-38-2 가 **10㎡당 패널 0.89매**로 낸다. B08 은 **접촉 면적(㎡)** 으로 보내고 매수 환산은 그 표의 밑수(10㎡)를 아는 B09 가 한다 — B08 이 환산하면 밑수를 두 벌로 들게 된다." } } diff --git a/resources/data_work_item_mapping/work_item_mapping_2026-01-01.json b/resources/data_work_item_mapping/work_item_mapping_2026-01-01.json index 66632217..6d1ca677 100644 --- a/resources/data_work_item_mapping/work_item_mapping_2026-01-01.json +++ b/resources/data_work_item_mapping/work_item_mapping_2026-01-01.json @@ -189,7 +189,8 @@ "unit": "㎡", "from_components": [ "유로폼" - ] + ], + "kind_suffix": "euroform_type" }, { "code": "FP-12-03", From bc4b6837e6086d3f66afc4831eefd3299b521d46 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Tue, 8 Sep 2026 01:47:33 +0900 Subject: [PATCH 5/5] =?UTF-8?q?fix(B08):=20=E3=80=8C=EB=8B=A8=20=EC=9C=84?= =?UTF-8?q?=E3=80=8D=20=ED=91=9C=EC=A7=80=EA=B0=80=20=EA=B3=B5=EC=A2=85=20?= =?UTF-8?q?41=EA=B1=B4=EC=9D=84=20=EC=B0=B8=EC=A1=B0=EB=A1=9C=20=EB=B2=84?= =?UTF-8?q?=EB=A6=AC=EB=8D=98=20=EA=B2=83=20+=20=EC=9E=91=EC=97=85?= =?UTF-8?q?=EC=A1=B0=20=ED=91=9C=20=EA=B9=83=EB=B0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ⚠ 서브 창 제보(유로폼 12-38-3 이 참조로 찍혀 읽히지도 않던 것)를 파고 들어가 더 넓은 결함을 찾음. `REFERENCE_MARKS` 의 `"단 위"` 하나로 **41건이 참조로 버려지고 있었고**, 그 안에 **돌쌓기(장비) 13-4-5·13-4-2**(우리 매핑이 실제로 쓰는 코드) · 12-2 표면 마무리 · 9-19-1 면고르기 · 9-20 뿌리다듬기 · 13-8 막돌쌓기 · 11-2 규준틀 같은 명백한 공종이 섞여 있었음. - 원래 겨냥은 품셈 1-2-2 「단위 표준」 표였는데 **1장은 chapter 규칙이 이미 거르므로** 그 표지는 넓기만 했음. 「단위 열이 있다」는 소요량표의 흔한 모양이지 참조표의 표지가 아님. 제거. - reference 98 → 58, requirement 246 → 287. 돌쌓기(장비) 둘이 공종으로 섬. 작업조 표 깃발(`crew_table`) 16건 — 「형틀목공 4인 + 보통인부 1인 / 시공량 35㎡」 의 「4」는 소요량이 아니라 **인원**이라 그냥 읽으면 35배 부픔. 값을 바꾸지 않고 표시만 함(`expression_cells`·`partial_ratio` 와 같은 취급). 평떼 시비도 잡힘 — 서브가 실물에서 트럭 한 대를 빠뜨린 그 표. 유로폼 조각에 `incomplete_note` — 물량은 섰으나 **자재 몫(패널 0.89매/10㎡ · 부자재 24/52/79 % · 소모자재 5 %)이 자재 단가가 없어 안 붙음**. 「못 채움」과 달리 값이 있으므로 「부분」으로 갈라 보임 — 부분 성공이 완전 실패보다 위험함. 검증 — 품셈 39건 통과, 전체 605 passed, tsc 오류 0. Co-Authored-By: Claude Opus 5 (1M context) --- .../B08_Quantity_Build_WorkItemMaster.py | 27 +- B08_Quantity/B08_Quantity_Engine_Handoff.py | 4 + B08_Quantity/B08_Quantity_UI_MaterialGrid.ts | 11 +- .../work_item_mapping_2026-01-01.json | 3 +- .../data_work_item_master/_manifest.json | 10 +- .../basis_missing_2026-01-01.json | 96 +++ .../work_item_master_2026-01-01.json | 622 +++++++++++++++--- 7 files changed, 682 insertions(+), 91 deletions(-) diff --git a/B08_Quantity/B08_Quantity_Build_WorkItemMaster.py b/B08_Quantity/B08_Quantity_Build_WorkItemMaster.py index edf5ba37..44611703 100644 --- a/B08_Quantity/B08_Quantity_Build_WorkItemMaster.py +++ b/B08_Quantity/B08_Quantity_Build_WorkItemMaster.py @@ -72,7 +72,13 @@ COEFFICIENT_MARKS = ("손료계수", "시간당손료계수", "기계손료") # 기계 시공능력 공식(Q = 3600·qo·K·f·E / Cm)의 파라미터 기호. 이 기호만 있는 표는 계수표다. COEFFICIENT_ROW_KEYS = {"K", "f", "E", "Cm", "㎝(sec)", "q", "qo", "Q", "V", "L"} # 품셈 1장(적용기준)·할증·공제·단위 표준 — 공종이 아니라 **기준표**다. -REFERENCE_MARKS = ("할증률", "할인", "공제율", "적재량", "단 위", "지위") +# ⚠ **「단 위」를 뺐다** (2026-09-07). 원래 겨냥은 품셈 1-2-2 「단위 표준」 표였는데, +# **1장은 chapter 규칙이 이미 참조로 거르므로** 이 표지는 넓기만 했다. 그 탓에 +# **41건이 「헤더 '단 위'」 하나로 참조가 되어 버려지고 있었고**, 그 안에 +# **돌쌓기(장비) 13-4-5·13-4-2**(우리 매핑이 실제로 쓰는 코드) · 12-2 표면 마무리 · +# 9-19-1 면고르기 · 9-20 뿌리다듬기 · 13-8 막돌쌓기 같은 **명백한 공종**이 섞여 있었다. +# 「단위 열이 있다」는 소요량표의 흔한 모양이지 참조표의 표지가 아니다. +REFERENCE_MARKS = ("할증률", "할인", "공제율", "적재량", "지위") # 값 대신 「어디를 따르라」고만 적은 표. 품이 아니므로 공종으로 세우지 않는다. REFERENCE_CELL_MARKS = ("별도계상", "구역화물", "적용한다", "따른다", "준용") # 직종이 값의 주인인 표 = 소요량형. `보통인부(인)`·`콘크리트공(인)` 처럼 `(인)` 이 붙는다. @@ -346,6 +352,23 @@ def expression_cells(table: dict[str, Any]) -> list[str]: return seen +# ⚠ **작업조 표** — 「형틀목공 4인 + 보통인부 1인 / 시공량 25·35·40㎡」처럼 +# **인원과 시공량**으로 적힌 표다. 그 「4」는 소요량이 아니라 **작업조 인원**이라 +# 행-자원으로 그냥 읽으면 **35배 부푼다**(유로폼 12-38-3 이 그 표다). +# ⚠ 값을 바꾸지 않고 **표시만** 한다 — 나누는 것은 받는 쪽 몫이다. +CREW_QUANTITY_MARKS = ("시공량", "작업량", "1일작업량") + + +def crew_table(table: dict[str, Any]) -> bool: + """작업조 + 시공량으로 적힌 표인가.""" + hay = " ".join(norm(h) for h in table.get("headers", [])) + body = " ".join(norm(c) for row in table.get("rows", []) for c in row) + squeezed = (hay + " " + body).replace(" ", "") + if not any(mark in squeezed for mark in CREW_QUANTITY_MARKS): + return False + return bool(OCCUPATION_RE.search(squeezed)) + + def resource_shares(table: dict[str, Any]) -> dict[str, float]: """`{인력: 10.0, 장비: 90.0}` — 딱지에 붙은 몫. 없으면 빈 칸.""" shares: dict[str, float] = {} @@ -455,6 +478,8 @@ def build() -> dict[str, Any]: "partial_ratio": partial, # ⚠ 값 자리에 식이 적힌 칸 — 그 성분은 숫자로 안 읽히므로 **금액을 만들면 안 된다**. "expression_cells": expression_cells(table), + # ⚠ 작업조 표 — 「4」가 소요량이 아니라 인원이다. 그냥 읽으면 35배 부푼다. + "crew_table": crew_table(table), # 공식 기호가 이 표에 직접 있는가 — 없으면 앞 표에서 물려받는 모양이다. "capacity_formula_here": capacity_formula_pending(table), "variant_key": variant_axis(table), diff --git a/B08_Quantity/B08_Quantity_Engine_Handoff.py b/B08_Quantity/B08_Quantity_Engine_Handoff.py index af1dff06..c37dd938 100644 --- a/B08_Quantity/B08_Quantity_Engine_Handoff.py +++ b/B08_Quantity/B08_Quantity_Engine_Handoff.py @@ -203,6 +203,10 @@ def composite_quantities( "basis_kind": next(iter(kinds)) if len(kinds) == 1 else (sorted(kinds) or None), "from_components": sources, } + if spec.get("incomplete_note"): + # ⚠ 물량은 섰으나 **일부 몫이 빠진** 조각 — 「못 채움」과 달리 값은 있다. + # 화면·인계 둘 다 그 사실을 알아야 「다 섰다」로 오해하지 않는다. + entry["incomplete_note"] = spec["incomplete_note"] if suffix == "euroform_type": kind, why = euroform_type(str(structure.get("type_id") or "")) entry["kind"] = kind diff --git a/B08_Quantity/B08_Quantity_UI_MaterialGrid.ts b/B08_Quantity/B08_Quantity_UI_MaterialGrid.ts index 98eb43ff..35c2db87 100644 --- a/B08_Quantity/B08_Quantity_UI_MaterialGrid.ts +++ b/B08_Quantity/B08_Quantity_UI_MaterialGrid.ts @@ -73,6 +73,8 @@ export interface CompositePart { kind_basis?: string; not_ready?: boolean; why?: string; + /** 물량은 섰으나 일부 몫이 빠진 조각 — 「다 섰다」로 오해하지 않게 함께 보인다. */ + incomplete_note?: string; } export interface MaterialResponse { @@ -364,12 +366,19 @@ export function renderUnitQuantityGrid(response: MaterialResponse): HTMLElement part.quantity === null || part.quantity === undefined ? "-" : `${num(part.quantity, 3)}${part.unit ?? ""}`; - return `${part.name ?? part.code}${kind} ${amount}${part.not_ready ? " ⚠" : ""}`; + const flag = part.not_ready ? " ⚠" : part.incomplete_note ? " ⚠부분" : ""; + return `${part.name ?? part.code}${kind} ${amount}${flag}`; }); box.textContent = `${group.name}: 묶음 공종 — ${parts.join(" · ")}`; wrap.append(box); const blocked = warning("⚠ 물량을 못 채운 조각", reasons(group.not_ready)); if (blocked) wrap.append(blocked); + // ⚠ 값이 있는데 일부만 선 조각 — **부분 성공이 완전 실패보다 위험하다**. + const partial = warning( + "⚠ 일부 몫이 빠진 조각", + group.parts.filter((p) => p.incomplete_note).map((p) => `${p.name}: ${p.incomplete_note}`), + ); + if (partial) wrap.append(partial); } if (!unit.structures.length) { diff --git a/resources/data_work_item_mapping/work_item_mapping_2026-01-01.json b/resources/data_work_item_mapping/work_item_mapping_2026-01-01.json index 6d1ca677..a9f1bedb 100644 --- a/resources/data_work_item_mapping/work_item_mapping_2026-01-01.json +++ b/resources/data_work_item_mapping/work_item_mapping_2026-01-01.json @@ -190,7 +190,8 @@ "from_components": [ "유로폼" ], - "kind_suffix": "euroform_type" + "kind_suffix": "euroform_type", + "incomplete_note": "⚠ 자재 몫이 빠져 있음 — 12-38-2 의 패널 0.89매/10㎡·부자재(주자재비의 24/52/79 %)·소모자재 5 % 는 **자재 단가가 서야** 붙는다. 지금 서는 것은 설치·해체 품뿐이다." }, { "code": "FP-12-03", diff --git a/resources/data_work_item_master/_manifest.json b/resources/data_work_item_master/_manifest.json index 4e0d4f1b..6d70194f 100644 --- a/resources/data_work_item_master/_manifest.json +++ b/resources/data_work_item_master/_manifest.json @@ -1,7 +1,7 @@ { "schema_version": "1.0", "dataset_id": "data_work_item_master_manifest", - "generated_at": "2026-09-08T01:18:06+09:00", + "generated_at": "2026-09-08T01:45:21+09:00", "built_by": "B08_Quantity/B08_Quantity_Build_WorkItemMaster.py", "source": { "dataset_id": "pum_forest", @@ -12,8 +12,8 @@ "files": [ { "file": "work_item_master_2026-01-01.json", - "sha256": "086441e1380441259e860620d1e81b886019f11838dea601c0a3797f6f1a3d3e", - "size_bytes": 800211 + "sha256": "f80d3ad4bf3ee242d282d8d54d18305e1b89fbbb9fc414c31b95cecc8b84d47f", + "size_bytes": 813044 }, { "file": "form_undetermined_2026-01-01.json", @@ -22,8 +22,8 @@ }, { "file": "basis_missing_2026-01-01.json", - "sha256": "27f8d80d10b791df8502e633c1d279ce2acce63f871eae6b0c4eb26ca8290e2e", - "size_bytes": 20674 + "sha256": "b69091149adb942ce507d902b7e6ac400777674301b9200b1f1c60cfbd709839", + "size_bytes": 22832 } ] } \ No newline at end of file diff --git a/resources/data_work_item_master/basis_missing_2026-01-01.json b/resources/data_work_item_master/basis_missing_2026-01-01.json index d6f14406..17c015fe 100644 --- a/resources/data_work_item_master/basis_missing_2026-01-01.json +++ b/resources/data_work_item_master/basis_missing_2026-01-01.json @@ -34,12 +34,24 @@ "pum_form": "requirement", "line": 1444 }, + { + "pum_table_id": "F0057", + "section": "2-1-7. 소각, 매몰, 훈증, 박피", + "pum_form": "requirement", + "line": 1518 + }, { "pum_table_id": "F0061", "section": "2-1-11. 지상 약제살포", "pum_form": "requirement", "line": 1570 }, + { + "pum_table_id": "F0062", + "section": "2-1-12. 그물망 피복", + "pum_form": "requirement", + "line": 1579 + }, { "pum_table_id": "F0075", "section": "3-1. 경계표시", @@ -292,6 +304,12 @@ "pum_form": "requirement", "line": 2919 }, + { + "pum_table_id": "F0145", + "section": "5-28-2. 방초매트 및 야자섬유매트 포장", + "pum_form": "requirement", + "line": 2929 + }, { "pum_table_id": "F0153", "section": "6-1. 비료주기", @@ -322,6 +340,12 @@ "pum_form": "requirement", "line": 3122 }, + { + "pum_table_id": "F0158", + "section": "6-4-1. 덩굴걷기", + "pum_form": "requirement", + "line": 3143 + }, { "pum_table_id": "F0159", "section": "6-4-2. 덩굴 약제 살포처리", @@ -610,6 +634,12 @@ "pum_form": "requirement", "line": 4860 }, + { + "pum_table_id": "F0256", + "section": "9-11-1. 콘크리트(기계)", + "pum_form": "requirement", + "line": 4946 + }, { "pum_table_id": "F0294", "section": "9-21. 제근", @@ -622,6 +652,18 @@ "pum_form": "requirement", "line": 5770 }, + { + "pum_table_id": "F0311", + "section": "10-7-4. 모노레일 운반", + "pum_form": "requirement", + "line": 5779 + }, + { + "pum_table_id": "F0312", + "section": "10-7-4. 모노레일 운반", + "pum_form": "requirement", + "line": 5795 + }, { "pum_table_id": "F0313", "section": "10-8-1. 짐내리기", @@ -634,6 +676,12 @@ "pum_form": "requirement", "line": 5829 }, + { + "pum_table_id": "F0315", + "section": "10-8-3. 케이블 크레인 운전", + "pum_form": "requirement", + "line": 5840 + }, { "pum_table_id": "F0317", "section": "10-10-1. 콘크리트 및 골재운반(지상)", @@ -646,6 +694,18 @@ "pum_form": "requirement", "line": 5894 }, + { + "pum_table_id": "F0326", + "section": "11-2. 토공의 비탈 규준틀", + "pum_form": "requirement", + "line": 6043 + }, + { + "pum_table_id": "F0327", + "section": "11-3. 수평규준틀", + "pum_form": "requirement", + "line": 6056 + }, { "pum_table_id": "F0337", "section": "12-5. 문양거푸집(0~7m)", @@ -676,12 +736,36 @@ "pum_form": "requirement", "line": 6421 }, + { + "pum_table_id": "F0355", + "section": "12-17-1. 펌프카 타설", + "pum_form": "requirement", + "line": 6499 + }, + { + "pum_table_id": "F0362", + "section": "12-2 표면 마무리를 따른다.", + "pum_form": "requirement", + "line": 6569 + }, + { + "pum_table_id": "F0366", + "section": "12-19. 강관비계", + "pum_form": "requirement", + "line": 6614 + }, { "pum_table_id": "F0379", "section": "12-29. 스페이셔 설치(몰탈 블록)", "pum_form": "requirement", "line": 6775 }, + { + "pum_table_id": "F0395", + "section": "12-38-3. 설치 및 해체", + "pum_form": "requirement", + "line": 6943 + }, { "pum_table_id": "F0405", "section": "13-3. 기초다짐 및 뒤채움’ 항을 적용한다.", @@ -700,6 +784,12 @@ "pum_form": "requirement", "line": 7185 }, + { + "pum_table_id": "F0424", + "section": "13-8. 막돌쌓기", + "pum_form": "requirement", + "line": 7415 + }, { "pum_table_id": "F0430", "section": "13-10-2. 나무 말뚝박기", @@ -730,6 +820,12 @@ "pum_form": "requirement", "line": 7745 }, + { + "pum_table_id": "F0449", + "section": "13-16-2. 통기성매트", + "pum_form": "requirement", + "line": 7788 + }, { "pum_table_id": "F0454", "section": "8-2-3 굴착기(2025)」를 참조하여 적용계수를 달리 적용하도록 한다.", diff --git a/resources/data_work_item_master/work_item_master_2026-01-01.json b/resources/data_work_item_master/work_item_master_2026-01-01.json index de454654..77511c2f 100644 --- a/resources/data_work_item_master/work_item_master_2026-01-01.json +++ b/resources/data_work_item_master/work_item_master_2026-01-01.json @@ -2,7 +2,7 @@ "schema_version": "1.0", "dataset_id": "work_item_master_forest", "effective_date": "2026-01-01", - "generated_at": "2026-09-08T01:18:06+09:00", + "generated_at": "2026-09-08T01:45:21+09:00", "dataset_version": { "dataset_id": "pum_forest", "effective_date": "2026-01-01", @@ -22,7 +22,7 @@ "tables_orphan": 19, "form_undetermined": 77, "basis_found": 183, - "basis_missing": 144, + "basis_missing": 160, "basis_grouped": 36 }, "orphan_tables": [ @@ -151,6 +151,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "2.5톤 차량", @@ -260,6 +261,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "단 위", @@ -884,6 +886,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "설계서의 총액", @@ -953,6 +956,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "경 암 ( 硬 岩 )", @@ -1078,6 +1082,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "자연상태의 체적", @@ -1126,6 +1131,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "사용고재(시멘트공대 및 공드람 제외)", @@ -1191,6 +1197,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "6톤 차량", @@ -1768,6 +1775,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "시 멘 트", @@ -1827,6 +1835,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "모 래", @@ -1869,6 +1878,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "모 래" @@ -1896,6 +1906,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "원 형 철 근", @@ -1973,6 +1984,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "목 재", @@ -2125,6 +2137,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "6월∼9월", @@ -2172,6 +2185,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "3년차 이상", @@ -2219,6 +2233,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "집단화 정도", @@ -2270,6 +2285,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "작업구역", @@ -2345,6 +2361,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "산지경사", @@ -2420,6 +2437,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "도 보", @@ -2487,6 +2505,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "식생을 제거하지 않고는 보행이 곤란하다", @@ -2534,6 +2553,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "가슴높이 이상의 초본․관목", @@ -2581,6 +2601,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "어렵다(높이 1.2m 이상이고, 직경이 4~6cm 이상)", @@ -2628,6 +2649,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "돌 등 장애물 함량이 30% 이상이고, 나무뿌리가 밀하게 분포할 경우", @@ -2675,6 +2697,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "과밀(80%초과 피복)", @@ -2732,6 +2755,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "대 (임지의 71% 이상 분포)", @@ -2779,6 +2803,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "돌, 도랑, 그루터기 등으로 주행이 매우 힘들다", @@ -2826,6 +2851,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "가선을 이용한 기계장비의 원목․생산재 집재", @@ -2908,6 +2934,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "11~20m", @@ -2955,6 +2982,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "규격재 생산을 위한 조재" @@ -2992,6 +3020,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "산림병해충방제 (단목베기, 나무주사)", @@ -3079,6 +3108,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "산림병해충방제 (산물수집-기계장비 집재)", @@ -3132,6 +3162,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "매개충나무주사" @@ -3180,6 +3211,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "사면형", @@ -3237,6 +3269,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "접근성", @@ -3288,6 +3321,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "방제 수종", @@ -3333,6 +3367,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "그물망 피복 시 임내 운반거리", @@ -3402,6 +3437,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "장비의 규격 (굴삭기)", @@ -3447,6 +3483,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "작업 가능 시간", @@ -3510,6 +3547,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "1", @@ -3566,6 +3604,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "적용방법", @@ -3803,6 +3842,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "2회", @@ -3873,6 +3913,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "거 푸 집 씻 기", @@ -3953,6 +3994,7 @@ "expression_cells": [ "+10%" ], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "위치 및 면적", @@ -4320,6 +4362,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "보통휘발유 (주연료)", @@ -4365,6 +4408,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "예취기(휘발유)" @@ -4396,6 +4440,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "아키아윈치(휘발유)" @@ -4425,6 +4470,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "2드럼 케이블윈치(휘발유)" @@ -4454,6 +4500,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "천공기 (휘발유)" @@ -4495,6 +4542,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "트랙터 부착 기계", @@ -4613,6 +4661,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "트랙 접지력 보강", @@ -4655,6 +4704,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "주재료", @@ -4702,6 +4752,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "주재료", @@ -4741,6 +4792,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "주재료", @@ -4778,6 +4830,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "주재료", @@ -4827,6 +4880,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "농약 (Fluroxypyr -meptyl + Triclypyr-TEA 미탁제)" @@ -4858,6 +4912,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "소금처리량(g)" @@ -4891,6 +4946,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "농약 (글리포세이트)", @@ -4939,6 +4995,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "수량", @@ -5020,14 +5077,15 @@ "pum_table_id": "F0057", "section": "2-1-7. 소각, 매몰, 훈증, 박피", "source_line": 1518, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "'수 량'", "basis_quantity": null, "basis_unit": null, "basis_source": null, "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "훈증약제", @@ -5097,6 +5155,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "수 량", @@ -5151,6 +5210,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "수 량", @@ -5205,6 +5265,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "수 량", @@ -5259,6 +5320,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "수 량", @@ -5298,14 +5360,15 @@ "pum_table_id": "F0062", "section": "2-1-12. 그물망 피복", "source_line": 1579, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "'수 량'", "basis_quantity": null, "basis_unit": null, "basis_source": null, "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "그물망", @@ -5351,6 +5414,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "메인파쇄기날", @@ -5401,6 +5465,7 @@ "expression_cells": [ "+10%" ], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "위치 및 면적", @@ -5788,6 +5853,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "45cc (배기량기준)" @@ -5827,6 +5893,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "예취기 (배기량 35cc)" @@ -5866,6 +5933,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "아키아윈치", @@ -6040,6 +6108,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "배부식분무기" @@ -6079,6 +6148,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "45cc (배기량 기준)" @@ -6118,6 +6188,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "5HP(양수기)" @@ -6157,6 +6228,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "무인헬기(FAZER) 내용가동시간 1,400시간기준" @@ -6196,6 +6268,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "무인멀티콥터(평균가) 내용가동시간 1,000시간 기준", @@ -6241,6 +6314,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "1톤(방제차량)", @@ -6286,6 +6360,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "-" @@ -6327,6 +6402,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "손료계수(10⁻⁷)", @@ -6393,6 +6469,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "소요인력", @@ -6424,6 +6501,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": true, "capacity_formula_here": false, "variant_key": [ "위치 및 면적", @@ -7361,6 +7439,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "구 분", @@ -7394,6 +7473,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": true, "capacity_formula_here": false, "variant_key": [ "위치 및 면적", @@ -8443,6 +8523,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "구 분", @@ -8482,6 +8563,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": true, "capacity_formula_here": false, "variant_key": [ "위치 및 면적", @@ -9446,6 +9528,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "노면정지", @@ -9491,6 +9574,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "모든 벌채산물 임내존치지역", @@ -9588,6 +9672,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "10㎥ 미만", @@ -9651,6 +9736,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "10㎥ 미만", @@ -9744,6 +9830,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "드론조종자 (건설기계조종원)", @@ -9827,6 +9914,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": true, "capacity_formula_here": false, "variant_key": [ "위치 및 임․소반", @@ -11310,6 +11398,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "벌도목 구분", @@ -11365,6 +11454,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "벌도ㆍ조재 공정량(㎥)", @@ -11396,6 +11486,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "154" @@ -11433,6 +11524,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": true, "capacity_formula_here": false, "variant_key": [ "위치 및 임․소반", @@ -12258,6 +12350,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "벌목", @@ -12409,6 +12502,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "5m 미만", @@ -12479,6 +12573,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "특별인부", @@ -12566,6 +12661,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "보통인부" @@ -12605,6 +12701,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "0.13인" @@ -12642,6 +12739,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "1인" @@ -12697,6 +12795,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "0.3m 미만", @@ -12753,6 +12852,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "특별인부", @@ -12851,6 +12951,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "특별인부(인)", @@ -13025,6 +13126,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "10∼ 19", @@ -13082,6 +13184,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "줄떼", @@ -13127,6 +13230,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "지게", @@ -13217,6 +13321,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "특별인부", @@ -13368,6 +13473,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "소묘식재", @@ -13413,6 +13519,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "소나무", @@ -13500,6 +13607,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "소묘", @@ -13551,6 +13659,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "0.3m 미만", @@ -13607,6 +13716,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "0.3m 미만", @@ -13663,6 +13773,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "인 력 시 공", @@ -13793,6 +13904,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "인력품의 10%" @@ -13830,6 +13942,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "특별인부(인)", @@ -13988,6 +14101,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "인력품의 10%" @@ -14015,6 +14129,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "8 ∼ 17", @@ -14072,6 +14187,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "파종상 만들기", @@ -14141,6 +14257,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "지면긁기작업", @@ -14189,6 +14306,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "맹아근주 정리작업" @@ -14230,6 +14348,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "움싹본수조절", @@ -14285,6 +14404,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "큰나무 식재" @@ -14326,6 +14446,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "보통인부" @@ -14359,14 +14480,15 @@ "pum_table_id": "F0115", "section": "5-10. 사방조림", "source_line": 2456, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "'수 량'", "basis_quantity": 1.0, "basis_unit": "㏊", "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "묘목", @@ -14450,6 +14572,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "보통인부(인)" @@ -14491,6 +14614,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "줄떼", @@ -14536,6 +14660,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "줄떼심기", @@ -14573,14 +14698,15 @@ "pum_table_id": "F0119", "section": "5-14. 새심기", "source_line": 2526, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "'수 량'", "basis_quantity": 1.0, "basis_unit": "㎡", "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "새채집", @@ -14649,14 +14775,15 @@ "pum_table_id": "F0120", "section": "5-15. 바자얽기", "source_line": 2546, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": 10.0, "basis_unit": "m", "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "말뚝", @@ -14725,6 +14852,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "보통토사", @@ -14798,14 +14926,15 @@ "pum_table_id": "F0122", "section": "5-16-2. 선떼붙이기", "source_line": 2585, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "'수 량'", "basis_quantity": 10.0, "basis_unit": "m", "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "단끊기", @@ -14869,14 +14998,15 @@ "pum_table_id": "F0123", "section": "5-17-1. 떼조공", "source_line": 2603, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "'수 량'", "basis_quantity": 100.0, "basis_unit": "m", "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "단끊기", @@ -14931,14 +15061,15 @@ "pum_table_id": "F0124", "section": "5-17-2. 돌조공", "source_line": 2617, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "'수 량'", "basis_quantity": 1.0, "basis_unit": "m", "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "단끊기", @@ -14986,14 +15117,15 @@ "pum_table_id": "F0125", "section": "5-18. 씨뿌리기(줄)", "source_line": 2630, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "'수 량'", "basis_quantity": 1.0, "basis_unit": "m", "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "종자", @@ -15093,6 +15225,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "6", @@ -15146,6 +15279,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "15", @@ -15204,6 +15338,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "표토채취", @@ -15265,6 +15400,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "채 취", @@ -15334,6 +15470,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "조경공", @@ -15382,6 +15519,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "보통인부" @@ -15423,6 +15561,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": true, "capacity_formula_here": false, "variant_key": [ "조경공", @@ -15500,6 +15639,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "조경공", @@ -15548,6 +15688,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "보통인부" @@ -15598,6 +15739,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "자재", @@ -15723,6 +15865,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "자재", @@ -15838,6 +15981,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "초본 위주형", @@ -15927,6 +16071,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "초본 위주형", @@ -16026,6 +16171,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "자재", @@ -16093,6 +16239,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "9", @@ -16161,6 +16308,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "9", @@ -16229,6 +16377,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "10% 이내", @@ -16282,6 +16431,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "조경공", @@ -16336,6 +16486,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "특 별 인 부", @@ -16373,14 +16524,15 @@ "pum_table_id": "F0145", "section": "5-28-2. 방초매트 및 야자섬유매트 포장", "source_line": 2929, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": null, "basis_unit": null, "basis_source": null, "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": true, "capacity_formula_here": false, "variant_key": [ "폭 1.5m 이하", @@ -16441,6 +16593,7 @@ "expression_cells": [ "1/1.3" ], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "K(버킷계수)", @@ -16498,6 +16651,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "표시봉 설치" @@ -16539,6 +16693,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "지주목 설치" @@ -16580,6 +16735,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "대 절" @@ -16621,6 +16777,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "소묘, 중묘", @@ -16666,6 +16823,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "소 묘", @@ -16726,6 +16884,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "인공림(10년이하 조림지)", @@ -16786,6 +16945,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "낫" @@ -16827,6 +16987,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "묘목찾기", @@ -16898,6 +17059,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "묘목찾기", @@ -16969,6 +17131,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "괭이, 도끼 등" @@ -17011,14 +17174,15 @@ "pum_table_id": "F0158", "section": "6-4-1. 덩굴걷기", "source_line": 3143, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": null, "basis_unit": null, "basis_source": null, "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "기계작업" @@ -17062,6 +17226,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "약제살포", @@ -17113,6 +17278,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "소금 처리", @@ -17188,6 +17354,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "뿌리 고살", @@ -17245,6 +17412,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "80% 이상", @@ -17314,6 +17482,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "특별인부 (체인톱 사용)", @@ -17373,6 +17542,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "0~0.5m", @@ -17481,6 +17651,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "11미만", @@ -17540,6 +17711,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "특 별 인 부", @@ -17577,14 +17749,15 @@ "pum_table_id": "F0167", "section": "6-7-3. 초본류 시비", "source_line": 3330, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": 10000.0, "basis_unit": "㎡", "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "특 별 인 부", @@ -17628,14 +17801,15 @@ "pum_table_id": "F0168", "section": "6-8. 목재칩 포설", "source_line": 3344, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": 1.0, "basis_unit": "㎡", "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "우 드 칩", @@ -17709,6 +17883,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "100m이하", @@ -17760,6 +17935,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "ha당원목재적 평균거리", @@ -17833,6 +18009,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "ha당원목재적 평균거리", @@ -17931,6 +18108,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "8", @@ -18115,6 +18293,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "20이하㎥", @@ -18198,6 +18377,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "50m 내외" @@ -18246,6 +18426,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "50이하", @@ -18378,6 +18559,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "20m이하", @@ -18440,6 +18622,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "30이하", @@ -18572,6 +18755,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "0.1∼0.2㎥", @@ -18653,6 +18837,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "60m 이하", @@ -18706,6 +18891,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "50이하", @@ -18838,6 +19024,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "100m 이하", @@ -18928,6 +19115,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "120m 이하", @@ -18994,6 +19182,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "120m 이하", @@ -19060,6 +19249,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "100m이하", @@ -19201,6 +19391,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "100m 이하", @@ -19288,6 +19479,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "100m 이하", @@ -19365,6 +19557,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "100m 이하", @@ -19445,6 +19638,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": true, "capacity_formula_here": false, "variant_key": [ "20㎥ 미만", @@ -19494,6 +19688,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "원목의 길이", @@ -19567,6 +19762,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "원목의 길이", @@ -19640,6 +19836,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "원목집재와 동시에 부산물 수집시" @@ -19678,6 +19875,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "9㎝ 이하", @@ -19766,6 +19964,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "생산목 검척" @@ -19795,6 +19994,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "2.1m", @@ -19899,6 +20099,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "1회 적 재 량", @@ -19984,6 +20185,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "100", @@ -20065,6 +20267,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "0.5", @@ -20143,6 +20346,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "100", @@ -20224,6 +20428,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "100", @@ -20302,6 +20507,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "100", @@ -20398,6 +20604,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "특별인부", @@ -20495,6 +20702,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "특별인부", @@ -20574,6 +20782,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "10~12", @@ -20734,6 +20943,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "10~12", @@ -20872,6 +21082,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "아바멕틴", @@ -20924,6 +21135,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "10~12", @@ -21084,6 +21296,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "10~16", @@ -21243,6 +21456,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "티아메톡삼 분산성액제 15%", @@ -21302,6 +21516,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "10∼12", @@ -21487,6 +21702,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "10∼12", @@ -21672,6 +21888,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "10∼12", @@ -21867,6 +22084,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "디노테퓨란(15)․에마멕틴벤조에이트(4.5) 분산성액제 19.5%", @@ -21920,6 +22138,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "10∼12", @@ -22105,6 +22324,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "10∼12", @@ -22290,6 +22510,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "10∼12", @@ -22475,6 +22696,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "사업 구분", @@ -23154,6 +23376,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "공종", @@ -23761,6 +23984,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": true, "capacity_formula_here": false, "variant_key": [ "위치 및 면적", @@ -24362,6 +24586,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "아바멕틴(1.8)·설폭사플로르(4.2) 분산성액제 6%" @@ -24391,6 +24616,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "10∼12", @@ -24586,6 +24812,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "테부코나졸 유탁제 25%" @@ -24615,6 +24842,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "10∼12", @@ -24810,6 +25038,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "6", @@ -25115,6 +25344,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "4cm", @@ -25307,6 +25537,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "중부지방소나무" @@ -25348,6 +25579,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": true, "capacity_formula_here": false, "variant_key": [ "8롤 미만", @@ -25413,6 +25645,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "트랩설치", @@ -25473,6 +25706,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "특별인부", @@ -25582,6 +25816,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "산림항공방제", @@ -25661,6 +25896,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "소형헬기 (AS350)", @@ -25852,6 +26088,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "드론조종자 (건설기계 조종원)", @@ -25938,6 +26175,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "드론조종자 (건설기계 조종원)", @@ -26034,6 +26272,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "특별인부", @@ -26092,6 +26331,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "250배", @@ -26239,6 +26479,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "방제실행 등록" @@ -26287,6 +26528,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "10m이하", @@ -26360,6 +26602,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "10개 이하", @@ -26420,6 +26663,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "잔가지 줍기" @@ -26459,6 +26703,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "벌목부", @@ -26539,6 +26784,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "이동식 임목 파쇄기" @@ -26598,6 +26844,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "특별인부" @@ -26646,6 +26893,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "보통인부(인)" @@ -26691,6 +26939,7 @@ "expression_cells": [ "1/1.30" ], + "crew_table": false, "capacity_formula_here": true, "variant_key": [ "K", @@ -26757,6 +27006,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "대형브레이커+ 유압식백호우 (무한궤도,0.7㎥)", @@ -26818,6 +27068,7 @@ "expression_cells": [ "1/1.40" ], + "crew_table": false, "capacity_formula_here": true, "variant_key": [ "K", @@ -26884,6 +27135,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "자재", @@ -26991,6 +27243,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "연 암", @@ -27048,6 +27301,7 @@ "expression_cells": [ "1/1.625" ], + "crew_table": false, "capacity_formula_here": true, "variant_key": [ "K", @@ -27116,6 +27370,7 @@ "expression_cells": [ "10.0 (9+11)/2" ], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "대형브레이커+유압식백호우 (무한궤도,0.7㎥)" @@ -27164,6 +27419,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "무근콘크리트" @@ -27207,6 +27463,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "무근콘크리트" @@ -27259,6 +27516,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "철근콘크리트" @@ -27292,6 +27550,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "인력", @@ -27358,6 +27617,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "철근콘크리트" @@ -27401,6 +27661,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "메쌓기", @@ -27469,6 +27730,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "콘크리트" @@ -27510,6 +27772,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "아스팔트" @@ -27552,14 +27815,15 @@ "pum_table_id": "F0256", "section": "9-11-1. 콘크리트(기계)", "source_line": 4946, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": null, "basis_unit": null, "basis_source": null, "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "인력", @@ -27665,6 +27929,7 @@ "1/1.3", "(0.7+0.6)/2-0.05" ], + "crew_table": false, "capacity_formula_here": true, "variant_key": [ "인력(10%)", @@ -27744,6 +28009,7 @@ "1/1.35", "(0.65+0.45)/2-0.05" ], + "crew_table": false, "capacity_formula_here": true, "variant_key": [ "인력 (10%)", @@ -27839,6 +28105,7 @@ "(0.006+0.02+0.03)/3", "1/1.625" ], + "crew_table": false, "capacity_formula_here": true, "variant_key": [ "인력 (10%)", @@ -27943,6 +28210,7 @@ "(0.2+0.26)/2", "(0.7+0.6)/2-0.05" ], + "crew_table": false, "capacity_formula_here": true, "variant_key": [ "인력 (10%)", @@ -28021,6 +28289,7 @@ "expression_cells": [ "(0.27+0.35)/2" ], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "인력 (10%)", @@ -28073,6 +28342,7 @@ "expression_cells": [ "(0.34+0.44)/2" ], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "인력 (10%)", @@ -28125,6 +28395,7 @@ "expression_cells": [ "(0.55+0.45)/2-0.05" ], + "crew_table": false, "capacity_formula_here": true, "variant_key": [ "인력 (10%)", @@ -28201,6 +28472,7 @@ }, "partial_ratio": true, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "인력 (10%)", @@ -28251,6 +28523,7 @@ }, "partial_ratio": true, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "인력 (10%)", @@ -28303,6 +28576,7 @@ "expression_cells": [ "(0.65+0.45)/2-0.05" ], + "crew_table": false, "capacity_formula_here": true, "variant_key": [ "인력 (10%)", @@ -28403,6 +28677,7 @@ }, "partial_ratio": true, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "인력 (10%)", @@ -28479,6 +28754,7 @@ }, "partial_ratio": true, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "인력 (10%)", @@ -28557,6 +28833,7 @@ "expression_cells": [ "(0.50+0.35)/2-0.05" ], + "crew_table": false, "capacity_formula_here": true, "variant_key": [ "인력 (10%)", @@ -28649,6 +28926,7 @@ }, "partial_ratio": true, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "인력 (10%)", @@ -28717,6 +28995,7 @@ }, "partial_ratio": true, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "인력 (10%)", @@ -28787,6 +29066,7 @@ "expression_cells": [ "1/1.625" ], + "crew_table": false, "capacity_formula_here": true, "variant_key": [ "인력 (10%)", @@ -28887,6 +29167,7 @@ }, "partial_ratio": true, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "인력 (10%)", @@ -28963,6 +29244,7 @@ }, "partial_ratio": true, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "인력 (10%)", @@ -29039,6 +29321,7 @@ }, "partial_ratio": true, "expression_cells": [], + "crew_table": false, "capacity_formula_here": true, "variant_key": [ "인력 (10%)", @@ -29139,6 +29422,7 @@ }, "partial_ratio": true, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "인력 (10%)", @@ -29215,6 +29499,7 @@ }, "partial_ratio": true, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "인력 (10%)", @@ -29300,6 +29585,7 @@ }, "partial_ratio": true, "expression_cells": [], + "crew_table": false, "capacity_formula_here": true, "variant_key": [ "인력 (10%)", @@ -29373,6 +29659,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": true, "variant_key": [ "A", @@ -29452,6 +29739,7 @@ "expression_cells": [ "1/1.30" ], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "K(버킷계수)", @@ -29511,6 +29799,7 @@ "expression_cells": [ "1/1.3" ], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "T(표토두께)", @@ -29613,6 +29902,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": true, "variant_key": [ "K", @@ -29670,6 +29960,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "V(다짐속도,km/hr)", @@ -29739,6 +30030,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "흡입준비(t1)", @@ -29822,6 +30114,7 @@ "expression_cells": [ "1/1.3" ], + "crew_table": false, "capacity_formula_here": true, "variant_key": [ "L", @@ -29905,6 +30198,7 @@ "expression_cells": [ "1/1.3" ], + "crew_table": false, "capacity_formula_here": true, "variant_key": [ "굴착기 (무한궤도, 0.7㎥)", @@ -29975,6 +30269,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "보통인부 (인)", @@ -30045,14 +30340,15 @@ "pum_table_id": "F0289", "section": "9-19-1. 토사면 고르기", "source_line": 5430, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": 10.0, "basis_unit": "㎡", "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "인력시공", @@ -30116,6 +30412,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "인력", @@ -30168,6 +30465,7 @@ "expression_cells": [ "(0.0046+0.061)/2" ], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "인력", @@ -30235,14 +30533,15 @@ "pum_table_id": "F0292", "section": "9-20-1. 뿌리다듬기", "source_line": 5489, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": 10.0, "basis_unit": "주", "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "특별인부", @@ -30297,14 +30596,15 @@ "pum_table_id": "F0293", "section": "9-20-2. 적재", "source_line": 5505, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": 10.0, "basis_unit": "주", "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "특별인부", @@ -30353,6 +30653,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "굴착기 (무한궤도)", @@ -30426,6 +30727,7 @@ "expression_cells": [ "1/1.25" ], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "K(버킷계수)", @@ -30492,6 +30794,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "운반비", @@ -30537,6 +30840,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "운반비", @@ -30591,6 +30895,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "구 입", @@ -30636,6 +30941,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "골재생산", @@ -30681,6 +30987,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "운반비", @@ -30726,6 +31033,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "운반", @@ -30886,6 +31194,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "토사", @@ -30971,6 +31280,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "보통인부(인)" @@ -31030,6 +31340,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "소 재 (조재목)", @@ -31125,6 +31436,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "작업반장(인)", @@ -31173,6 +31485,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "작업반장(인)", @@ -31228,6 +31541,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "작업반장(인)", @@ -31283,6 +31597,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "차량구분", @@ -31321,6 +31636,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "시간(분)" @@ -31352,6 +31668,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "보통인부(인)" @@ -31375,14 +31692,15 @@ "pum_table_id": "F0311", "section": "10-7-4. 모노레일 운반", "source_line": 5779, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": null, "basis_unit": null, "basis_source": null, "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "연장", @@ -31464,14 +31782,15 @@ "pum_table_id": "F0312", "section": "10-7-4. 모노레일 운반", "source_line": 5795, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": null, "basis_unit": null, "basis_source": null, "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "연료비", @@ -31529,6 +31848,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "짐내리는 인부", @@ -31602,6 +31922,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "운반대" @@ -31639,14 +31960,15 @@ "pum_table_id": "F0315", "section": "10-8-3. 케이블 크레인 운전", "source_line": 5840, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": null, "basis_unit": null, "basis_source": null, "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "특별인부", @@ -31723,6 +32045,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "콘크리트 블 록", @@ -31839,6 +32162,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "작업반장", @@ -31898,6 +32222,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "작업반장", @@ -31961,6 +32286,7 @@ "1/1.35", "1/1.625" ], + "crew_table": false, "capacity_formula_here": true, "variant_key": [ "L", @@ -32080,6 +32406,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": true, "variant_key": [ "K", @@ -32131,6 +32458,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "적재(t1)", @@ -32233,6 +32561,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "인원(명)" @@ -32280,6 +32609,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "인원(명)" @@ -32317,6 +32647,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "① 드론준비시간(분)", @@ -32383,6 +32714,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "비계공", @@ -32437,14 +32769,15 @@ "pum_table_id": "F0326", "section": "11-2. 토공의 비탈 규준틀", "source_line": 6043, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": null, "basis_unit": null, "basis_source": null, "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "건축목공", @@ -32482,14 +32815,15 @@ "pum_table_id": "F0327", "section": "11-3. 수평규준틀", "source_line": 6056, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": null, "basis_unit": null, "basis_source": null, "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "건축목공", @@ -32535,6 +32869,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": true, "variant_key": [ "부설장비", @@ -32626,6 +32961,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "무근구조물", @@ -32677,6 +33013,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "무근구조물", @@ -32728,6 +33065,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "무근구조물", @@ -32769,6 +33107,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "25", @@ -32840,6 +33179,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "25", @@ -32913,14 +33253,15 @@ "pum_table_id": "F0334", "section": "12-2. 표면 마무리", "source_line": 6161, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "'수 량'", "basis_quantity": 1.0, "basis_unit": "㎡", "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "미 장 공" @@ -32950,6 +33291,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "무근콘크리트", @@ -32996,6 +33338,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "f₁" @@ -33029,6 +33372,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "Type-Ⅰ", @@ -33071,6 +33415,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "f₁" @@ -33102,6 +33447,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "Type-Ⅰ", @@ -33139,6 +33485,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "시멘트(kg)", @@ -33190,14 +33537,15 @@ "pum_table_id": "F0362", "section": "12-2 표면 마무리를 따른다.", "source_line": 6569, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "값 단위 '(m)'", "basis_quantity": null, "basis_unit": null, "basis_source": null, "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "설 치", @@ -33248,6 +33596,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "철근공(인)", @@ -33332,6 +33681,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "횟수별", @@ -33467,6 +33817,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "문양 스티로폴(자재비 포함)", @@ -33525,6 +33876,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": true, "capacity_formula_here": false, "variant_key": [ "콘크리트믹서트럭 직접타설인경우", @@ -33607,6 +33959,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": true, "capacity_formula_here": false, "variant_key": [ "명칭", @@ -33667,6 +34020,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": true, "capacity_formula_here": false, "variant_key": [ "특별인부", @@ -33711,6 +34065,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": true, "capacity_formula_here": false, "variant_key": [ "포장두께(㎝)", @@ -33787,6 +34142,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "콘크리트(레미콘)", @@ -33878,6 +34234,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "콘크리트", @@ -33961,6 +34318,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "콘크리트", @@ -34012,6 +34370,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "유공관 설치", @@ -34146,6 +34505,7 @@ "1.78/2.5", "2.35/2.5" ], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "∅800mm", @@ -34284,6 +34644,7 @@ "0.0298/2.5/2", "0.0355/2.5/2" ], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "∅800mm", @@ -34389,6 +34750,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "절단기", @@ -34466,6 +34828,7 @@ "0.19/8.0", "0.23/8.0" ], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "∅800mm", @@ -34571,6 +34934,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "콘크리트 (레미콘)", @@ -34686,6 +35050,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "콘크리트 (레미콘)", @@ -34785,6 +35150,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "파형강관부설", @@ -34839,6 +35205,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "구체콘크리트 (레미콘)", @@ -34930,6 +35297,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "구체콘크리트 (레미콘)", @@ -35071,14 +35439,15 @@ "pum_table_id": "F0355", "section": "12-17-1. 펌프카 타설", "source_line": 6499, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": null, "basis_unit": null, "basis_source": null, "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "무근콘크리트", @@ -35162,6 +35531,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "구체콘크리트 (철근)", @@ -35236,6 +35606,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "결속선(R=0.9mm)", @@ -35290,14 +35661,15 @@ "pum_table_id": "F0366", "section": "12-19. 강관비계", "source_line": 6614, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "분류 딱지 ['인력', '자재']", "basis_quantity": null, "basis_unit": null, "basis_source": null, "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "자재", @@ -35388,6 +35760,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "자재", @@ -35467,6 +35840,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "자재", @@ -35525,6 +35899,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "재료비", @@ -35570,6 +35945,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "자재", @@ -35651,6 +36027,7 @@ "expression_cells": [ "0.9/1.30" ], + "crew_table": false, "capacity_formula_here": true, "variant_key": [ "뒷채움 자재비 및 운반비 별산", @@ -35776,6 +36153,7 @@ "expression_cells": [ "0.2 × 30%" ], + "crew_table": false, "capacity_formula_here": true, "variant_key": [ "소할(30%)", @@ -35865,6 +36243,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "기계", @@ -35940,6 +36319,7 @@ "expression_cells": [ "0.95/1.175" ], + "crew_table": false, "capacity_formula_here": true, "variant_key": [ "뒷채움 자재비 및 운반비 별산", @@ -36054,6 +36434,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "자재", @@ -36112,6 +36493,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "자재", @@ -36162,6 +36544,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "자재", @@ -36220,6 +36603,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "재료비", @@ -36274,6 +36658,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "자재", @@ -36350,6 +36735,7 @@ "expression_cells": [ "150×150×15" ], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "재료", @@ -36466,6 +36852,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "재료비", @@ -36511,6 +36898,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "재료비", @@ -36556,6 +36944,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "재료", @@ -36615,6 +37004,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "자재", @@ -36689,6 +37079,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "재료비", @@ -36734,6 +37125,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "자재", @@ -36816,6 +37208,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "재료비" @@ -36855,6 +37248,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "자재", @@ -36913,6 +37307,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "제작비", @@ -36964,6 +37359,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "자재", @@ -37031,6 +37427,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "패 널 류 보, 드롭헤드, 강관파이프, 훅  클래프, 웨지핀" @@ -37061,13 +37458,14 @@ "section": "12-38-2. 사용수량", "source_line": 6925, "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "form_basis": "'적용한다' — 값이 아니라 참조 지시", "basis_quantity": 10.0, "basis_unit": "㎡", "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "패 널", @@ -37120,6 +37518,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "요 율" @@ -37153,14 +37552,15 @@ "pum_table_id": "F0395", "section": "12-38-3. 설치 및 해체", "source_line": 6943, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": null, "basis_unit": null, "basis_source": null, "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": true, "capacity_formula_here": false, "variant_key": [ "복 잡", @@ -37212,6 +37612,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "복 잡", @@ -37286,6 +37687,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "규격", @@ -37343,6 +37745,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "보통인부", @@ -37390,6 +37793,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "작업반장", @@ -37455,6 +37859,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "40㎝이상∼60㎝미만", @@ -37504,6 +37909,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "인 부", @@ -37560,6 +37966,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "증가율(%)" @@ -37593,6 +38000,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "25㎝(17×17)", @@ -37665,14 +38073,15 @@ "pum_table_id": "F0418", "section": "13-3. 기초다짐 및 뒤채움”항을 적용한다.", "source_line": 7268, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": 1.0, "basis_unit": "㎡", "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "35cm 이하", @@ -37734,6 +38143,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "모래 기초다짐", @@ -37803,6 +38213,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "(mm)", @@ -37875,6 +38286,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "골쌓기", @@ -38064,14 +38476,15 @@ "pum_table_id": "F0407", "section": "13-4-2. 메쌓기(장비)", "source_line": 7110, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": 1.0, "basis_unit": "㎡", "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "35cm 이하", @@ -38133,6 +38546,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "야면석(㎥) 깬잡석(㎥) 깬 돌(㎥) 견치돌(㎥)" @@ -38182,6 +38596,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "골쌓기", @@ -38369,6 +38784,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "야면석(㎥) 호박돌(㎥)", @@ -38422,6 +38838,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "상부의 두께(㎝) 하부의 두께(㎝)" @@ -38455,6 +38872,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "∼1.5", @@ -38498,6 +38916,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "메쌓기", @@ -38565,14 +38984,15 @@ "pum_table_id": "F0414", "section": "13-4-5. 찰쌓기(장비)", "source_line": 7200, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": 1.0, "basis_unit": "㎡", "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "35cm 이하", @@ -38634,6 +39054,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "25㎝", @@ -38694,6 +39115,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "종 별", @@ -38767,14 +39189,15 @@ "pum_table_id": "F0417", "section": "13-5-2. 장비", "source_line": 7252, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": 1.0, "basis_unit": "㎡", "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "35cm 이하", @@ -38845,6 +39268,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "직경 40㎝이상 ∼60㎝미만", @@ -38933,6 +39357,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "직경 40㎝이상 ∼60㎝미만", @@ -39021,6 +39446,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "직경 40㎝이상 ~60㎝미만", @@ -39118,6 +39544,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "직경 40㎝이상 ~60㎝미만", @@ -39206,6 +39633,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "직경 40㎝이상 ∼60㎝미만", @@ -39286,14 +39714,15 @@ "pum_table_id": "F0424", "section": "13-8. 막돌쌓기", "source_line": 7415, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": null, "basis_unit": null, "basis_source": null, "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "뒷길이 평균 적용" @@ -39329,14 +39758,15 @@ "pum_table_id": "F0425", "section": "13-9. 서식지 조성 돌쌓기 및 놓기", "source_line": 7429, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": 10.0, "basis_unit": "ton", "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "인 력", @@ -39404,6 +39834,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "직경 15㎝ 길이 4m" @@ -39445,6 +39876,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "보통 인부 (인)" @@ -39482,6 +39914,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "보 통 인 부 (인)" @@ -39537,6 +39970,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "계수" @@ -39576,6 +40010,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "8 9", @@ -39739,6 +40174,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "조약돌량(㎥)", @@ -39791,6 +40227,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "조립 설치", @@ -39882,6 +40319,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "조약돌량(㎥)", @@ -39950,6 +40388,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "조립 설치", @@ -40038,14 +40477,15 @@ "pum_table_id": "F0435", "section": "13-11-3. 매트리스형", "source_line": 7581, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": 1.0, "basis_unit": "㎡", "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "특별인부", @@ -40086,14 +40526,15 @@ "pum_table_id": "F0436", "section": "13-11-4. 사각형", "source_line": 7596, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "'수 량'", "basis_quantity": 1.0, "basis_unit": "㎥", "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "자재", @@ -40193,6 +40634,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "보통토사", @@ -40258,6 +40700,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "작 업 반 장", @@ -40299,6 +40742,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "4m 표준", @@ -40367,6 +40811,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "보통구조", @@ -40451,6 +40896,7 @@ }, "partial_ratio": true, "expression_cells": [], + "crew_table": false, "capacity_formula_here": true, "variant_key": [ "인력(10%)", @@ -40501,14 +40947,15 @@ "pum_table_id": "F0442", "section": "13-13-2. 산림복원용 흙막이", "source_line": 7691, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": 1.0, "basis_unit": "㎥", "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "식생매트설치", @@ -40565,6 +41012,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "간 단 구 조", @@ -40613,6 +41061,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "단 끊 기", @@ -40673,6 +41122,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "보 통 인 부" @@ -40728,6 +41178,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "어려운 조건", @@ -40766,6 +41217,7 @@ "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "어려운 조건", @@ -40821,14 +41273,15 @@ "pum_table_id": "F0448", "section": "13-16-1. 필터매트", "source_line": 7766, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": 1.0, "basis_unit": "㎡", "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "사 면", @@ -40922,14 +41375,15 @@ "pum_table_id": "F0449", "section": "13-16-2. 통기성매트", "source_line": 7788, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": null, "basis_unit": null, "basis_source": null, "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": true, "capacity_formula_here": false, "variant_key": [ "폭 1.5m 이하", @@ -40989,14 +41443,15 @@ "pum_table_id": "F0450", "section": "14-1. 입목뿌리 밑막이", "source_line": 7802, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": 10.0, "basis_unit": "본", "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "0.8㎥ 굴착기(우드그랩 부착)", @@ -41037,14 +41492,15 @@ "pum_table_id": "F0451", "section": "14-2. 근주이식", "source_line": 7813, - "pum_form": "reference", - "form_basis": "헤더 '단 위'", + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", "basis_quantity": 10.0, "basis_unit": "본", "basis_source": "본문", "resource_shares": {}, "partial_ratio": false, "expression_cells": [], + "crew_table": false, "capacity_formula_here": false, "variant_key": [ "0.8㎥ 굴착기",