diff --git a/B06_Section/B06_Section_Cross_Refresh.ts b/B06_Section/B06_Section_Cross_Refresh.ts index 28dee239..8f91e139 100644 --- a/B06_Section/B06_Section_Cross_Refresh.ts +++ b/B06_Section/B06_Section_Cross_Refresh.ts @@ -99,6 +99,30 @@ export async function refreshCrossDesigns(input: CrossRefreshInput): Promise { + const raw = readRockBoundarySession(projectId, routeId) ?? {}; + const offsets = new Map(); + for (const [key, value] of Object.entries(raw)) { + const chainage = Number(key); + if (Number.isFinite(chainage) && typeof value === "number" && Number.isFinite(value)) { + offsets.set(rockKey(chainage), value); + } + } + return offsets; +} + /** * 브라우저 안에서 전 측점을 다시 계산한다(정상 경로). * @@ -127,7 +151,7 @@ function refreshLocally(input: CrossRefreshInput): number[] | null { toDesignProfile(alignment, detail.longitudinal.design_profiles?.[0]), ]; - const rockOffsets = readRockBoundarySession(projectId, input.routeId) ?? {}; + const rockOffsets = readRockOffsets(projectId, input.routeId); const rockDefault = readRockBoundaryDefault(projectId); const updated: number[] = []; @@ -137,7 +161,7 @@ function refreshLocally(input: CrossRefreshInput): number[] | null { const design = previous as unknown as Record; // 암 경계는 세션 조정값 → 저장분 → config 기본값 순 — 서버 // `recompute_designs_for_alignment` 의 우선순위와 같다. - const sessionOffset = rockOffsets[section.chainage_m.toFixed(3)]; + const sessionOffset = rockOffsets.get(rockKey(section.chainage_m)); const storedOffset = design.rock_boundary_offset_m; const rockBoundaryOffsetM = typeof sessionOffset === "number"