diff --git a/B05_Profile/B05_Profile_Structure_Types.json b/B05_Profile/B05_Profile_Structure_Types.json index f60218a2..1788819a 100644 --- a/B05_Profile/B05_Profile_Structure_Types.json +++ b/B05_Profile/B05_Profile_Structure_Types.json @@ -1094,6 +1094,113 @@ "input": "select", "choices": ["자동(성토 쪽)", "좌", "우"], "default": "자동(성토 쪽)" + }, + { + "key": "tiers", + "label": "단 수(다단)", + "input": "number", + "unit": "단", + "default": 1, + "required": false, + "phase": "b05" + }, + { + "key": "lift_m", + "label": "기준 올림(사면 위로)", + "input": "number", + "unit": "m", + "default": 0, + "required": false, + "phase": "b05" + }, + { + "key": "shift_m", + "label": "기준 좌우 이동", + "input": "number", + "unit": "m", + "default": 0, + "required": false, + "phase": "b05" + }, + { + "key": "back_len_cm", + "label": "뒷길이", + "input": "select", + "choices": ["25", "30", "35", "45", "55", "60", "75"], + "default": null, + "required": false, + "phase": "detail" + }, + { + "key": "stone_kind", + "label": "돌 종류", + "input": "select", + "choices": ["야면석·호박돌", "깬잡석", "깬돌", "견치돌"], + "default": null, + "required": false, + "phase": "detail" + }, + { + "key": "stone_supply", + "label": "조달", + "input": "select", + "choices": ["채집", "구입"], + "default": "채집", + "required": false, + "phase": "detail" + }, + { + "key": "stone_coeff_basis", + "label": "야면석 계수", + "input": "select", + "choices": ["품셈", "실무 관행"], + "default": null, + "required": false, + "phase": "detail" + }, + { + "key": "fill_concrete_mpa", + "label": "채움 강도", + "input": "select", + "choices": ["180", "210"], + "default": null, + "required": false, + "phase": "detail" + }, + { + "key": "face_slope_ratio", + "label": "전면 기울기 (1:n 의 n)", + "input": "number", + "default": null, + "required": false, + "phase": "detail" + }, + { + "key": "foundation", + "label": "기초", + "input": "select", + "choices": ["기초유", "기초버림"], + "default": null, + "required": true, + "phase": "detail" + }, + { + "key": "weep_hole_diameter_mm", + "label": "물빼기 구멍 지름", + "input": "number", + "unit": "㎜", + "default": null, + "required": false, + "phase": "detail" + }, + { + "key": "weep_hole_area_m2", + "label": "물빼기 구멍 1개당 벽면적", + "input": "number", + "unit": "㎡", + "default": null, + "required": false, + "phase": "detail" } ] }, diff --git a/B07_DesignDetail/B07_DesignDetail_Engine_Cad_Table.py b/B07_DesignDetail/B07_DesignDetail_Engine_Cad_Table.py index d0f1fce7..c8e605c5 100644 --- a/B07_DesignDetail/B07_DesignDetail_Engine_Cad_Table.py +++ b/B07_DesignDetail/B07_DesignDetail_Engine_Cad_Table.py @@ -49,7 +49,11 @@ _CROSS_RIGHT_ROWS: tuple[tuple[str | None, str | None], ...] = ( ("성토파종", "fill_seeding"), ("절토살포", "cut_spraying"), ("제근", "grubbing"), - (None, None), + # 사토장(유용토운반작업장) — **「쌓기」와 갈라 세운다**(2026-09-09 확정 ㉠). + # ⚠ 여기는 원래 **빈 줄**이었고, 실무 원본 횡단도에는 그 자리가 **아예 없다** + # (2026-09-09 400dpi 실측). 즉 **납품 양식을 늘리는 것이 아니라 안 쓰던 칸을 쓰는 것**이다. + # ⚠ 사토장이 없는 측점에는 값이 안 실려 종전처럼 빈칸으로 남는다. + ("사토장", "spoil_fill"), ("노면다짐", "road_compaction"), ) @@ -74,6 +78,8 @@ QUANTITY_VALUE_KEYS: tuple[str, ...] = ( "fill_seeding", "cut_spraying", "grubbing", + # 사토장 — 「쌓기(embankment)」와 **다른 칸**이다. 합치지 않는다(확정 ㉠). + "spoil_fill", "road_compaction", ) diff --git a/B07_DesignDetail/B07_DesignDetail_Engine_Cross_Quantity.py b/B07_DesignDetail/B07_DesignDetail_Engine_Cross_Quantity.py index c51b7a3c..0604ec3f 100644 --- a/B07_DesignDetail/B07_DesignDetail_Engine_Cross_Quantity.py +++ b/B07_DesignDetail/B07_DesignDetail_Engine_Cross_Quantity.py @@ -47,6 +47,9 @@ AREA_KEYS: tuple[tuple[str, str], ...] = ( ("embankment", "fill_area_m2"), ("ditch_soil", "ditch_soil_area_m2"), ("ditch_rock", "ditch_rock_area_m2"), + # 사토장 — **`fill_area_m2` 와 갈라 든다**. B06 이 이미 노선 성토에서 뺀 값이라 + # 여기서 더하거나 빼지 않는다(확정 ㉠ — 같은 흙을 두 번 세지 않기). + ("spoil_fill", "spoil_fill_area_m2"), ) #: `ditch_split_basis` 를 사람이 읽는 말로. 도면·화면이 「왜 이렇게 갈렸나」를 보일 때 쓴다. diff --git a/common_util/common_util_structure_walls.ts b/common_util/common_util_structure_walls.ts index 5cd7c2e8..d6bb4f40 100644 --- a/common_util/common_util_structure_walls.ts +++ b/common_util/common_util_structure_walls.ts @@ -42,7 +42,17 @@ export interface WallSpec { /** 구간 경계 측점을 구간 안으로 볼 허용 오차(m) — 파이썬 `_EDGE_TOLERANCE_M`. */ const EDGE_TOLERANCE_M = 0.02; -/** 구조물 종류 → 횡단 기하가 아는 형태 이름 — 파이썬 `_FORM_BY_TYPE` 와 같은 표. */ +/** + * 구조물 종류 → 횡단 기하가 아는 형태 이름 — 파이썬 `_FORM_BY_TYPE` 와 같은 표. + * + * ⚠⚠ **「형상 동일」이 「수량 동일」이 아니다**(2026-09-09 사용자 확정 4차 원문: + * 「흙막이는 횡단도에서 표현방식들과 옵션들은 동일하게 반영 · **형상은 동일** · + * 물론 **데이터는 분리하여 계산**되어야 함」). + * ⇒ 흙막이는 기슭막이와 **같은 그리기 경로·같은 옵션 벌**을 쓰되, 원단위·공종코드·성분 + * 줄은 **흙막이 자기 것**이다. 그림이 같다고 수량을 빌려 쓰면 안 된다. + * ⚠ 반대 방향의 사례가 골막이다 — 그림도 수량도 다르고, 두께식마저 다른 식이었다. + * **구조물 계열이 다르면 상수를 나눠 쓸 것.** + */ export const FORM_BY_TYPE: Record = { masonry_wet: "돌쌓기(찰)", masonry_dry: "돌쌓기(메)",