fix(387-4b): 갈아끼운 상세 cross 한 번 더 · 다시 셈 앞 관 제원 형상 규칙으로 — B05 만 연 면적 = B06

- 저장 노선 측점을 갈아끼운 뒤 묶음이 다 돈 다음 cross 한 번 더(그 차례 cross 는 옛 상세 · 옛 화면 선을 봄)
- 다시 셈 창구 앞에서 초안 형상을 다시 얹음(B06 폼 되보내기가 관 제원에 옵션 값을 그대로 써 최소 높이 · 집수정 쪽 칸이 서버와 갈림)
- 화면(검증_sub4) B05 만 연 절토 · 성토 합 = B06 연 뒤 442.3726 · 824.768 · 관 옵션 2 → 2.1 뒤도 443.2174 같음

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014utrjfoW831Vc5wJUd13kL
This commit is contained in:
2026-10-17 19:35:29 +09:00
co-authored by Claude Opus 5.5
parent 111dd6a1d0
commit 9d3e6b2421
4 changed files with 38 additions and 4 deletions
+21
View File
@@ -171,9 +171,30 @@ export async function swapSectionStations(
if (cache.get(key) !== swap.detail) return null; // 그 사이 다른 갈아끼움 · 새로 받음
emitSwap(swap.detail, swap.moves); // 세션 값 옮김 · 다시 그림(어느 보기든)
listeners.get(key)?.forEach((fn) => fn(swap.detail, swap.moves));
recrossSaved(projectId, key, swap.detail);
return { detail: swap.detail, moves: swap.moves };
}
/** 저장 노선 측점을 갈아끼움 — 그 차례 cross 는 옛 상세를 봐서 새 상세 설계 · 면적이 안 셈 → 묶음이 다 돈 뒤(새 측점
* 종단 · 화면 선이 선 뒤 · 그 전에 세면 계획고 0.5 mm 갈림) cross 한 번 더(387-4b · B05 만 연 면적 = B06). 노선 초안
* 동안은 묶음 새 노선 상세가 맡음. 묶음은 늦게 불러옴(가게 ↔ 묶음 순환 없음). */
function recrossSaved(projectId: string, key: string, detail: SectionDetailResponse): void {
void Promise.all([
import("../A00_Common/design/design_pipeline_cross"),
import("../A00_Common/design/design_pipeline_page"),
])
.then(async ([cross, page]) => {
await page.reconcilePagePipeline(projectId);
// 그 사이 다른 상세 · 다시 셈 창구 없음(묶음만 · 시험) · 노선 초안 = 안 부탁
if (cache.get(key) !== detail) return;
if (!page.pipelineOwnsCross(projectId) || page.pagePipeline(projectId)?.input("route"))
return;
cross.forceCross();
page.pipelineCross(projectId);
})
.catch(() => undefined);
}
/** 노선 초안 전 상태(349-0o) — 상세(초안 전 객체 그대로 · 되돌리면 캐시) · 측점 열쇠 · 측점 열쇠 칸 다섯(횡단 초안). */
export interface SectionHold {
detail: SectionDetailResponse;