docs(dm): Phase 13 검증 기록을 갱신한다

This commit is contained in:
2026-06-19 03:57:44 +09:00
parent 1550014670
commit 8b515bba97

View File

@@ -828,15 +828,17 @@
### Phase 13: WebSocket 전환 최종 검증과 수동 확인
- [ ] **Task 13.1: DM 채팅 WebSocket 단위 테스트 실행**
- [x] **Task 13.1: DM 채팅 WebSocket 단위 테스트 실행**
- Files:
- Check: `app/src/test/java/kr/co/vividnext/sodalive/v2/main/chat/dm/*Test.kt`
- Run:
- `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.chat.dm.*" --max-workers=1`
- Expected:
- DM 채팅 WebSocket 전환 관련 단위 테스트가 모두 PASS.
- 검증 기록:
- 2026-06-19: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.chat.dm.*" --max-workers=1` 실행 결과 `BUILD SUCCESSFUL`을 확인했다.
- [ ] **Task 13.2: 푸시/딥링크 라우팅 테스트 실행**
- [x] **Task 13.2: 푸시/딥링크 라우팅 테스트 실행**
- Files:
- Check: `app/src/test/java/kr/co/vividnext/sodalive/fcm/*Test.kt`
- Check: `app/src/test/java/kr/co/vividnext/sodalive/main/*Test.kt`
@@ -845,8 +847,10 @@
- `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.fcm.*" --tests "kr.co.vividnext.sodalive.main.*" --tests "kr.co.vividnext.sodalive.v2.main.*" --max-workers=1`
- Expected:
- USER_CREATOR push routing과 기존 deep link 회귀 테스트가 PASS.
- 검증 기록:
- 2026-06-19: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.fcm.*" --tests "kr.co.vividnext.sodalive.main.*" --tests "kr.co.vividnext.sodalive.v2.main.*" --max-workers=1` 실행 결과 `BUILD SUCCESSFUL`을 확인했다.
- [ ] **Task 13.3: 빌드/스타일/문자열 회귀 확인**
- [x] **Task 13.3: 빌드/스타일/문자열 회귀 확인**
- Files:
- Check: Gradle project
- Check: `app/src/main/java/kr/co/vividnext/sodalive/v2/main/chat/dm`
@@ -858,6 +862,9 @@
- Expected:
- Kotlin compile, ktlint, whitespace check PASS.
- 제거 endpoint 문자열은 삭제 검증 테스트나 과거 이력 문서를 제외한 신규 DM main/test 코드에 남지 않는다.
- 검증 기록:
- 2026-06-19: `./gradlew :app:compileDebugKotlin --max-workers=1`, `./gradlew :app:ktlintCheck --max-workers=1`, `git diff --check`를 실행해 모두 PASS를 확인했다. Gradle 실행에서는 기존 deprecation warning이 출력됐지만 실패는 없었다.
- 2026-06-19: `rg "messages/text|events/disconnect|text/event-stream|EventSource" app/src/main/java/kr/co/vividnext/sodalive/v2/main/chat/dm` 결과 없음으로 active DM main 코드에 제거 endpoint 문자열이 남지 않음을 확인했다. 동일 패턴을 DM test 경로까지 넓히면 `DmChatRemovedEndpointSourceTest`의 금지 문자열 assertion과 과거 SSE 이력 테스트인 `DmChatEventClientTest``text/event-stream` fixture만 매칭됨을 확인했다.
- [ ] **Task 13.4: WebSocket 전환 수동 확인**
- Files:
@@ -877,6 +884,9 @@
- 화면 밖에서는 reconnect가 예약/실행되지 않는다.
- heartbeat `PING`/`PONG` timeout 시 연결 상태가 disconnected로 전환된다.
- USER_CREATOR push 터치 시 `room_id` 기준 DM 채팅방에 진입하고 일반 진입과 동일하게 `OpenRoom` 후 WebSocket join을 수행한다.
- 검증 기록:
- 2026-06-19: `DmChatRoomViewModelTest`, `DmChatSocketClientTest`, `DmChatRemovedEndpointSourceTest`, `SodaFirebaseMessagingServiceSourceTest`, `DeepLinkActivitySourceTest`, `MainV2ActivitySourceTest`로 WebSocket join/send/ack/error/timeout/retry/reconnect/heartbeat, 제거 endpoint 미사용, USER_CREATOR push/deep link 라우팅의 자동 검증 PASS를 확인했다. 단, `adb devices` 결과 연결된 Android 기기가 없어 실제 앱 화면과 실제 서버/WebSocket을 통한 수동 확인은 수행하지 못했으므로 Task 13.4는 미완료로 유지한다.
- 2026-06-19: Phase 13 코드 리뷰로 `DmChatRoomActivity`, `DmChatRoomViewModel`, `DmChatSocketClient`, `DmChatSocketModels`, `DmChatRepository`, `DmChatApi`의 WebSocket 연결/해제, `JOINED` 기준 연결 확정, `SEND_TEXT`/`SEND_ACK` pending 처리, timeout/retry/reconnect/heartbeat, 제거 REST endpoint 미사용 경로를 재검토했고 blocking issue는 발견하지 못했다. 재검증으로 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.chat.dm.*" --max-workers=1`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.fcm.*" --tests "kr.co.vividnext.sodalive.main.*" --tests "kr.co.vividnext.sodalive.v2.main.*" --max-workers=1`, `./gradlew :app:compileDebugKotlin --max-workers=1`, `./gradlew :app:ktlintCheck --max-workers=1`, `git diff --check` PASS를 확인했다. active DM main 코드의 제거 endpoint 문자열 검색 결과는 없음이며, DM test 경로까지 확장하면 삭제 검증 테스트와 과거 SSE 이력 테스트 fixture만 매칭된다. 최초 Gradle 실행은 `~/.gradle` wrapper lock 파일 접근 제한으로 실패해 승인된 Gradle 실행으로 재검증했고, `adb devices`는 승인된 실행에서도 연결된 기기가 없어 실제 앱/서버 WebSocket 수동 확인은 미완료로 유지한다.
## 5. 검증 기록
- 2026-06-10: `docs/20260610_DM_채팅화면/prd.md`를 확인해 DM 채팅방 진입, UI 제거 대상, REST API, SSE 이벤트, pagination, 전송 실패/재시도, lifecycle disconnect 요구사항을 계획에 반영했다.