fix(B05): 임시 배치 자기 삭제·설계유량 미도착 — 헤드 브라우저 테스트로 확정

Playwright 헤드 테스트(사용자 동석)로 잡은 두 버그:

1. 임시 배치 자기 삭제: 관 추가 직후 전역 선택 동기화에서 투영 측점이 아직 없어
   사이드에 null(해제)이 전달 → 해제=임시 취소 규칙에 걸려 방금 넣은 관을 즉시
   지웠다. 투영 측점이 없어도 누가거리를 그대로 넘기도록 수정(Selection.ts).
2. 월류 높이 미계산: 세부유역 재계산 완료 후 선택 통지가 조용히 끝나 폼이
   설계유량을 못 받았다. setPipeFacilities의 임시 관 추적 지점에서
   setDesignFlow로 직접 반영.

검증(테스트 프로젝트, 화면 확인): 섹션 순서·경로계산 비활성·옵션 잠금/해제 시점·
임시 배치(3+5.0)·삭제/리셋 취소·[추가] 확정·물넘이 월류폭 5m 기본·월류 높이
0.07m 자동(설계유량 1.118㎥/s)·미만 입력 보정·초과 입력 허용·목록 재클릭 해제
전부 통과.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-18 19:14:05 +09:00
co-authored by Claude Opus 5
parent 47fa05abd3
commit 4b504f2e2c
2 changed files with 8 additions and 1 deletions
+4 -1
View File
@@ -97,7 +97,10 @@ export function createSelectionSync(ports: SelectionSyncPorts): SelectionSync {
try {
ports.selectMarker(id);
ports.selectGraph(id);
ports.selectSidebar(matched ? matched.chainage_m : null);
// 투영 측점이 아직 없어도(방금 넣은 임시 관 — 재계산 전) 누가거리는 그대로
// 넘긴다. null을 넘기면 사이드가 "해제"로 받아 임시 배치를 스스로 취소한다
// (2026-08-18 임시 배치 자기 삭제 버그).
ports.selectSidebar(matched ? matched.chainage_m : chainageM);
// 유역·마커 어느 쪽에서 왔든 시설 폼도 그 관을 연다(투영 측점이 없어도
// 누가거리로 근사 매칭 — Drainage 쪽이 못 찾으면 해제된다).
ports.selectPipeForm?.(matched ? matched.chainage_m : chainageM);
@@ -728,6 +728,10 @@ export function createStructuresSection(callbacks: StructuresCallbacks): Structu
if (hit) {
tempPipeChainage = hit.chainage_m;
if (selectedPipeChainage !== null) selectedPipeChainage = hit.chainage_m;
// 재계산이 끝나 도착한 담당 유역 설계유량을 입력 중인 폼에 반영한다 —
// 물넘이·세월교 월류 높이가 이 값으로 계산된다(2026-08-18 진단: 재계산
// 후 선택 통지가 조용히 끝나 폼이 유량을 못 받던 문제).
facilityOptions.setDesignFlow(hit.design_flow_m3s ?? null);
} else {
// 임시 배치 관이 재계산에서 사라졌다 — 임시 상태만 정리(관은 이미 없다).
tempPipeChainage = null;