feat(B05): BOX암거 본체 규격 프리셋·날개벽 기본 제원

- 본체 규격을 실무 관측 규격 프리셋(기본 2.0×2.0·3.0×3.0)으로 받고, 그 밖의
  규격만 "사용자 지정"으로 폭·높이를 직접 입력한다. 저장 키는 어느 쪽이든
  body_width_m·body_height_m 숫자 그대로 — 프리셋 전용 키를 만들지 않아야
  하류(B06 횡단도·수량)가 폭·높이만 읽고 끝난다
- 날개벽 유입·유출을 createWingFields 한 조각으로 묶고(기존 기슭막이
  createRevetmentFields와 같은 패턴) 설치 있음·짧은쪽 높이 1m·길이 2m·
  각도 45°를 프리필. 설치 "없음"이면 제원 칸을 접는다
- setFacility 빈값 폴백을 기본값으로 — 빈 문자열 대입으로 select가
  selectedIndex=-1(공백 표시)되던 문제도 함께 해소
- 레지스트리 정본에 위 기본값 10건 등재하고 required·phase:detail 해제.
  이 값들은 B05 서브폼이 실제로 받으므로 detail 표기가 정본과 어긋나 있었다
- addAt의 managed_by 분기에 BOX암거 한정 defaultOptions 동봉(방어선 —
  현재 우클릭 메뉴는 managed_by 타입을 제외하므로 도달하지 않는다)

기본값 전부 2026-08-17 사용자 확정. 검증: tmp/tests 101 passed·7 skipped,
npm run typecheck 무오류, prettier·ruff format 변경 없음.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-17 17:36:16 +09:00
co-authored by Claude Opus 5
parent 3e9be53e7c
commit 70bfddce1b
3 changed files with 192 additions and 89 deletions
@@ -664,8 +664,13 @@ export function createStructuresSection(callbacks: StructuresCallbacks): Structu
const type = typeMap().get(typeId);
if (!type) return;
// 계곡 통과 시설은 관 지점 정본으로 바로 보낸다(옵션은 추가 후 폼에서).
// BOX암거만 예외로 레지스트리 기본값(본체 2.0×2.0·날개벽 있음 1m/2m/45°)을
// 함께 싣는다 — 폼을 열지 않고 넣어도 하류가 제원을 받는다(2026-08-17 사용자
// 확정). 배관·물넘이·세월교는 부속을 설계자가 고를 몫이라 빈 채로 둔다.
if (type.managed_by) {
callbacks.onPipeAdd(chainageM, { facility: typeId as PipeFacility });
const attributes: FacilityAttributes = { facility: typeId as PipeFacility };
if (typeId === "box_culvert") attributes.options = defaultOptions(type);
callbacks.onPipeAdd(chainageM, attributes);
return;
}
const placement = placementOf(typeId);