Repository navigation
fix: 위치 확보 전 장소 검색이 0건으로 돌아오던 문제 + 경로 에러 코드 매핑 - #377
Merged
Merged
Conversation
## 목적지 검색이 비는 이유
PlaceEndpoint.search가 좌표를 모를 때 lat=0.0&lon=0.0을 보냈다("레거시
실측 규약"). 서버는 이걸 유효한 좌표로 취급해 **결과를 0건으로 돌려준다.**
2026-09-25 실측 — 키워드 '강남역'을 바이어스 좌표만 바꿔가며:
서울시청 (37.5665,126.978) → 20건 (radius 8km)
강남역 옆 → 20건 (radius 7m)
부산 → 20건 (radius 316km)
제주 → 20건 (radius 446km)
(0, 0) → 0건 ← 앱이 보내던 값
lat/lon 생략 → REQ_005 (필수 파라미터)
좌표는 결과 집합이 아니라 거리 표기·정렬에만 쓰인다. 그래서 모를 때는
서비스 지역 중심(서울시청)으로 폴백해도 결과를 잃지 않는다. 생략은 서버가
받지 않으므로 선택지가 아니다.
near가 nil인 구간은 실재한다 — SearchViewModel.currentCoordinate는
prefillDepartureWithCurrentLocation()이 끝나야 채워지고, 검색 화면에
들어가자마자 타이핑하면 그 사이 요청이 전부 (0,0)으로 나간다.
## 빈 결과를 1시간 캐싱하던 문제 (#372에서 내가 넣은 결함)
빈 배열도 성공 응답이라 캐시에 박혔다. 한 번 비어서 온 키워드는 원인이
사라진 뒤에도 TTL 내내 비어 보인다 — 화면이 스스로 회복하지 못한다.
실패를 캐시하지 않는 이유와 같은 이유다.
## 경로 조회의 정상 상태가 에러로 흐르던 문제
2026-09-25 실측:
TRS_011 출발지와 도착지 간 거리가 너무 가깝습니다 (도보권)
TRS_012 서비스 지역이 아닙니다: (129.0415, 35.1151)
normalizedResult가 빈 switch라 둘 다 throw되어 화면에 "검색에 실패했어요"만
떴다 — 사용자는 무엇을 바꿔야 하는지 알 수 없었다. TRS_011 → .noRoute,
TRS_012 → 신설 .outOfServiceRegion(재검색 버튼 없이 "서울·경기·인천에서만
이용 가능" 안내. 같은 목적지로 다시 눌러도 결과가 같으므로).
## 위치 진단 로그
위치가 안 잡히는 증상은 원인이 여럿인데(권한 미결정 대기 / 거부 / 전역 OFF /
스트림 조기 종료) 밖에서는 전부 "출발지가 비어 있다"로 보인다. 업데이트별
플래그를 DEBUG 로그로 남긴다 — 이번 원인 규명이 이 로그로 끝났다.
좌표는 민감 정보라 남기지 않는다.
검증: 3구성 빌드 + Domain 119 · AtchaData 68 · 전 스킴 통과.
시뮬레이터 신규 설치 기행(XCUITest)에서 검색 20건 → 경로 → 등록(204) →
해제(204)까지 끝까지 이어짐.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
목적지 검색이 비는 이유
PlaceEndpoint.search가 좌표를 모를 때lat=0.0&lon=0.0을 보냈다("레거시 실측 규약"). 서버는 이걸 유효한 좌표로 취급해 결과를 0건으로 돌려준다.2026-09-25 실측 — 키워드
강남역을 바이어스 좌표만 바꿔가며:radius(0, 0)← 앱이 보내던 값lat/lon생략REQ_005(필수 파라미터)좌표는 결과 집합이 아니라 거리 표기·정렬에만 쓰인다. 그래서 모를 때 서비스 지역 중심(서울시청)으로 폴백해도 결과를 잃지 않는다. 생략은 서버가 받지 않으므로 선택지가 아니다.
near가 nil인 구간은 실재한다 —SearchViewModel.currentCoordinate는prefillDepartureWithCurrentLocation()이 끝나야 채워지고, 검색 화면에 들어가자마자 타이핑하면 그 사이 요청이 전부(0,0)으로 나간다.빈 결과를 1시간 캐싱하던 문제 (#372에서 제가 넣은 결함)
빈 배열도 성공 응답이라 캐시에 박혔다. 한 번 비어서 온 키워드는 원인이 사라진 뒤에도 TTL 내내 비어 보인다 — 화면이 스스로 회복하지 못한다. 실패를 캐시하지 않는 이유와 같은 이유이고, 아낄 왕복 하나보다 피해가 크다.
경로 조회의 정상 상태가 에러로 흐르던 문제
2026-09-25 실측:
normalizedResult가 빈switch라 둘 다 throw되어 화면에 "검색에 실패했어요"만 떴다 — 사용자는 무엇을 바꿔야 하는지 알 수 없었다.TRS_011→.noRouteTRS_012→ 신설.outOfServiceRegion— 재검색 버튼 없이 "앗차는 현재 서울, 경기, 인천에서만 이용 가능해요". 같은 목적지로 다시 눌러도 결과가 같으므로 재시도를 권하지 않는다조사 중 기각한 가설 2개
고친 것만 적으면 편향이다. 의심했지만 근거가 없어 넣지 않은 것:
liveUpdates()조기 종료 재시도 필요location=true로 정상 도착하고rgeo도 200이었다. 스크린샷에 "스마트서울전시관"이 멀쩡히 떠 있다 — XCUITest가 읽은 버튼label이 placeholder로 고정된 것이고(accessibilityValue에 실제 값이 있다, UIKit 관례대로), 제 측정이 틀렸다. 재시도 코드는 되돌렸다searchRoutes()의 조용한 early return이 "선택해도 아무 일도 안 일어남"을 만든다confirm()이 두 슬롯이 다 찰 때만searchRoutes()를 부르고, 출발지가 없으면 이미 포커스를 출발지로 옮기고 최근 검색을 보여준다. 추가한 빈 상태는 되돌렸다남긴 것: 위치 진단 로그
위치가 안 잡히는 증상은 원인이 여럿인데(권한 미결정 대기 / 거부 / 전역 OFF / 스트림 조기 종료) 밖에서는 전부 "출발지가 비어 있다"로 보인다. 자동 검수 규약도 이걸 "원인 추적이 어렵다" 고 적어 뒀다. 업데이트별 플래그를 DEBUG 로그로 남긴다 — 이번 원인 규명이 정확히 이 로그로 끝났다. 좌표는 민감 정보라 남기지 않는다.
검증
204→ 해제204끝까지🤖 Generated with Claude Code