Skip to content

fix(core): 수신자 상세 응답을 디코드하지 못해 수신자 수정 화면이 열리지 않는다 #2155

Closed

Description

@OnlyReadOneBook

작업 유형

bug — 버그·오동작

주 담당 모듈

core — 코어

개요

설정 > 수신자 관리 > 수신자 목록에서 수신자를 눌러 수정 화면에 들어가면, GET /users/receivers/{receiverId} 가 200 으로 수신자 정보를 내려주는데도 화면이 "수신자 정보를 불러오지 못했습니다."로 끝난다. 이름·관계·연락처·마지막 인사말이 하나도 채워지지 않아 수신자를 고칠 수 없다. 사후 전달 조건 화면의 마지막 인사말 수정도 같은 수정 화면으로 들어가므로 함께 막힌다.

기준 리비전은 origin/develop f69332d99 다. 2026-09-23 API 36 에뮬레이터에서 QA823 계정으로 dev 서버에 붙여 receiverId 14 로 재현했다. 상세 DTO 는 develop 과 #2120 head 2c7295c3a 가 같다.

재현

  1. QA823 계정으로 로그인한 뒤 설정 > 수신자 관리 > 수신자 목록에 들어간다. develop 그대로는 fix(setting): 수신자 목록이 200 응답에 수신자가 있는데도 빈 화면으로 그려진다 #2105 로 목록이 비어 있으므로, 목록이 그려지는 fix(setting): 수신자 목록 응답 계약을 맞춰 행 소실을 막는다 (#2105) #2120 빌드에서 들어간다.
  2. 목록에서 수신자(receiverId 14)를 누른다.
  3. 수정 화면에 "수신자 정보를 불러오지 못했습니다."가 뜨고 입력칸이 비어 있다. 같은 진입의 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 를 뺐다. 지금 BE ReceiverDetailResponse 는 receiverId·name·relation·phone·email·dailyQuestionCount·timeLetterCount·afterNoteCount·message 9개만 내려준다. 필수 키가 없어 디코드가 실패한다.
  • 같은 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 가 BE ReceiverDetailResponse 9개 필드와 같은 모양이 된다. authCode 를 받지 않고 relation 은 null 을 받는다.
  • authCode 가 없는 본문과 relation: null 인 본문이 각각 디코드되는 회귀 테스트를 둔다. 수정 전 실패를 먼저 확인한다.
  • 수신자 목록에서 receiverId 14·21 을 눌렀을 때 수정 화면에 저장된 이름·관계·연락처·마지막 인사말이 채워진다.

자식 이슈

No response

참고

Activity

  1. added
    bugSomething isn't working
    area:core공용 코어·네트워크 기능 영역
    on Sep 23, 2026
  2. github-actions commented on Sep 23, 2026

    @github-actions
    Contributor

    bug 이슈는 사이드바 Fields > Priority 로 심각도를 지정해야 합니다. 판정 기준:

    • Urgent: 치명 — 크래시·데이터 소실·보안 무력화·핵심 경로 차단·가짜 성공
    • High: 심각 — 실패·틀린 값의 정상 위장, 핵심 기능 무동작
    • Medium: 불편 — 우회로가 있는 오동작·틀린 표시, 핵심 흐름은 유지
    • Low: 경미 — 문구·정렬·마감 품질 흠, 기능 영향 없음

    값이 비어 있어도 이슈를 닫지는 않습니다. 이 안내는 이슈당 한 번만 답니다.

  3. added
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Sep 23, 2026
  4. removed
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Sep 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

area:core공용 코어·네트워크 기능 영역bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions