diff --git a/docs/20260609_채팅_탭_페이지/plan-task.md b/docs/20260609_채팅_탭_페이지/plan-task.md index bfdaee58..00ea0e5e 100644 --- a/docs/20260609_채팅_탭_페이지/plan-task.md +++ b/docs/20260609_채팅_탭_페이지/plan-task.md @@ -105,7 +105,7 @@ ### Phase 2: DTO/API/Repository 네이밍과 계약 작성 -- [ ] **Task 2.1: `HomeChatModels.kt` 파일명 정리** +- [x] **Task 2.1: `HomeChatModels.kt` 파일명 정리** - Rename: `app/src/main/java/kr/co/vividnext/sodalive/v2/main/chat/data/HomeChatModels.kt` -> `app/src/main/java/kr/co/vividnext/sodalive/v2/main/chat/data/ChatRoomModels.kt` - 유지: - `ChatRoomListPageResponse` @@ -113,7 +113,7 @@ - 검증 명령: `./gradlew :app:compileDebugKotlin` - 기대 결과: 파일명 변경 후 기존 import가 없거나 갱신되어 Kotlin compile이 성공한다. -- [ ] **Task 2.2: 채팅방 API/Repository 작성** +- [x] **Task 2.2: 채팅방 API/Repository 작성** - Create: `app/src/main/java/kr/co/vividnext/sodalive/v2/main/chat/data/ChatRoomApi.kt` - Create: `app/src/main/java/kr/co/vividnext/sodalive/v2/main/chat/data/ChatRoomRepository.kt` - API 계약: @@ -127,7 +127,7 @@ - 검증 명령: `./gradlew :app:compileDebugKotlin` - 기대 결과: Retrofit annotation/import 포함 컴파일 성공. -- [ ] **Task 2.3: Koin DI 등록** +- [x] **Task 2.3: Koin DI 등록** - Modify: `app/src/main/java/kr/co/vividnext/sodalive/di/AppDI.kt` - 추가: - import `ChatRoomApi` @@ -136,6 +136,7 @@ - `networkModule`: `single { ApiBuilder().build(get(), ChatRoomApi::class.java) }` - `repositoryModule`: `factory { ChatRoomRepository(get()) }` - `viewModelModule`: `viewModel { ChatMainViewModel(get()) }` + - Phase 2 실행 기록: `ChatMainViewModel`은 Phase 4.2 생성 대상이며 현재 파일이 없어 등록 시 컴파일이 실패하므로, 이번 단계에서는 `ChatRoomApi`, `ChatRoomRepository`만 등록하고 ViewModel 등록은 Phase 4.2에서 수행한다. - 검증 명령: `./gradlew :app:compileDebugKotlin` - 기대 결과: Koin 등록과 import 컴파일 성공. @@ -472,3 +473,7 @@ - 2026-06-09: 사용자 피드백에 따라 신규 `view_title_bar_chat.xml` 생성 계획을 제거하고, 기존 `view_title_bar_default.xml`에 `ll_title_bar_actions` 가변 action container를 추가해 cash/search icon을 구성하는 계획으로 수정했다. - 2026-06-09: Phase 1.1 확인 완료. `ChatMainFragment.kt`는 현재 `BaseFragment`만 상속하는 빈 구조이고, `fragment_v2_main_chat.xml`은 black `FrameLayout`만 가진 초기 상태다. `MainV2Activity.kt`가 `BottomNavigationView` item 선택과 `MainV2Tab.CHAT -> ChatMainFragment()` 전환을 담당하며, `activity_main_v2.xml`의 `bottom_navigation`은 Activity 레벨에 존재한다. `ChatRoomActivity.newIntent(context, roomId)`는 `extra_room_id`를 담아 채팅방 Activity로 이동하는 기존 진입점임을 확인했다. - 2026-06-09: Phase 1.2 확인 완료. `CapsuleTabBarView.kt`는 `setMenus`, `selectTab`, `setOnTabSelectedListener`를 제공하고 `view_capsule_tab_bar.xml`은 horizontal scroll container를 포함한다. `view_title_bar_default.xml`은 제목형 title bar로 재사용 가능하나 현재 `tv_title_bar_title`, `iv_title_bar_menu`만 있고 가변 action container는 아직 없다. `view_title_bar_home.xml`은 `ic_bar_cash`, `ic_bar_search` 우측 아이콘 배치 예시를 제공하며, `ic_plus_no_bg` 리소스는 기존 리소스로 참조 가능함을 확인했다. Phase 1은 구조 확인/문서 갱신만 수행했으므로 빌드/테스트는 실행하지 않았다. +- 2026-06-09: Phase 2.1 완료. `app/src/main/java/kr/co/vividnext/sodalive/v2/main/chat/data/HomeChatModels.kt`를 `ChatRoomModels.kt`로 정리했고, `ChatRoomListPageResponse`, `ChatRoomListItemResponse` DTO 필드는 변경하지 않았다. +- 2026-06-09: Phase 2.2 완료. `ChatRoomApi`에 `GET /api/v2/chat/rooms`, `Authorization`, `filter`, nullable `cursor` query와 `Single>` 반환 계약을 추가했고, `ChatRoomRepository.getChatRooms(token, filter, cursor)`에서 API 호출을 위임하도록 작성했다. +- 2026-06-09: Phase 2.3 완료 범위. `AppDI`의 `networkModule`에 `ChatRoomApi`, `repositoryModule`에 `ChatRoomRepository`를 등록했다. `ChatMainViewModel`은 현재 소스 파일이 없고 Phase 4.2 생성 대상이라 이번 단계에서 등록하면 컴파일이 실패하므로, ViewModel 등록은 Phase 4.2 구현 시 수행하도록 이연했다. +- 2026-06-09: Phase 2 검증 완료. `rg -n "HomeChatModels|ChatRoomModels|ChatRoomApi|ChatRoomRepository|ChatMainViewModel" "app/src/main/java" "app/src/test/java"`로 `HomeChatModels` 잔여 참조가 없고 `ChatRoomApi`, `ChatRoomRepository`, `AppDI` 등록만 존재함을 확인했다. `./gradlew :app:compileDebugKotlin` 실행 결과 `BUILD SUCCESSFUL in 43s`로 Kotlin 컴파일이 성공했다. 빌드 중 Agora namespace 중복 warning과 Gradle deprecation warning이 출력됐으나 Phase 2 변경으로 인한 컴파일 실패는 없었다.