diff --git a/apps/sn/app/(map-layout)/map/page.tsx b/apps/sn/app/(map-layout)/map/page.tsx index 151805859..853fe2b1d 100644 --- a/apps/sn/app/(map-layout)/map/page.tsx +++ b/apps/sn/app/(map-layout)/map/page.tsx @@ -2703,7 +2703,7 @@ const Map = () => { () => gisEdit.changes.filter(isVisibleGisEditSessionChange), [gisEdit.changes], ); - const shouldShowGisEditSession = gisEdit.isEditMode || gisEditVisibleSessionChanges.length > 0; + const shouldShowGisEditSession = gisEdit.isEditMode; const isGisEditSessionInlineVisible = shouldShowGisEditSession && gisEditSessionView === "inline"; const gisEditSessionSnapshot = useMemo(() => ({ isEditMode: gisEdit.isEditMode, @@ -3022,7 +3022,7 @@ const Map = () => { }, [gisEdit.isEditMode, gisEditDetailChange, gisEditDetailChangeId]); useEffect(() => { - if (!(gisEdit.isEditMode || gisEditVisibleSessionChanges.length > 0)) return; + if (!gisEdit.isEditMode) return; syncGisEditSessionPopup(); }, [gisEdit.isEditMode, gisEditVisibleSessionChanges.length, syncGisEditSessionPopup]); @@ -5883,9 +5883,14 @@ const Map = () => { // GIS 편집 진입 시에는 화면 안 인라인 세션을 우선 표시하고, 윈도우 팝업은 사용자가 명시적으로 연다. const handleToggleGisEdit = useCallback(() => { + if (gisEdit.isEditMode) { + closeGisEditSessionPopup(); + } else { + setGisEditSessionView("inline"); + } gisEdit.toggleEditMode(); setIsOpen(false); - }, [gisEdit]); + }, [closeGisEditSessionPopup, gisEdit]); const handleOpenGisEditSessionPopup = useCallback(() => { const popup = openGisEditSessionPopup(); diff --git a/apps/sn/docs/작업검증/SFR-012-003-하수관로편집/001-qa-SFR-012-003-하수관로편집-통합검증계획.md b/apps/sn/docs/작업검증/SFR-012-003-하수관로편집/001-qa-SFR-012-003-하수관로편집-통합검증계획.md index a174d9f9b..2fa3712c3 100644 --- a/apps/sn/docs/작업검증/SFR-012-003-하수관로편집/001-qa-SFR-012-003-하수관로편집-통합검증계획.md +++ b/apps/sn/docs/작업검증/SFR-012-003-하수관로편집/001-qa-SFR-012-003-하수관로편집-통합검증계획.md @@ -232,3 +232,10 @@ - 세션 확장과 팝업 전환에도 도구바 좌표가 유지되는지 확인한다. 4. 팝업 왕복 - 팝업 열기 시 인라인 숨김, `화면에서 보기`와 직접 닫기 시 인라인 복원을 재확인한다. + +## 11. 2026-07-15 GIS 편집 토글 종료 회귀 검증 + +1. 변경분이 있는 상태에서 분석도구 `GIS 편집`을 두 번째 클릭한다. +2. 하단 GIS 편집 바와 인라인 편집 세션이 함께 사라지는지 확인한다. +3. 팝업 뷰 상태에서 GIS 편집을 끄면 팝업도 닫히는지 확인한다. +4. GIS 편집을 다시 켜면 기존 변경분이 인라인 세션에 복원되는지 확인한다. diff --git a/apps/sn/docs/작업검증/SFR-012-003-하수관로편집/002-qa-SFR-012-003-하수관로편집-통합검증결과.md b/apps/sn/docs/작업검증/SFR-012-003-하수관로편집/002-qa-SFR-012-003-하수관로편집-통합검증결과.md index 7c94046b8..93697c3fe 100644 --- a/apps/sn/docs/작업검증/SFR-012-003-하수관로편집/002-qa-SFR-012-003-하수관로편집-통합검증결과.md +++ b/apps/sn/docs/작업검증/SFR-012-003-하수관로편집/002-qa-SFR-012-003-하수관로편집-통합검증결과.md @@ -746,3 +746,16 @@ - 인라인·윈도우 팝업 상호 전환 - 변경 카드 제목/선택 표시 한 줄 노출 및 안내 문구 가독성 - 결론: SFR-012-003 프론트 유지보수 수동 검증 완료. + +### 2.30 2026-07-15 GIS 편집 토글 종료 보정 결과 + +- 인라인 세션 표시와 팝업 sync가 `gisEdit.isEditMode`를 기준으로 동작하는 것을 정적으로 확인했다. +- 편집 종료 시 팝업 닫기, 재진입 시 inline 복원 처리를 확인했다. +- 변경분 배열을 비우지 않아 재진입 복원 계약이 유지된다. +- `git diff --check` 통과. 실제 지도에서 11절 시나리오 수동 검증이 필요하다. + +### 2.31 2026-07-15 GIS 편집 토글 종료 사용자 수동 검증 완료 + +- 사용자가 실제 지도에서 GIS 편집 두 번째 클릭 시 하단 도구바와 인라인 세션이 함께 사라지는 것을 확인했다. +- 다시 GIS 편집 진입 시 기존 변경분과 인라인 세션이 복원되는 것을 확인했다. +- 결론: 추가 회귀 보정까지 사용자 수동 검증 완료. diff --git a/apps/sn/docs/작업내용/SFR-012-003-하수관로편집/001-fe-SFR-012-003-하수관로편집-통합구현기록.md b/apps/sn/docs/작업내용/SFR-012-003-하수관로편집/001-fe-SFR-012-003-하수관로편집-통합구현기록.md index ea44990df..d764b6ba6 100644 --- a/apps/sn/docs/작업내용/SFR-012-003-하수관로편집/001-fe-SFR-012-003-하수관로편집-통합구현기록.md +++ b/apps/sn/docs/작업내용/SFR-012-003-하수관로편집/001-fe-SFR-012-003-하수관로편집-통합구현기록.md @@ -480,3 +480,11 @@ - `getChangeSummary()`의 완료형 문구를 짧은 행동 안내형으로 변경했다. - 추가 위치 확인, 이동 위치 조정, 점 이동/선분 추가, 삭제 대상 확인, 상세정보 확인을 한 줄 길이로 제공한다. - 카드 레이아웃과 원본 `change.summary` 데이터는 변경하지 않았다. + +### 4.31 2026-07-15 GIS 편집 종료 시 세션 UI 동시 숨김 + +- `map/page.tsx`의 `shouldShowGisEditSession`을 변경분 존재 여부가 아닌 `gisEdit.isEditMode`만 사용하도록 변경했다. +- 편집 종료 시 `closeGisEditSessionPopup()`을 호출해 열린 세션 팝업도 닫는다. +- 편집 재진입 시 `gisEditSessionView`를 `inline`으로 복원한다. +- 팝업 sync effect도 편집 모드가 꺼져 있으면 실행하지 않는다. +- `useGisEdit`의 변경분 배열은 유지하므로 다시 진입하면 기존 변경 카드가 복원된다.