Files
sodalive-android/docs/20260312_알림리스트구현.md

6.0 KiB

2026-03-12 알림 리스트 구현

체크리스트

  • 기존 패턴 분석 (Title bar, 카테고리 UI, Home 진입, 딥링크 라우팅)
  • 알림 카테고리/리스트 API 모델 및 네트워크 계층 구현
  • 알림 리스트 화면 UI 구현 (Title bar, Category List, Item List)
  • 무한 스크롤 및 마지막 페이지/빈 데이터 처리 구현
  • 알림 아이템 터치 시 deepLink 실행 및 Path 딥링크 보완
  • HomeFragment의 ic_push_notification 진입 연결
  • 검증 수행 및 결과 기록

검증 기록

  • 2026-03-12
    • 무엇/왜/어떻게: 작업 시작 전 기존 코드 패턴과 요구사항 반영 지점을 확인해 구현 범위를 고정했다.
    • 실행 명령: background_output(task_id="bg_0688c56d"), background_output(task_id="bg_d0442733"), background_output(task_id="bg_db96f80d")
    • 결과: Title bar/카테고리 패턴, 기존 딥링크 분기, Home 진입점 누락 상태를 확인했다.
  • 2026-03-12
    • 무엇/왜/어떻게: 알림 리스트 구현 변경분의 빌드/테스트/코드스타일 상태를 최종 확인해 배포 전 기본 안정성을 검증했다.
    • 실행 명령: ./gradlew :app:assembleDebug :app:testDebugUnitTest :app:ktlintCheck
    • 결과: BUILD SUCCESSFUL.
  • 2026-03-12
    • 무엇/왜/어떻게: 수정 파일 정적 진단 수행 가능 여부를 확인했다.
    • 실행 명령: lsp_diagnostics(filePath="app/src/main/java/kr/co/vividnext/sodalive/home/pushnotification/PushNotificationListViewModel.kt"), lsp_diagnostics(filePath="app/src/main/res/layout/activity_push_notification_list.xml")
    • 결과: 현재 실행 환경에서 .kt, .xml LSP 서버가 미구성되어 진단을 수행할 수 없음을 확인했다.
  • 2026-03-12
    • 무엇/왜/어떻게: 작업 트리 상태를 확인해 리네임 과정의 인덱스 흔적 유무를 점검했다.
    • 실행 명령: git status --short
    • 결과: home/push_notification 경로에 AD 인덱스 흔적이 남아 있어 커밋 전 스테이징 정리가 필요함을 확인했다.
  • 2026-03-12
    • 무엇/왜/어떻게: 카테고리 리스트의 앱 내 전체 주입을 제거하고 서버 조회 카테고리만 사용하도록 로직을 축소했다.
    • 실행 명령: grep(pattern="allCategoryLabel|screen_home_theme_all|categoryAdapter.addItems\\(listOf", path="app/src/main/java/kr/co/vividnext/sodalive/home/pushnotification/PushNotificationListActivity.kt")
    • 결과: PushNotificationListActivity에서 allCategoryLabel 기반 주입/비교 로직이 제거되고, 서버 응답 categories를 그대로 바인딩하도록 반영되었다.
  • 2026-03-12
    • 무엇/왜/어떻게: 수정 파일 정적 진단과 빌드/테스트/코드스타일 검증을 재실행해 변경 안정성을 확인했다.
    • 실행 명령: lsp_diagnostics(filePath="app/src/main/java/kr/co/vividnext/sodalive/home/pushnotification/PushNotificationListActivity.kt"), lsp_diagnostics(filePath="docs/20260312_알림리스트구현.md"), ./gradlew :app:assembleDebug :app:testDebugUnitTest :app:ktlintCheck
    • 결과: .kt LSP 서버 미구성으로 Kotlin 진단은 불가, Markdown 진단은 이슈 없음, Gradle 검증은 BUILD SUCCESSFUL.
  • 2026-03-12
    • 무엇/왜/어떻게: 서버 카테고리만 사용하면서 기본 선택을 첫 번째 카테고리로 고정하도록 초기 선택 흐름을 조정했다.
    • 실행 명령: grep(pattern="selectCategory\\(null\\)|isInitialCategorySelected|setSelectedTheme", path="app/src/main/java/kr/co/vividnext/sodalive/home/pushnotification/PushNotificationListActivity.kt"), ./gradlew :app:assembleDebug :app:testDebugUnitTest :app:ktlintCheck
    • 결과: 앱 내 전체 기본 선택 호출을 제거하고 서버 카테고리 첫 항목 선택 로직을 반영했으며, Gradle 검증은 BUILD SUCCESSFUL.
  • 2026-03-12
    • 무엇/왜/어떻게: 최초 진입 시 카테고리 조회/선택 과정에서 알림 리스트 API가 2회 호출될 가능성이 있는지 호출 경로를 정적 분석으로 점검했다.
    • 실행 명령: background_output(task_id="bg_061507b7"), background_output(task_id="bg_23070c8e"), grep(pattern="getPushNotificationList\\(|selectCategory\\(|categoryListLiveData.observe\\(|onScrolled\\(", path="app/src/main/java/kr/co/vividnext/sodalive/home/pushnotification"), ast_grep_search(pattern="fun getPushNotificationList() { $$$ }", lang="kotlin", paths=["app/src/main/java/kr/co/vividnext/sodalive/home/pushnotification"])
    • 결과: 최초 진입 경로에서는 categoryListLiveData 수신 후 isInitialCategorySelected 가드로 첫 카테고리 선택이 1회만 실행되고, getPushNotificationList_isLoading/isLastPage 가드로 재진입이 차단되어 2회 호출 버그 재현 경로가 확인되지 않았다.
  • 2026-03-12
    • 무엇/왜/어떻게: totalCount는 정상인데 items가 빈 현상에 대해 파싱 모델/인프라/페이징 전달을 교차 점검했고, 저장소 전반의 페이지 규칙(page=1 시작 후 API 전달 시 page-1)과 달리 push notification만 보정이 누락된 점을 수정했다.
    • 실행 명령: background_output(task_id="bg_097b64e0"), background_output(task_id="bg_c31bdfb5"), grep(pattern="page = page - 1|fun getPushNotificationList\\(", path="app/src/main/java/kr/co/vividnext/sodalive/user/UserRepository.kt"), grep(pattern="page = page - 1", path="app/src/main/java", output_mode="content")
    • 결과: UserRepository.getPushNotificationListpage = page - 1 보정을 반영해 다른 페이징 API와 동일 규칙으로 정렬했다.
  • 2026-03-12
    • 무엇/왜/어떻게: 페이지 인덱스 보정 변경 후 컴파일/테스트/코드스타일 검증을 재실행했다.
    • 실행 명령: lsp_diagnostics(filePath="app/src/main/java/kr/co/vividnext/sodalive/user/UserRepository.kt"), lsp_diagnostics(filePath="docs/20260312_알림리스트구현.md"), ./gradlew :app:assembleDebug :app:testDebugUnitTest :app:ktlintCheck
    • 결과: .kt LSP 서버 미구성으로 Kotlin 진단은 불가, Markdown 진단은 이슈 없음, Gradle 검증은 BUILD SUCCESSFUL.