Conversation
DynamicLinkRepositoryImpl.createLink()가 ChottuLink의 setSelectedPath("report")를
하드코딩해서 호출하고 있었다. 그런데 이 저장소는 지인 피드백 공유 링크
생성에만 쓰이고 있고("report" 경로는 ChottuLink 대시보드에 인터뷰 리포트
공유용으로 등록된 값), 지인 피드백 딥링크에는 맞지 않는 경로라 매번
createDynamicLink() 호출이 실패했다.
CreateFeedbackShareDynamicLinkUseCase가 이 실패를 조용히 원시 딥링크
(`hilit://feedback/{token}`)로 대체하도록 설계돼 있어 사용자에게는 에러가
드러나지 않았지만, 그 raw 커스텀 스킴 링크는 카카오톡 등 공유 채널에서
탭 가능한 링크로 인식되지 않고 https 폴백도 없어 사실상 동작하지 않는
링크였다 — 이것이 "지인피드백 링크 미동작" 증상의 원인.
setSelectedPath() 호출을 제거해 도메인 기본 경로로 동적 링크를 생성하도록
수정하고, 향후 같은 방식으로 대시보드 설정이 어긋나도 조용히 묻히지
않도록 실패 시 로그를 남기도록 추가.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
hilit://feedback 커스텀 스킴 intent-filter만 등록돼 있고, ChottuLink가 발급하는 실제 공유 링크 도메인(https://hilit.chottu.link)에 대한 App Link intent-filter가 없었다. 그래서 사용자가 공유받은 https 링크를 브라우저에서 열면 OS가 이 앱으로 연결해줄 방법이 없어 항상 브라우저로 떨어졌고, ChottuLink 랜딩 페이지의 JS 리다이렉트(비동기 fetch 이후 커스텀 스킴으로 이동)에만 의존했는데 브라우저에서 신뢰성 있게 앱을 열지 못했다. https://hilit.chottu.link/.well-known/assetlinks.json 에는 이미 이 앱 패키지/서명으로 등록이 끝나 있어(대시보드 쪽은 준비돼 있었음), autoVerify App Link intent-filter를 hilit.chottu.link 도메인으로 추가하기만 하면 됐다. 기기에서 검증해보니 도메인 검증(verified) 즉시 성공하고, https 링크가 브라우저를 거치지 않고 바로 앱을 여는 것을 확인했다. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
link.lastPathSegment 가 null 이 아닌 빈 문자열을 반환하는 경우까지는 막지 못해, 그런 경우 EnterGuestFeedbackUseCase 가 네트워크 호출도 없이 검증 오류로 즉시 실패하고 "앱을 종료한 뒤 링크를 다시 열어주세요" 에러 모달만 뜨는 혼란스러운 UX가 됐다. token != null 을 !token.isNullOrBlank() 로 강화해 애초에 온보딩 화면으로 진입하지 않도록 한다. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
GuestFeedbackEntryResponseDto/도메인 모델/매퍼/Gson adapter/피처 레이어에서 질문 경계(turnLevel·startAt·questionText) 필드와 관련 검증·매핑 로직을 제거한다. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
서버는 GET .../guest/{token}과 POST .../submissions 모두
{"success":true,"data":{...}} 봉투로 응답하는데, GuestFeedbackApi가 리턴 타입을
GuestFeedbackEntryResponseDto/GuestFeedbackSubmitResponseDto로 직접 선언해
Gson 커스텀 어댑터가 최상위 JSON에서 바로 gate 등을 찾다가
"응답 계약을 위반한 필드가 있습니다: gate" 파싱 오류로 실패하고 있었다.
다른 API와 동일하게 ApiResponseDto<T>로 감싸 리턴하고,
GuestFeedbackRemoteDataSourceImpl에서 response.data를 벗겨 반환하도록 수정한다.
data가 비어 있으면 ServerException(SERVER_ERROR)을 던진다.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Contributor
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Contributor
Catalog Preview상태: 🗑️ Preview 제거됨 대상: PR #206 실행: GitHub Actions |
- GuestFeedbackResponseAdapters.kt: 이전 리팩터링에서 호출부만 없어지고 남아있던 미사용 private 함수 requireExplicitNullIfPresent 제거 (detekt UnusedPrivateMember, 파일 함수 개수도 임계값 밑으로 내려감) - GuestFeedbackRemoteDataSourceImpl.kt: 지인 피드백 공유 token을 그대로 찍던 디버그 Log.d 잔재 제거(무관한 태그 "interview", 민감 토큰 평문 로깅) + 파일 전체 들여쓰기를 프로젝트 컨벤션에 맞춰 재정렬(spotless) Co-Authored-By: Claude Sonnet 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.
🚩 연관 이슈
closed #202
📝 작업 내용
{"success":true,"data":{...}}봉투로 오는데,GuestFeedbackApi.enter()/submit()이 리턴 타입을GuestFeedbackEntryResponseDto/GuestFeedbackSubmitResponseDto로 직접 선언해 Gson 커스텀 어댑터가 최상위 JSON에서 바로gate등을 찾다가"응답 계약을 위반한 필드가 있습니다: gate"파싱 오류로 실패하던 문제 수정 (피드백 화면 진입 시 전역 에러 원인)ApiResponseDto<T>로 감싸 리턴하고,GuestFeedbackRemoteDataSourceImpl에서response.data를 벗겨 반환하도록 수정.data가 비어 있으면ServerException(SERVER_ERROR)을 던짐questionBoundaries필드 제거를 함께 정리🏞️ 스크린샷 (선택)
🗣️ 리뷰 요구사항 (선택)
submit도 스웨거 기준 동일한 봉투 구조로 확인했으나,success:false+data채워짐 케이스가 실제로 존재하는지는 서버 스펙만으로 완전히 확정하지 못했습니다. 필요시 확인 부탁드립니다.