fix(B06): 독립 기슭막이 좌우 로직을 성토 경로 하나로 통일한다

이관 뒤 독립 기슭막이 벽 역할이 uphill_side로 정해져, 고른 쪽이 상단이면
유입 역할(집수정 후보·placeInletWall·다단 없음), 하단이면 유출 역할
(성토부선+buildExtrasAt)을 타서 좌우 동작이 갈렸다. 새 기하 코드를 만들지
않고 이미 있는 유출 경로 인자를 유입 쪽에도 넘겨 재사용한다.

- Const: revetHeightLimit 콘크리트 4.0 → 5.0 (materialLimit과 통일)
- Geom: hidden_pipe면 basinReason null, 유입 배치에 requireCrossing 전달,
  basinExtras 채널을 유입 벽 성토부선·다단으로 사용, inletFill 생략
- Solve: placeInletWall이 requireCrossing을 통과시킨다(기본 false 유지)
- Wire: 링크 카드에서 hidden_pipe면 유입측 다단·성토부선을 벽 연장에 맞춰 유지
- Panel/View_Structure: hiddenPipe deps 추가 — 집수정 형식 숨김, 유입 벽에도
  단 수 행 표시
- Culvert: hidden_pipe의 basinFill 툴팁 이름을 "유입부"로

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-29 09:34:45 +09:00
co-authored by Claude Opus 5
parent 5142bdde9b
commit c0bebe951d
7 changed files with 68 additions and 32 deletions
@@ -487,9 +487,11 @@ export function placeInletWall(input: {
toeOffset: number;
limitOffset: number;
};
/** 매몰-무교차 자리 금지(유출 벽 규칙) — 독립 기슭막이는 유입도 같은 규칙을 탄다. */
requireCrossing?: boolean;
}): PipeWallPlacement {
const place = (adjust: WallAdjust): PipeWallPlacement =>
placePipeWall({ ...input, adjust, requireCrossing: false });
placePipeWall({ ...input, adjust, requireCrossing: input.requireCrossing === true });
let placed = place(input.adjust);
const guard = input.outletGuard;
if (!guard) return placed;