fix(B05,B06): 독립 기슭막이 폼에서 단 수를 뺀다

조정창에서 옮겨 오는 [추가 기슭막이(단)] 행과 같은 값이라 두 벌이었다.
단 수 정본은 횡단 설계 patch(extra_wall_counts)이고 조작은 그 행이 한다 —
폼 칸과 그 값을 나르던 배선(tierCount·setTierCount)을 함께 걷어낸다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-29 19:17:07 +09:00
co-authored by Claude Opus 5
parent 8b385a62b0
commit 2ee71eff19
4 changed files with 8 additions and 55 deletions
@@ -52,10 +52,6 @@ export interface B06StructuresPanelDeps {
wallForm?: (chainageM: number, role: "inlet" | "outlet") => string | null;
/** 그 측점에서 유입·유출 벽이 각각 좌·우 어느 쪽인가(독립 기슭막이 칸 이름표). */
wallSideLabels?: (chainageM: number) => { inlet: "좌" | "우"; outlet: "좌" | "우" } | null;
/** 폼의 단 수를 다단 채널에 반영한다 — 조정창에서 세우던 것과 같은 자리. */
setTierCount?: (chainageM: number, role: "inlet" | "outlet", tiers: number) => void;
/** 지금 선 단 수(기준벽 포함) — 폼이 도면과 같은 값을 보이게 한다. */
tierCount?: (chainageM: number, role: "inlet" | "outlet") => number | null;
/** 측점 간격(m) — 측점번호+잔여거리 환산용. */
stationInterval: () => number;
/** 목록·폼에서 고른 시설의 측점 카드를 선택·스크롤한다. */
@@ -117,7 +113,6 @@ function withSpecDefaults(
chainageM: number,
wallHeight?: (chainageM: number, role: "inlet" | "outlet") => number | null,
wallForm?: (chainageM: number, role: "inlet" | "outlet") => string | null,
tierCount?: (chainageM: number, role: "inlet" | "outlet") => number | null,
): Record<string, string | number> | undefined {
const owner = detail?.cross_sections.find(
(section) => Math.abs(section.chainage_m - chainageM) < PIPE_MATCH_M,
@@ -144,9 +139,6 @@ function withSpecDefaults(
const drawnHeight = wallHeight?.(chainageM, prefix);
if (drawnHeight != null) merged[`${prefix}_revet_height_m`] = Number(drawnHeight.toFixed(1));
else put(`${prefix}_revet_height_m`, side.revet_height_m);
// 단 수는 다단 채널이 정본이다 — 폼이 그 값을 그대로 보인다.
const tiers = tierCount?.(chainageM, prefix);
if (tiers != null) merged[`${prefix}_revet_tiers`] = tiers;
put(`${prefix}_revet_length_m`, side.revet_length_m);
put(`${prefix}_revet_before_m`, side.revet_before_m);
put(`${prefix}_revet_after_m`, side.revet_after_m);
@@ -210,10 +202,6 @@ export function createB06StructuresPanel(deps: B06StructuresPanelDeps): B06Struc
}
// 단 수는 옵션이자 **조작 채널**이다 — 조정창에서 세우던 그 자리로 보내야
// 횡단도에 단이 선다(2026-08-30 사용자 지시 3: 배수관 측점과 동일하게).
for (const role of ["inlet", "outlet"] as const) {
const tiers = Number(patch[`${role}_revet_tiers`]);
if (Number.isFinite(tiers)) deps.setTierCount?.(fromChainageM, role, tiers);
}
// 옵션은 **옮기기 전 자리**로 예약한다 — 저장 시점의 관 목록이 그 자리 기준이다.
deps.queuePipeOptions(fromChainageM, patch as Record<string, number | string>);
deps.applyPipeOptions?.(fromChainageM, patch as Record<string, number | string>);
@@ -277,7 +265,6 @@ export function createB06StructuresPanel(deps: B06StructuresPanelDeps): B06Struc
pipe.chainage_m,
deps.wallHeight,
deps.wallForm,
deps.tierCount,
),
design_flow_m3s: null,
}));
@@ -309,7 +296,6 @@ export function createB06StructuresPanel(deps: B06StructuresPanelDeps): B06Struc
hit.chainage_m,
deps.wallHeight,
deps.wallForm,
deps.tierCount,
);
section.setPipeFacilities(pipeFacilities);
}