feat(structure): 65-1~5 세월교 · 박스암거 유입 · 유출 흙막이 양식 공통 · 없음 = 램프 뺌 · 세월교 기본값 · 물넘이 월류 폭 · 높이

- 흙막이 양식 한 벌(design_structure_guard) — 배관 · 박스 · 세월교가 같은 칸(형태 · 길이 · 높이 · 측점 전후) · 추가 흙막이 · 도수로/돌붙임 상자
- 세월교 · 박스 유입 · 유출: 흙막이 고르면 흙막이 칸(키 {side}_revet_* · 기본 찰 10 · 1.5 · 5 · 5) · [연동][경사] 옵션 줄
- B06 측벽 높이 · 좌우 · 상하 · 바닥판 읽기 줄을 세월교 · 박스 유입 · 유출 칸에 안 옮김(강조만)
- 유입 · 유출 「없음」 = 목록 램프 · 구조물 조합 잇기 줄 없음(명세 none)
- 세월교: 수량(련) 관경 바로 뒤 · 련 기본 2 · 새 시설 빈 월류 높이 = 유량 오면 필요 수심 · 종류 바꿀 때 유량 넘김
- 물넘이 포장: 경사각 기본 3° · 월류 폭 · 높이 칸(세월교와 같은 키 ford_width_m · ford_height_m · 같은 계산)
- 구조물정의 판 18(판_17 이력) · 이름 표 · 집계표 선택 컨테이너 짝 · 저장 병합 키
- 시험: 세월교 · 박스 · 물넘이 명세 기대값 · 흙막이 짝 자리 옮김

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BVPp2o6Mh2FZJr72yW3ofZ
This commit is contained in:
2026-10-06 23:09:38 +09:00
co-authored by Claude Opus 5.5
parent d42efb162b
commit d7faee1cd2
24 changed files with 4174 additions and 209 deletions
+92 -6
View File
@@ -1,5 +1,5 @@
{
"판": 17,
"판": 18,
"schema_version": 1,
"comment": "B05 구조물 타입 레지스트리 정본. 근거·옵션 상세는 PLAN.md 구조물 리스트와 resources/knowledge/technical_info/01_임도 참조. 2026-08-17 선택지 재편: B군(종단배수)·F군(생태/녹화)·G군(노면공)은 enabled:false 보존 — B05 선택지에서 빠지고 B06 개별 횡단도 옵션으로 재사용한다. 바닥막이(bed_sill)·생태연못(eco_pond)은 임도 미사용 확정으로 삭제. 배관·BOX암거·물넘이·세월교는 pipe_points.json 정본 관리(managed_by) — structures.json에 저장하지 않으며, 배관 부속(유형/집수정/기슭막이/돌붙임)·날개벽 옵션 정의는 B06/B07 필수 승격의 선언 근거다. ★기본값 원칙(2026-08-16 크로스체크 2차): default를 두는 것은 ①법정이 등급과 무관하게 못박은 단일 수치 ②사용자가 개발 단계에서 확정한 값 ③도메인 수치가 아닌 표시용 문자열, 이 셋뿐이다. 재료·형식 같은 설계자 판단 선택지와 미확정 제원은 default 없이 required로 두어 사용자가 직접 고르게 한다 (pipe_diameter_mm 1000 = 별표2 원칙값+사용자 확정 — 화이트리스트 등재). BOX암거 본체 2.0×2.0·날개벽 유입/유출 있음·짧은쪽 높이 1m·길이 2m·각도 45°는 2026-08-17 사용자 확정값이다 — 본체 규격은 실무 관측 규격(2.0×2.0·3.0×3.0)을 폼에서 프리셋 select로 받고 필요 시 사용자 지정으로 자유 입력하되, 저장 키는 body_width_m·body_height_m 숫자 그대로다(프리셋 전용 키를 만들지 않는다). 이 값들은 B05 서브폼이 실제로 받으므로 phase를 detail로 두지 않는다. ★보호공 개편(2026-08-17 사용자 지시): 구 `*_pitching`(있음/없음) + `*_pitching_finish`(찰/메) 두 축을 `*_protection` 한 축(돌붙임(찰)·돌붙임(메)·도수로)으로 합쳤다 — 도수로·산비탈수로(B4)는 유출부에서 돌붙임 대신 쓰는 공종이라 별도 구조물이 아니라 보호공 선택지로 받는다. \"없음\"은 삭제(물이 흐르는 자리라 보호공 필수). 치수는 배타 — 돌붙임이면 `*_protection_area_m2`(10㎡), 도수로면 `*_protection_width_m`(1m, 지식DB 수치 근거 없음·사용자 확정, 실무 확인 후 개선). 구 저장분은 `common_util_drainage_pipes.parse_pipe_points`가 새 키로 옮긴다.",
"구조물군": {
@@ -486,6 +486,15 @@
"quantity"
],
"options": [
{
"key": "ford_slope_deg",
"label": "경사각도",
"input": "number",
"unit": "°",
"default": 3,
"required": false,
"default_basis": "물넘이 포장 경사각 기본 3° — 사용자 확정값(PLAN 65-5)"
},
{
"key": "ford_width_m",
"label": "월류 폭",
@@ -575,8 +584,9 @@
"label": "배관 수량",
"input": "number",
"unit": "련",
"default": null,
"required": false
"default": 2,
"required": false,
"default_basis": "세월교 배관 수량 기본 2련 — 사용자 확정값(PLAN 65-4)"
},
{
"key": "ford_width_m",
@@ -3381,10 +3391,48 @@
"inlet.structure=없음": "없음",
"inlet.structure=날개벽": "날개벽",
"inlet.structure=흙막이": "흙막이",
"inlet.form": "형태",
"inlet.form=돌쌓기(찰)": "돌 쌓기(찰)",
"inlet.form=돌쌓기(메)": "돌 쌓기(메)",
"inlet.form=콘크리트": "콘크리트",
"inlet.form=돌망태": "돌망태",
"inlet.form=통나무·목재틀": "통나무/목재틀",
"inlet.form=바자": "바자",
"inlet.length": "길이 (m)",
"inlet.height": "높이 (m)",
"inlet.before": "기준측점 전 (m)",
"inlet.after": "기준측점 후 (m)",
"outlet.structure": "구조",
"outlet.structure=없음": "없음",
"outlet.structure=날개벽": "날개벽",
"outlet.structure=흙막이": "흙막이"
"outlet.structure=흙막이": "흙막이",
"outlet.form": "형태",
"outlet.form=돌쌓기(찰)": "돌 쌓기(찰)",
"outlet.form=돌쌓기(메)": "돌 쌓기(메)",
"outlet.form=콘크리트": "콘크리트",
"outlet.form=돌망태": "돌망태",
"outlet.form=통나무·목재틀": "통나무/목재틀",
"outlet.form=바자": "바자",
"outlet.length": "길이 (m)",
"outlet.height": "높이 (m)",
"outlet.before": "기준측점 전 (m)",
"outlet.after": "기준측점 후 (m)",
"soil_add": "흙막이",
"soil_add.form": "형태",
"soil_add.form=돌쌓기(찰)": "돌 쌓기(찰)",
"soil_add.form=돌쌓기(메)": "돌 쌓기(메)",
"soil_add.form=콘크리트": "콘크리트",
"soil_add.form=돌망태": "돌망태",
"soil_add.form=통나무·목재틀": "통나무/목재틀",
"soil_add.form=바자": "바자",
"soil_add.length": "길이 (m)",
"soil_add.height": "높이 (m)",
"soil_add.before": "기준측점 전 (m)",
"soil_add.after": "기준측점 후 (m)",
"chute_add": "도수로/돌붙임",
"chute_add.structure": "구조",
"chute_add.structure=도수로": "도수로",
"chute_add.structure=돌붙임": "돌붙임"
}
},
"ford_pavement": {
@@ -3405,17 +3453,55 @@
"ford.diameter=1000": "1000",
"ford.diameter=1200": "1200",
"ford.diameter=1500": "1500",
"ford.count": "수량 (련)",
"ford.width": "월류 폭 (m)",
"ford.height": "월류 높이 (m)",
"ford.count": "수량 (련)",
"inlet.structure": "구조",
"inlet.structure=없음": "없음",
"inlet.structure=날개벽": "날개벽",
"inlet.structure=흙막이": "흙막이",
"inlet.form": "형태",
"inlet.form=돌쌓기(찰)": "돌 쌓기(찰)",
"inlet.form=돌쌓기(메)": "돌 쌓기(메)",
"inlet.form=콘크리트": "콘크리트",
"inlet.form=돌망태": "돌망태",
"inlet.form=통나무·목재틀": "통나무/목재틀",
"inlet.form=바자": "바자",
"inlet.length": "길이 (m)",
"inlet.height": "높이 (m)",
"inlet.before": "기준측점 전 (m)",
"inlet.after": "기준측점 후 (m)",
"outlet.structure": "구조",
"outlet.structure=없음": "없음",
"outlet.structure=날개벽": "날개벽",
"outlet.structure=흙막이": "흙막이"
"outlet.structure=흙막이": "흙막이",
"outlet.form": "형태",
"outlet.form=돌쌓기(찰)": "돌 쌓기(찰)",
"outlet.form=돌쌓기(메)": "돌 쌓기(메)",
"outlet.form=콘크리트": "콘크리트",
"outlet.form=돌망태": "돌망태",
"outlet.form=통나무·목재틀": "통나무/목재틀",
"outlet.form=바자": "바자",
"outlet.length": "길이 (m)",
"outlet.height": "높이 (m)",
"outlet.before": "기준측점 전 (m)",
"outlet.after": "기준측점 후 (m)",
"soil_add": "흙막이",
"soil_add.form": "형태",
"soil_add.form=돌쌓기(찰)": "돌 쌓기(찰)",
"soil_add.form=돌쌓기(메)": "돌 쌓기(메)",
"soil_add.form=콘크리트": "콘크리트",
"soil_add.form=돌망태": "돌망태",
"soil_add.form=통나무·목재틀": "통나무/목재틀",
"soil_add.form=바자": "바자",
"soil_add.length": "길이 (m)",
"soil_add.height": "높이 (m)",
"soil_add.before": "기준측점 전 (m)",
"soil_add.after": "기준측점 후 (m)",
"chute_add": "도수로/돌붙임",
"chute_add.structure": "구조",
"chute_add.structure=도수로": "도수로",
"chute_add.structure=돌붙임": "돌붙임"
}
},
"revetment": {
File diff suppressed because it is too large Load Diff