Repository navigation
fix(afternote): 목록 아이콘이 category 대신 서비스명 문자열로 결정 — 직접 입력 서비스는 전부 소셜네트워크 아이콘 #622
Description
📜 Overview (Required)
애프터노트 목록 카드의 아이콘이 서버가 주는 category 를 쓰지 않고 서비스명 문자열 매칭으로 결정된다. 그래서 화이트리스트에 없는 이름 — 특히 "직접 추가하기" 로 입력한 서비스 — 은 카테고리와 무관하게 전부 소셜네트워크 아이콘이 붙는다.
결정 경로
앱은 등록 시 title 자리에 서비스명을 싣는다 (AfternoteEditorFormMapper.kt:166,185,220).
CreateGalleryPayload(title = payload.serviceName, …)
CreatePlaylistPayload(title = payload.serviceName, …)
CreateAccountPayload(title = payload.serviceName, …)목록 매퍼는 그 title 을 다시 serviceName 으로 되돌린다 (AfternoteListItemDtoToDomain.kt:10-16).
fun AfternoteListItemDto.toDomain() =
ListItem(
id = afternoteId.toString(),
serviceName = title,
date = formatDateFromServer(createdAt),
type = categoryToServiceType(category), // ← category 기반 타입이 여기 이미 있다
)그런데 아이콘은 type 이 아니라 serviceName 으로 조회한다 (AfternoteHomeViewModel:59).
iconResId = getIconResForServiceName(serviceName),getIconResForServiceName 은 화이트리스트 매칭에 실패하면 AfternoteServiceCatalog.serviceTypeFor() 로 넘기는데, 여기 기본값이 소셜네트워크다 (AfternoteServiceCatalog.kt:56-62).
galleryServices.contains(serviceName) -> GALLERY_AND_FILES
businessServices.contains(serviceName) -> BUSINESS
serviceName == MEMORIAL_SERVICE_NAME -> MEMORIAL
else -> AfternoteServiceType.SOCIAL_NETWORK // ← 직접 입력한 이름은 전부 여기영향 범위
- 정상 동작 — 목록에서 고른 서비스(인스타그램·네이버 메일·갤러리 등)는 이름이 화이트리스트에 걸려 제 아이콘이 나온다. 추억 노트도
MEMORIAL_SERVICE_NAME상수와 일치해 정상이다. - 오표시 — "직접 추가하기" 로 넣은 이름은 어떤 카테고리로 등록했든 소셜네트워크 아이콘이 붙는다. 갤러리 카테고리에 직접 입력한 서비스를 담아도 갤러리 아이콘이 아니다.
- 2026-07-30 실기기에서 제목이 자유 문장인 데이터 6건(PLAYLIST·GALLERY·SOCIAL 혼재)이 전부
ic_social_pattern으로 뜨는 것을 확인했다.
type 이 같은 객체 안에 이미 들어 있으므로 getIconResForServiceType(type) 로 바꾸면 해소된다. 서비스별 아이콘을 유지하려면 서비스명 매칭을 먼저 시도하고 실패 시 소셜이 아니라 type 의 카테고리 아이콘으로 떨어지게 하면 된다.
시안 기준값 — 카테고리별 아이콘 보드:
📌 Child Issue(Optional)
No response
📍 Note (Optional)
-
시안 기준값 — Screen Design 페이지의 애프터노트 카테고리별 아이콘 보드 (34:3342) 가 카테고리별로 아이콘을 둘 서비스를 명시한다.
카테고리 시안이 정의한 서비스 소셜 네트워크 (34:3346) 인스타그램·페이스북·X·스레드·틱톡·유튜브·카카오톡·카카오스토리·네이버 블로그·네이버 카페·네이버 밴드·디스코드 비즈니스 (34:3347) 네이버 메일·다음 메일·구글 메일·outlook 갤러리 및 파일 (34:3348) 갤러리·구글 포토·네이버 MYBOX·아이클라우드·Onedrive·카카오톡 톡서랍 재산 처리 (34:3344) "제목만 구현" — 뱅킹(은행)·부동산·증권·유산 즉 시안이 열거한 서비스 각각에 아이콘이 있고, 그 목록에 없는 임의 서비스명에 무엇을 쓸지는 정의돼 있지 않다. 화면에 뜨는 연필+사각형 그라데이션은 소셜 네트워크 카테고리 아이콘(
ic_social_pattern)이 맞고, 잘못된 건 아이콘 자체가 아니라 어느 카드에 붙느냐다. 직접 입력 서비스의 아이콘은 시안에 정의가 없으므로 카테고리 아이콘으로 떨어뜨릴지 별도 기본 아이콘을 둘지는 디자이너 확인이 필요하다. -
에디터 서비스 선택 시안 정합 — 직접 추가하기 제거 및 선택 바텀시트 전환 #490 과의 관계 — 직접 추가하기 존폐는 아직 확정이 아니다. 에디터 서비스 선택 시안 정합 — 직접 추가하기 제거 및 선택 바텀시트 전환 #490 은 "제거 확정" 으로 적고 있으나, 근거를 되짚으면 ① 정본 바텀시트에 직접 추가 항목이 없다는 시안 부재와 ② 디자이너 코멘트 트레일 두 가지뿐이다. ②는 2026-04-05 "직접 입력하여 추가시, 해당 종류와 서비스명에 대한 상세페이지 따로 필요"(700:36574, 05-31 04:28:56 resolve) → 7초 뒤 "정해준 리스트만"(2372:23995, 05-31 04:29:03) 인데, 이 다섯 글자를 "직접 추가 폐지" 로 읽는 것은 해석이고 해당 코멘트에 답글이 0건이다. 존폐를 명시적으로 질의한 이력도 없다(파일 코멘트 269건 전수 조회, 2026-07-30). 확인 회신 전까지는 미확정으로 다룬다.
-
존폐가 어느 쪽으로 결론 나든 이 이슈는 유효하다 — 제거되면 이미 등록된 데이터와 서버로 직접 들어온 자유 제목이 남고, 존치되면 직접 입력 서비스의 아이콘 규칙이 필요하다.
-
수신자 목록은 반대 증상이다 — 아이콘은 카테고리별로 갈리는데 제목 자리에 enum 원문이 뜬다(fix(afternote): 수신 애프터노트 목록이 제목 대신 카테고리 enum 원문 표시 — MEMORIAL·GALLERY_AND_FILES·SOCIAL_NETWORK 노출 #617). 두 화면이
category와title을 서로 엇갈리게 쓰고 있다. -
getAfternoteDisplayRes의 fallback 도 같은 성격 — 매칭 실패 시stringResId를 무조건afternote_category_social_network로 반환한다(AfternoteDisplayRes.kt:23).
Activity
OnlyReadOneBook commentedon Jul 30, 2026
직접 입력 경로는 현재 앱에서 끝까지 밟을 수 없다 (2026-07-30)
이슈 본문의 진단을 "직접 입력한 서비스" 로 실제 등록해 확인하려 했으나, #540 때문에 등록 자체가 막힌다. 소셜 에디터에서 수신자 추가 + 버튼이 무동작이고(호출 0건) 수신자는 서버 필수값이라, 앱만으로는 SOCIAL 애프터노트를 만들 수 없다.
다만 아이콘 결정 경로는 서비스명 문자열 하나만 보므로 직접 입력이든 서버로 직접 들어온 자유 제목이든 같은 분기를 탄다. 실측한 6건(제목이 자유 문장, 카테고리는 PLAYLIST·GALLERY·SOCIAL 혼재)이 전부
ic_social_pattern으로 뜬 것이 그 분기의 결과다 — 화이트리스트 밖 문자열이면 카테고리와 무관하게 소셜로 떨어진다.정리하면 이 이슈의 재현 조건은 "직접 입력" 이 아니라 "서비스명이
AfternoteServiceCatalog화이트리스트에 없는 애프터노트" 다. #540 이 풀리면 직접 입력으로도 같은 화면을 볼 수 있다.