Skip to content

fix(#202): Guest Feedback API 응답 봉투(success/data) 파싱 오류 수정 - #206

Merged
lyh5427 merged 6 commits into
developfrom
fix/#202
Aug 22, 2026
Merged

fix(#202): Guest Feedback API 응답 봉투(success/data) 파싱 오류 수정#206
lyh5427 merged 6 commits into
developfrom
fix/#202

Conversation

@lyh5427

@lyh5427 lyh5427 commented Aug 22, 2026

Copy link
Copy Markdown
Collaborator

🚩 연관 이슈

closed #202

📝 작업 내용

  • 서버 응답이 {"success":true,"data":{...}} 봉투로 오는데, GuestFeedbackApi.enter()/submit()이 리턴 타입을 GuestFeedbackEntryResponseDto/GuestFeedbackSubmitResponseDto로 직접 선언해 Gson 커스텀 어댑터가 최상위 JSON에서 바로 gate 등을 찾다가 "응답 계약을 위반한 필드가 있습니다: gate" 파싱 오류로 실패하던 문제 수정 (피드백 화면 진입 시 전역 에러 원인)
  • 다른 API와 동일하게 ApiResponseDto<T>로 감싸 리턴하고, GuestFeedbackRemoteDataSourceImpl에서 response.data를 벗겨 반환하도록 수정. data가 비어 있으면 ServerException(SERVER_ERROR)을 던짐
  • (선행 커밋) 기존 작업 중이던 questionBoundaries 필드 제거를 함께 정리

🏞️ 스크린샷 (선택)

🗣️ 리뷰 요구사항 (선택)

  • submit도 스웨거 기준 동일한 봉투 구조로 확인했으나, success:false + data 채워짐 케이스가 실제로 존재하는지는 서버 스펙만으로 완전히 확정하지 못했습니다. 필요시 확인 부탁드립니다.

lyh5427 and others added 5 commits August 18, 2026 23:41
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>
@coderabbitai

coderabbitai Bot commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: a6cf3059-450a-42a5-b136-b5ebcdce7426


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

github-actions Bot added a commit that referenced this pull request Aug 22, 2026
@github-actions

github-actions Bot commented Aug 22, 2026

Copy link
Copy Markdown
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>
github-actions Bot added a commit that referenced this pull request Aug 22, 2026
@lyh5427
lyh5427 merged commit 47ac076 into develop Aug 22, 2026
3 checks passed
@lyh5427
lyh5427 deleted the fix/#202 branch August 22, 2026 03:45
github-actions Bot added a commit that referenced this pull request Aug 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FIX] 피드백 화면 진입시 전역 에러 발생

1 participant