fix(B06): 유입측 다단의 좌우 조작 부호를 바로잡고 통나무·목재틀·바자 한계를 2m로 둔다

- outwardOf가 role === "inlet"만 유입측으로 봐서 유입측 다단(bextra)이 반대쪽
  부호로 움직였다. inletSideRole()로 bextra를 유입측에 포함한다
- revetHeightLimit: 통나무·목재틀·바자를 2.0m로 명시한다(종전에는 함수 기본값
  3.0으로 떨어졌다 — 2026-08-29 사용자 확정)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-29 10:27:32 +09:00
co-authored by Claude Opus 5
parent a544436c5f
commit 35547e551d
2 changed files with 6 additions and 1 deletions
@@ -79,12 +79,14 @@ export const REVET_EMBED_DEPTH_M = 0.5;
* 돌 **찰쌓기 3.0m 이하**, 돌 **메쌓기 2.0m 이하**(교본 7-3 돌흙막이 기준),
* 돌망태 2m 정도. 큰돌쌓기는 총높이 한계 없음(1일 시공 1.5m 제한만).
* 초과 시 콘크리트 옹벽 등 상위 구조물 검토 대상이다.
* 통나무·목재틀·바자는 지식DB에 수치가 없어 **2.0m**로 둔다(2026-08-29 사용자 확정).
*/
export function revetHeightLimit(form: string | null | undefined): number {
if (!form) return 3.0;
if (form.includes("메")) return 2.0;
if (form.includes("찰")) return 3.0;
if (form.includes("돌망태")) return 2.0;
if (form.includes("통나무") || form.includes("목재") || form.includes("바자")) return 2.0;
if (form.includes("콘크리트")) return 5.0; // 프로젝트 확정값 — materialLimit과 동일
return 3.0;
}
+4 -1
View File
@@ -640,13 +640,16 @@ export function createCrossSectionCard(
setChipActive = readout.setActive;
// 구조물 조정은 도면 안 오버레이 창(2026-08-21). 화면 좌(◀) = offset 증가 —
// 벽 기준 이동량(outward 부호)으로 환산해 넘긴다.
// 유입측 벽 — 기준벽과 유입측 다단(bextra). 빼먹으면 그 벽만 좌우가 뒤집힌다.
const inletSideRole = (role: RevetKey): boolean =>
role === "inlet" || role.startsWith("bextra");
const outwardOf = (role: RevetKey): number =>
// 독립 기슭막이는 배관 유입/유출과 무관 — 정본 설치 측(좌 = +offset)으로 부호를 잡는다.
role === "own"
? section.revetment?.side === "우"
? -1
: 1
: ((section.uphill_side ?? "left") === "left") === (role === "inlet")
: ((section.uphill_side ?? "left") === "left") === inletSideRole(role)
? 1
: -1;
const heightOfWall = (key: RevetKey): number => culvertWallSpecs.get(key)?.height ?? 0;