Skip to content

수신자 목록 0건·검색 결과 0건에 안내 없이 빈 화면 #556

Closed

Description

@1hyok

📜 Overview (Required)

설정 → 수신자 목록에서 등록된 수신자가 0명이거나 검색 결과가 0건일 때 안내 없이 빈 화면이 된다 (2026-07-28 코드 QA).

실측
ReceiverListScreen.kt:119-127 — LazyColumn { items(items, key = …) { … } } 만 있고 빈 목록 분기가 없다. items 는 검색어로 필터된 결과(:55-58)라, 검색 결과 0건에서도 동일하게 빈 화면이 된다.

수정 방향: 목록 0건 / 검색 결과 0건 각각에 빈 상태 안내를 표시한다.

실기기 재현 — 수신자 0건:

Image

📌 Child Issue(Optional)

No response

📍 Note (Optional)

Activity

  1. 1hyok commented on Jul 28, 2026

    @1hyok
    CollaboratorAuthor

    2026-07-28 12:27 에뮬 런타임 재현 확인 — 수신자 0건 상태에서 검색창·자음 인덱스·하단 버튼만 남고 안내 문구가 없습니다.

    추가로, 같은 컴포넌트를 쓰는 타임레터 작성 → 수신인 선택 화면도 동일하게 0건 안내가 없습니다(12:33 확인). 그 화면에는 수신자를 새로 추가할 진입점도 없어, 수신자가 0명이면 설정으로 나가 등록하기 전까지 타임레터 작성을 진행할 수 없습니다. 빈 상태 문구에 등록 경로를 함께 안내하면 좋겠습니다.

  2. added theissue type on Jul 29, 2026
  3. 1hyok commented on Jul 29, 2026

    @1hyok
    CollaboratorAuthor

    시안 대조 결과 — 빈 상태는 시안에 없습니다 (2026-07-29 Figma 실측).

    수신인 목록 시안 5개 프레임을 모두 열었는데, 전부 목록이 채워진 상태만 그려져 있습니다. 0건·검색 결과 0건 상태는 시안 미정의입니다.

    따라서 이 이슈의 빈 상태 문구는 디자이너 확정이 선행돼야 합니다. 본문에 적어 둔 노션 Android-DE 확정 대기 "목록 에러 상태·필터 결과 0건" 과 같은 갈래로 묶는 게 맞습니다.

    함께 확인된 것 (별건):

  4. 1hyok commented on Jul 29, 2026

    @1hyok
    CollaboratorAuthor

    시안 확정 질의는 이 이슈 담당 몫으로 남깁니다.

    위 대조 결과대로 수신인 목록의 0건·검색 결과 0건 빈 상태는 시안에 정의돼 있지 않습니다. 구현 전에 디자이너 확정이 선행돼야 하는데, 제 담당 화면이 아니라 대신 질의하지 않고 남겨 둡니다.

    확정이 필요한 것 2가지입니다.

    • 등록된 수신자 0건일 때 표시할 내용
    • 검색 결과 0건일 때 표시할 내용 (목록 0건과 같은 문구인지, 다른 문구인지)

    같은 성격의 빈 상태 미정의가 MEMORIES 카드(#559)·홈 주간 요약(#562)에도 있습니다. 셋을 묶어 한 번에 확정받는 편이 낫고, 제 몫인 #562 는 제가 보냅니다.

  5. 1hyok commented on Jul 31, 2026

    @1hyok
    CollaboratorAuthor

    @koongmai 빈 상태의 문구·레이아웃은 참고할 시안이 없어 디자이너 확정이 필요합니다. 질의 발송은 이슈 담당자 몫으로 정리돼 재료를 넘깁니다.

    실측 (2026-07-31, Figma REST) — 현재 수신인 목록 외 수신인 목록 프레임 8개 전수에 목록 0건·검색 결과 0건 상태가 없고, Screen Design 전체 텍스트 검색에서도 해당 빈 상태 문구가 나오지 않습니다.

    피그마 댓글 초안 — 핀: 현재 수신인 목록

    @류하늬 @kim Dasom
    수신인 목록이 0건일 때와 검색 결과가 0건일 때의 화면 부탁드립니다.

    게시하실 때 맨 앞 태그 두 분은 피그마 멘션으로 입력해야 알림이 갑니다.

  6. 1hyok commented on Aug 23, 2026

    @1hyok
    CollaboratorAuthor

    0823 피그마 답변으로 검색 0건 축의 시안이 생겨 재료 전달합니다.

    수신자 목록 검색 0건 시안

    ⚠️ 문구 갈림 주의: 08-09에 생긴 기존 벌(3970:23349, 현재 수신인 목록 검색 0건)은 "일치하는 수신자가 없어요. / 이름을 다시 확인해 주세요."로 다릅니다. 화면 벌도 다르니(작성용 수신자 목록 vs 설정 현재 수신인 목록) 어느 문구로 통일할지는 담당 재량으로 확정하면 될 것 같습니다(0823 위임 기준).

    참고: 파일이 0823 재편되어 인용 프레임은 back up 페이지 소재, 정리 Screen Design 쪽 정리본은 기본 수신자 목록 3벌(4327:65637 등)·현재 수신인 목록(4327:71662 등)입니다. 0건 목록 상태 시안은 기존(3628:23840 "등록된 수신자가 없습니다."+[수신자 등록하기]) 그대로입니다.

  7. changed the title [-]fix(setting): 수신자 목록 0건·검색 결과 0건에 안내 없이 빈 화면[/-] [+]수신자 목록 0건·검색 결과 0건에 안내 없이 빈 화면[/+] on Aug 28, 2026
  8. assigned and unassigned on Sep 6, 2026
  9. 1hyok commented on Sep 13, 2026

    @1hyok
    CollaboratorAuthor

    착수 전 점검 결과입니다. 결함은 남아 있지만 본문의 실측 주장은 전부 낡았고, 지금 착수하면 열린 PR 스택과 같은 줄을 두 번 고치게 됩니다. 기준 리비전은 origin/develop 86ab223 입니다.

    본문 항목별 대조

    • "ReceiverListScreen.kt:119-127 에 LazyColumn 만 있고 빈 목록 분기가 없다" — 파일이 바뀌었습니다. 지금 그 파일은 66줄뿐이고 LazyColumn 이 없습니다. 수신자 선택 화면을 공용 컴포넌트로 추출 #791 / 수신자 목록이 선택 화면으로 동작 — 상세·수정 진입 불가, 완료 버튼 무동작 #631 이후 core/ui ReceiverSelectScreen 에 위임하는 얇은 래퍼(:33-50)입니다. 119줄 자체가 없습니다.
    • "items 는 검색어로 필터된 결과(:55-58)" — 위치가 내려갔습니다. 필터는 core/ui/.../receiver/ReceiverSelectScreen.kt:201-206 의 private ReceiverSelectList 에 있습니다. 중요한 점은 검색어(searchState, :167)가 private ReceiverSelectScaffold 내부 상태라 소비 기능이 볼 수 없다는 것입니다. 검색 0건은 listReplacement 슬롯으로 못 만들고 core/ui 안을 고쳐야 합니다.
    • "설정 → 수신자 목록이 빈 화면" — 결함은 유효하되 수신자 목록이 선택 화면으로 동작 — 상세·수정 진입 불가, 완료 버튼 무동작 #631 이후 화면이 둘로 갈렸습니다. 평범한 열람은 ReceiverManageScreen.kt:46-59(LazyColumn + items, 빈 분기 없음, 검색창 자체가 없어 검색 0건 축은 해당 없음), 사후 전달 조건 진입만 ReceiverListScreen → ReceiverSelectScreen(검색창 있음, listReplacement 미사용이라 0건과 검색 0건 둘 다 빈 화면)입니다.
    • "검색 결과 0건에서도 동일하게 빈 화면" — 유효하고 전 소비처 공통입니다. 저장소 전체에 "검색결과가 없습니다" 나 "일치하는 수신자" 문자열이 0건입니다.
    • 07-28 코멘트 "같은 컴포넌트를 쓰는 타임레터 작성 → 수신인 선택" — 틀렸습니다. 타임레터는 공용 컴포넌트를 안 쓰고 feature/timeletter/.../screen/sender/RecipientListScreen.kt 에 자체 구현을 갖고 있습니다(:137 placeholder, :143 LazyColumn, :154 items). 빈 상태가 없는 것은 맞지만 별개 코드입니다.
    • 07-28 코멘트 "애프터노트도 0건 안내 없음" — 애프터노트는 이미 고쳐졌습니다. SelectReceiverScreen.kt:69-71 이 receivers.isEmpty() 에 SelectReceiverEmpty() 를 물리고 :86-116 이 시안 4163:20979 대로 그립니다. 마음의 기록도 ReceiverSelectBottomSheet.kt:141 에 같은 문구가 있습니다. 같은 유형으로 든 공지사항(fix(setting): 공지사항 빈 목록 시 안내 문구 없이 완전 빈 화면 #528)도 NoticeListScreen.kt:39-40 으로 닫혔습니다.
    • 07-29 · 07-31 코멘트의 "시안 미정의, 디자이너 확정 선행" 게이트 — 08-23 코멘트가 검색 0건 시안(4309:19552)을 받아 오면서 대체됐습니다.

    남은 실제 범위는 넷입니다. ① 설정 ReceiverManageScreen 0건 ② 설정 ReceiverListScreen(사후 전달) 0건 ③ core/ui 검색 0건(전 소비처) ④ 타임레터 RecipientListScreen 0건과 검색 0건.

    한 번 시도됐고 절차로 닫혔다

    git log --grep '#556' origin/develop 은 0건이지만 --all 로 넓히면 origin/fix/556 에 커밋 세 개가 있습니다(eab9743a4 08-15, fed76491f 08-29, e645f10b7 08-29). PR 은 #1476 이고 2026-08-29 에 머지 없이 닫혔습니다. 닫은 주체는 리뷰어가 아니라 리뷰 적체 가드 봇(#1136, 미처리 4건)입니다. 기술적으로 반려된 것이 아니라 절차로 닫혔습니다.

    다만 그 브랜치는 develop 보다 1324 커밋 뒤이고 고친 ReceiverListScreen.kt(147줄 변경)는 그 뒤 #631 / #791 로 통째로 재작성됐습니다. 되살리기보다 버리는 쪽이 맞습니다.

    지금 착수하면 스택과 겹친다

    develop ← refactor/1502-setting-state-mvi(#1967) ← refactor/1805-receiver-list-mvi(#2018) ← fix/579-receiver-reentry(#2034) ← fix/1281-receiver-list-state(#2051).

    PR #2051 이 건드리는 파일이 #556 이 건드려야 할 파일과 정확히 같습니다. ReceiverManageScreen.kt(fun → internal fun, listReplacement 파라미터 추가, Preview 삭제), ReceiverListScreen.kt, core/ui ReceiverSelectScreen.kt, 신규 ReceiverListRouteContent.kt · ReceiverListContract.kt, ReceiverListViewModel.kt 전면 재작성.

    core/ui 의 검색 필터 지점(ReceiverSelectList)은 별도 스택 develop ← fix/1057-receiver-index(#2019) ← fix/939-receiver-render-index(#2057) 가 동시에 재작성 중입니다. #2057 은 groupedReceivers 를 receiverRows 평탄화로 바꿔 items(...) 블록 자체를 갈아엎습니다. 검색 0건 분기를 넣을 바로 그 줄들입니다.

    #556 이 그 뒤 순번이라는 것은 두 이슈가 이미 적어 뒀습니다. #1281 본문에 "성공한 실제 0건·검색 결과 0건의 제품 안내 문구/등록 진입(#556)은 이 범위에 포함하지 않는다", #2045 본문에 "빈 상태의 제품 문구·새 등록 흐름(#556)은 포함하지 않는다".

    삽입 지점은 이미 파여 있다

    PR #2051 의 ReceiverListRouteContent.kt:33-47 이 loadState → listReplacement 를 고르는 단일 지점이고 ReceiverListLoadState 는 Loading · Ready · InitialFailure · RefreshFailure 넷입니다(ReceiverListContract.kt:22). #556 은 여기에 Ready && receivers.isEmpty() 가지 하나를 더하는 모양이 됩니다. 그 PR 의 스크린샷 baseline 7장에도 empty 벌이 없습니다. 의도적으로 비워 둔 자리로 읽힙니다.

    빈 상태 본체를 core:ui 로 올리라는 조건도 이미 코드에 적혀 있습니다. SelectReceiverScreen.kt:36-38 KDoc 이 "상태 body 를 core:ui 로 올리는 조건(#1427 본문)은 두 번째 작성 플로우가 이 컴포넌트에 붙는 시점" 이라고 적었고, #2051 이 설정을 두 번째 슬롯 소비자로 만들므로 그 조건이 켜집니다.

    시안

    검색 0건은 08-23 코멘트로 답이 왔습니다(4309:19552 "검색결과가 없습니다 / 다른 이름으로 검색해 보세요"). 다만 경쟁 벌 3970:23349 "일치하는 수신자가 없어요. / 이름을 다시 확인해 주세요." 가 같이 있고, 0건 목록은 3628:23840 "등록된 수신자가 없습니다." 와 수신자 등록하기 CTA 입니다. 인용 프레임들은 08-23 파일 재편으로 back up 페이지 소재이고 정리본은 4327:65637 · 4327:71662 라고 같은 코멘트가 적어 뒀습니다. 이번 점검에서는 Figma 접근이 막혀 재측정하지 못했습니다. 확인되지 않은 채로 남깁니다.

    제안

    본문을 위 네 항목으로 재작성하고, 착수는 #2051 머지 뒤로 둡니다. 그 전에 손대면 같은 줄을 두 번 고치고 스크린샷 골든도 두 번 재생성하게 됩니다. 착수 시점에 시안 두 벌(4309:19552 대 3970:23349) 중 어느 문구가 정본인지 먼저 확인해야 합니다.

  10. 1hyok commented on Sep 13, 2026

    @1hyok
    CollaboratorAuthor

    목록 0건 축을 #2086 으로 떼어 냈습니다. 이 이슈에 blocked_by 로 걸어 뒀습니다.

    뗀 범위

    설정 > 수신자 목록(ReceiverManageScreen)의 0건 안내와 등록 진입점입니다. receivers 가 비면 목록 대신 안내 문구와 수신자 등록하기 CTA 를 그리고, 등록 목적지는 설정 홈이 이미 쓰던 onNavigateToRecipientRegister 를 재사용합니다. 이 화면에는 검색창 자체가 없어 검색 0건 축이 해당하지 않습니다.

    뗀 이유는 게이트입니다. validate-pr-issue-link.mjs 가 제목의 대표 이슈를 본문에서 Closes 로 걸 것을 요구하는데(#1748, #1749) 이 축만으로는 #556 이 닫히지 않습니다. 이슈의 일부만 하면 그 몫을 새 이슈로 분리해 대표 이슈로 삼으라는 게이트 안내 그대로 했습니다. 분리분은 자식이 아니라 blocked_by 로 잇는 0903 규약을 따랐고, 게이트 스크립트도 sub-issue 를 보지 않아 대표 이슈가 자식일 필요는 없습니다. 브랜치도 fix/2086-receiver-empty-state 로 다시 팠습니다.

    여기 남는 축: 검색 결과 0건

    지금은 못 합니다. 검색어(searchState)를 core:ui ReceiverSelectScreen 의 private ReceiverSelectScaffold 가 쥐고 있어 소비 기능 쪽에서는 listReplacement 슬롯으로 만들 수 없고, core:ui 안에서 닫아야 합니다. 그런데 분기를 넣을 자리인 private ReceiverSelectList 의 items 블록을 PR #2057 이 groupedReceivers 에서 receiverRows 평탄화로 바꾸며 통째로 재작성하는 중입니다. 지금 손대면 같은 줄을 두 번 고치고 스크린샷 골든도 두 번 재생성하게 됩니다.

    착수는 #2057 머지 뒤입니다. 그 시점에 문구 정본을 먼저 정해야 합니다. 0823 코멘트가 짚은 대로 4309:19552 의 "검색결과가 없습니다 / 다른 이름으로 검색해 보세요" 와 3970:23349 의 "일치하는 수신자가 없어요. / 이름을 다시 확인해 주세요." 두 벌이 같이 있습니다.

    설정 사후 전달 조건 선택 화면(ReceiverListScreen)의 0건도 여기 남습니다. 그쪽은 #1998 PM 답변에 걸린 #2051 의 목록 상태 분기에 얹힙니다.

  11. 1hyok commented on Sep 19, 2026

    @1hyok
    CollaboratorAuthor

    2026-09-19 정리로 닫는다. 이 이슈의 완료 조건은 PM의 결정에 달려 있어 결정 전에는 FE 가 무엇을 만들지 쓸 수 없다. 그런 이슈는 FE 저장소에 열어 두지 않고 결정이 나면 그때 새 이슈로 다시 연다.

    기다리는 결정: 빈 상태 문구·형태.

    PM 질문은 창구가 정해지는 대로 보낸다(일혁이 목록 보관).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:setting설정 기능 영역bugSomething isn't working

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions