feat(B05·B06): 배수관 측점 정본화 · 코리도 단차 제거 · 인접 측점 기슭막이 링크
3D 예상형상은 종단·횡단 확정 뒤의 최종 산출물이고 3D 쪽 편집 경로는 없다 (2026-08-24 사용자 확정). 그런데 구조물(비정규) 측점은 횡단 정본 자체가 없어 조회할 때마다 프리뷰 기본값이 재계산됐고, 조정창 조작값은 세션에서 사라졌다. 정본 경로를 열고, 그 위에서 코리도 단차를 걷어냈다. ① 구조물 측점 정본화 — 확정·임시저장이 종단 정본 stations 중 DB 행이 없는 측점을 대상에 넣어 upsert. cross_sections 19 → 23행. ② 조정창 조작값 정본화 — 기슭막이 4축(x·d·h·m)·다단 단 수를 design.revet_adjust / extra_wall_counts로 저장하고, 3D culvertLayoutOf가 그 값을 기하 입력으로 쓴다. 카드 우선순위는 세션 → 정본 → 자동. ③ 노폭 연장의 노견 편입 — PIECE_COLS.shoulder 2→3으로 원 노견 끝 꺾임을 남기고, 조기 return을 없애 확폭이 구조물 구간 내내 유지되게 했다. ④ 종단 기울기 반영 — 구조물 구간 복사 단면에 계획고 차이를 전량 얹는다. 노견 표고 단차 0.49~0.61m 제거. ⑤ 접속 테이퍼 — 구간 경계를 제어점으로 세워 "복사 vs 보간" 두 규칙을 하나로 통합. 노폭 3.0m·성토비탈 8.1m 단차 제거. 접속 길이 = 인접 측점까지. 제어점 생성은 B05_Profile_UI_Corridor_Frames.ts로 분리(Build 699 → 635줄). ⑥ 인접 측점 링크 — 기슭막이 연장(기본 10m)이 덮는 옆 측점 횡단도에도 소유 측점 단면을 계획고 차이만 얹어 그린다. 요소별 연장 판정(관·집수정 제외), 표시 전용. BUILD_VERSION 11 → 14 (저장 코리도 만료). tsc/ruff/prettier 통과, pytest 192 passed (기존 실패 1건 유지). 작업이력·자체검증 기록: docs/raw/PLAN.md §4-8. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -26,6 +26,7 @@ import {
|
||||
import { showToast } from "@ui/ui_template_elements";
|
||||
import { appendCulvertOverlay } from "./B06_Section_UI_Cross_Culvert";
|
||||
import { computeCardCulvert, culvertRequiredHalfWidth } from "./B06_Section_UI_Cross_Culvert_Wire";
|
||||
import type { CulvertLink } from "./B06_Section_UI_Cross_Culvert_Wire";
|
||||
import type {
|
||||
ExtraWallControl,
|
||||
InletStructureControl,
|
||||
@@ -119,7 +120,12 @@ export function createCrossSectionCard(
|
||||
inletStructure?: InletStructureControl,
|
||||
/** 유출측 추가 기슭막이 개수 제어(2026-08-22). */
|
||||
extraWalls?: ExtraWallControl,
|
||||
/** 옆 측점 구조물이 이 측점까지 넘어온 경우의 링크(2026-08-24). 표시 전용. */
|
||||
culvertLink?: CulvertLink,
|
||||
): CrossCardElement {
|
||||
// 링크 카드 = 구조물이 옆 측점에 서 있고 그 연장이 여기까지 온 경우. 그림만 얹고
|
||||
// 선택·조정은 막는다 — 조작값은 소유 측점 하나에서만 관리해야 한다.
|
||||
const isLinkedCulvert = !section.culvert && !!culvertLink;
|
||||
// 실효 표시 반폭 — 개별값 > 전역값(2026-08-06). 절·성토선이 원지반과 만나는 지점
|
||||
// (교차점)이 반폭 밖이면 **이 카드만** 자동 줌아웃한다(2026-08-22, 판정 기준 개편
|
||||
// 2026-08-23: 배수관용 5m 사면 규칙 대신 실제 교차점 = toeFitHalfWidth).
|
||||
@@ -385,6 +391,7 @@ export function createCrossSectionCard(
|
||||
revetOffset,
|
||||
inletStructure,
|
||||
extraWalls,
|
||||
culvertLink,
|
||||
);
|
||||
// 포장층 → 설계선 → 암 경계선 순으로 겹쳐, 설계선이 포장 박스 위에 오게 한다.
|
||||
appendPavementOverlay(plotLayer, section.design, x, toDisplayY);
|
||||
@@ -407,9 +414,9 @@ export function createCrossSectionCard(
|
||||
);
|
||||
}
|
||||
// 배수관 세트 — 조정창이 쓸 카드 상태를 여기서 받아 둔다(2026-08-19).
|
||||
culvertPipeLengthM = culvertLayout?.pipe.lengthM ?? null;
|
||||
culvertInletIsBasin = !!culvertLayout?.basin;
|
||||
if (culvertLayout) {
|
||||
culvertPipeLengthM = isLinkedCulvert ? null : (culvertLayout?.pipe.lengthM ?? null);
|
||||
culvertInletIsBasin = !isLinkedCulvert && !!culvertLayout?.basin;
|
||||
if (culvertLayout && !isLinkedCulvert) {
|
||||
culvertInletOptions = culvertLayout.inletOptions;
|
||||
culvertExtraState = {
|
||||
canAdd: culvertLayout.outletFill.addable,
|
||||
@@ -445,7 +452,8 @@ export function createCrossSectionCard(
|
||||
culvertLayout,
|
||||
x,
|
||||
toDisplayY,
|
||||
revetOffset ? toggleRevet : undefined,
|
||||
revetOffset && !isLinkedCulvert ? toggleRevet : undefined,
|
||||
isLinkedCulvert,
|
||||
);
|
||||
if (activeRevet) setRevetActive(activeRevet);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user