Repository navigation
fix(core): 수신자 상세 응답을 디코드하지 못해 수신자 수정 화면이 열리지 않는다 #2155
Copy link
Copy link
Closed
Labels
Description
작업 유형
bug — 버그·오동작
주 담당 모듈
core — 코어
개요
설정 > 수신자 관리 > 수신자 목록에서 수신자를 눌러 수정 화면에 들어가면, GET /users/receivers/{receiverId} 가 200 으로 수신자 정보를 내려주는데도 화면이 "수신자 정보를 불러오지 못했습니다."로 끝난다. 이름·관계·연락처·마지막 인사말이 하나도 채워지지 않아 수신자를 고칠 수 없다. 사후 전달 조건 화면의 마지막 인사말 수정도 같은 수정 화면으로 들어가므로 함께 막힌다.
기준 리비전은 origin/develop f69332d99 다. 2026-09-23 API 36 에뮬레이터에서 QA823 계정으로 dev 서버에 붙여 receiverId 14 로 재현했다. 상세 DTO 는 develop 과 #2120 head 2c7295c3a 가 같다.
재현
- QA823 계정으로 로그인한 뒤 설정 > 수신자 관리 > 수신자 목록에 들어간다. develop 그대로는 fix(setting): 수신자 목록이 200 응답에 수신자가 있는데도 빈 화면으로 그려진다 #2105 로 목록이 비어 있으므로, 목록이 그려지는 fix(setting): 수신자 목록 응답 계약을 맞춰 행 소실을 막는다 (#2105) #2120 빌드에서 들어간다.
- 목록에서 수신자(receiverId 14)를 누른다.
- 수정 화면에 "수신자 정보를 불러오지 못했습니다."가 뜨고 입력칸이 비어 있다. 같은 진입의
GET /api/v1/users/receivers/14는 200 이고, 본문에authCode키가 없다.
원인 지점
core/network/src/main/kotlin/com/afternote/core/network/dto/UserDto.kt:79-90의ReceiverDetailDto가authCode: String을 기본값 없이 받는다(89행). BE 는 Afternote-BE#289(2026-09-08, 카카오톡 초대 기반 수신자 등록)에서 상세와 목록 응답 둘 다에서authCode를 뺐다. 지금 BEReceiverDetailResponse는receiverId·name·relation·phone·email·dailyQuestionCount·timeLetterCount·afterNoteCount·message9개만 내려준다. 필수 키가 없어 디코드가 실패한다.- 같은 DTO 의
relation: String(82행)도 계약과 어긋난다. BE 는 이 필드를 nullable 로 선언했다(미입력 시 null). 목록에서 relation 이 null 로 오는 receiverId 21 은authCode만 고쳐도 이 필드에서 다시 실패한다. feature/setting/.../receiver/ReceiverEditViewModel.kt:40-47은 조회 실패를 원인 구분 없이setting_receiver_load_failed하나로 접는다. 그래서 200 응답의 디코드 실패가 "불러오지 못했다"로 보인다.- fix(setting): 수신자 목록 응답 계약을 맞춰 행 소실을 막는다 (#2105) #2120 은 같은 BE 변경에서 온 목록 DTO(
ReceiverListDto)만 고친다. 상세 응답을 태우는 디코드 테스트는 없다.UserRepositoryImplTest·ReceiverRequestFailureTest의getReceiverDetail은TODO스텁이다.
완료 조건
-
ReceiverDetailDto가 BEReceiverDetailResponse9개 필드와 같은 모양이 된다.authCode를 받지 않고relation은 null 을 받는다. -
authCode가 없는 본문과relation: null인 본문이 각각 디코드되는 회귀 테스트를 둔다. 수정 전 실패를 먼저 확인한다. - 수신자 목록에서 receiverId 14·21 을 눌렀을 때 수정 화면에 저장된 이름·관계·연락처·마지막 인사말이 채워진다.
자식 이슈
No response
참고
- 목록 쪽 같은 원인은 fix(setting): 수신자 목록이 200 응답에 수신자가 있는데도 빈 화면으로 그려진다 #2105(PR fix(setting): 수신자 목록 응답 계약을 맞춰 행 소실을 막는다 (#2105) #2120)다. 두 수정이
UserDto.kt·UserMapper.kt를 함께 만진다. ReceiverDetail.authCode는 develop 프로덕션 코드에서 읽는 곳이 0건이다. fix(setting): 수신자 목록 응답 계약을 맞춰 행 소실을 막는다 (#2105) #2120 은 목록 쪽Receiver.authCode를 모델에 남기고 매퍼에서 빈 문자열로 채웠다.
Reactions are currently unavailable
Activity
github-actions commentedon Sep 23, 2026
bug 이슈는 사이드바 Fields > Priority 로 심각도를 지정해야 합니다. 판정 기준:
값이 비어 있어도 이슈를 닫지는 않습니다. 이 안내는 이슈당 한 번만 답니다.
fix(core): remove obsolete receiver detail authCode (#2155)
test(app): 제거된 수신자 인증 코드 인자를 정리한다 (#2155)