docs(dm): 수신자 선택 라벨 요구사항을 기록한다
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
| 작성일 | `2026-09-14` |
|
||||
| 요구사항 기준 | `docs/20260914_크리에이터의_리스너_DM_시작/prd.md` |
|
||||
| API 기준 | 서버 `CreateUserCreatorChatRoomRequest(recipientId?, creatorId?)` 계약 제공됨 |
|
||||
| 현재 Phase | Phase 4 완료 |
|
||||
| 현재 Phase | Phase 5 완료 |
|
||||
| 현재 활성 Goal | 없음 |
|
||||
|
||||
## 목표
|
||||
@@ -21,6 +21,7 @@
|
||||
| 2 | 완료 | `4/4` | 없음 | 없음 |
|
||||
| 3 | 완료 | `1/1` | 없음 | 없음 |
|
||||
| 4 | 완료 | `2/2` | 없음 | 없음 |
|
||||
| 5 | 완료 | `1/1` | 없음 | 없음 |
|
||||
|
||||
- 동시에 하나의 미완료 goal만 운용한다.
|
||||
- 완료된 Task와 검증 기록은 되돌리거나 삭제하지 않는다.
|
||||
@@ -40,6 +41,8 @@
|
||||
- 기존 크리에이터 채널 DM 생성 API 재사용, 신규 리스너 DM은 `recipientId`, 기존 크리에이터 채널 DM은 `creatorId` request 계약 유지.
|
||||
- DM 방에서 뒤로 돌아와 대화 탭이 다시 보일 때 현재 filter의 대화방 목록 첫 페이지 갱신.
|
||||
- Figma `2372:23496`, `2372:23506` 기준 수신자 선택/검색 결과 화면 상단 toolbar와 `검색결과 N` 라벨 정합성 수정.
|
||||
- 수신자 선택 화면에서 팔로워 0명일 때 `팔로워` 섹션 문구 숨김.
|
||||
- `검색결과 0`과 `팔로워` 문구 크기 통일, 검색결과 숫자만 `gray/500` 색상 적용.
|
||||
|
||||
### 제외
|
||||
|
||||
@@ -440,6 +443,61 @@
|
||||
|
||||
**Expected:** 0 exit code. Figma source contract, `검색결과 0` state, 기존 recipient flow와 DM request 회귀가 통과한다.
|
||||
|
||||
## Phase 5. 팔로워 0명 섹션 라벨 숨김
|
||||
|
||||
**Phase 결과:** 수신자 선택 화면의 팔로워 목록이 비어 있으면 `팔로워` 섹션 라벨을 표시하지 않고, `검색결과 0`과 `팔로워` 라벨 스타일이 요구사항과 일치한다.
|
||||
|
||||
**선행조건:** Phase 4 수신자 선택 화면 구현 완료, 사용자 후속 요구 `DM-022`, `DM-023` 확정.
|
||||
|
||||
**Phase 완료 조건:** `P5-T1`, `P5-GATE` 완료, 검증 기록 누적.
|
||||
|
||||
### 구현 항목
|
||||
|
||||
#### Task 5.1 팔로워 라벨 표시 조건 수정
|
||||
|
||||
**Goal 실행 `P5-T1`:** 팔로워 모드라도 표시할 수신자가 0명이면 `팔로워` 라벨을 숨기고, `검색결과 0`과 `팔로워` 라벨의 문구 크기와 검색결과 숫자 색상을 맞춘다.
|
||||
|
||||
- **시작 조건:** PRD `DM-022`, `DM-023` 확정.
|
||||
- **완료 증거:** source/layout RED/GREEN, focused test와 영향 범위 검증 결과 기록.
|
||||
- **범위 밖:** 검색 결과 count 정책, 팔로워 empty 문구 신규 정의, 기기·에뮬레이터 UI 조작.
|
||||
|
||||
**Files:**
|
||||
|
||||
- Modify: `app/src/main/java/kr/co/vividnext/sodalive/v2/main/chat/recipient/DmRecipientPickerActivity.kt`
|
||||
- Modify: `app/src/main/res/layout/activity_dm_recipient_picker.xml`
|
||||
- Test: `app/src/test/java/kr/co/vividnext/sodalive/v2/main/chat/recipient/DmRecipientPickerSourceTest.kt`
|
||||
- Modify: `docs/20260914_크리에이터의_리스너_DM_시작/prd.md`, `plan-task.md`
|
||||
|
||||
- [x] **RED:** source test가 `tvFollowers` 표시 조건이 팔로워 모드와 수신자 목록 non-empty 조건을 함께 사용하는지, layout/source test가 두 라벨 style 통일과 검색결과 숫자 `gray_500` span을 검증하도록 작성한다.
|
||||
- [x] **RED 확인:** focused source test를 실행해 현재 팔로워 모드만 보는 조건, 라벨 style 불일치, 숫자 span 부재 때문에 실패함을 확인한다.
|
||||
- [x] **GREEN:** Activity binding과 XML을 최소 수정해 팔로워 0명 라벨 숨김, 라벨 크기 통일, 검색결과 숫자 `gray_500` span을 적용한다.
|
||||
- [x] **GREEN 확인:** 같은 focused test를 다시 실행해 성공을 확인한다.
|
||||
- [x] **REFACTOR:** 신규 state나 abstraction 없이 중복만 점검하고 focused test·직접 영향 회귀·build/ktlint 결과를 Progress에 기록한다.
|
||||
|
||||
### 완료 조건
|
||||
|
||||
- [x] `P5-T1`의 체크박스와 완료 증거가 모두 충족됐다.
|
||||
- [x] 팔로워 모드에서 수신자가 0명이면 `팔로워` 라벨이 숨겨진다.
|
||||
- [x] `검색결과 0`과 `팔로워` 라벨의 style이 같고 검색결과 숫자 범위에만 `@color/gray_500` span을 적용한다.
|
||||
- [x] 검색 모드의 `검색결과 N`, empty state, 기존 DM 생성 흐름이 유지된다.
|
||||
|
||||
### 검증 방법
|
||||
|
||||
#### Phase 5 Gate
|
||||
|
||||
**Goal 실행 `P5-GATE`:** 팔로워 라벨 숨김과 기존 수신자 기능 회귀를 최종 판정한다.
|
||||
|
||||
- **시작 조건:** `P5-T1` 완료.
|
||||
- **완료 증거:** 아래 focused/영향 범위 검증 통과와 Progress 기록.
|
||||
- **범위 밖:** 기기·에뮬레이터 UI 조작, screenshot, visual QA.
|
||||
|
||||
```bash
|
||||
./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.chat.recipient.DmRecipientPickerSourceTest"
|
||||
./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.chat.recipient.*" --tests "kr.co.vividnext.sodalive.v2.main.chat.dm.DmChatRepositoryTest" :app:assembleDebug :app:ktlintCheck
|
||||
```
|
||||
|
||||
**Expected:** 0 exit code. 팔로워 라벨 source contract, 라벨 typography/숫자 color contract, 기존 recipient flow와 DM request 회귀가 통과한다.
|
||||
|
||||
## 실행 순서와 의존성
|
||||
|
||||
| 순서 | Goal | 선행조건 | 병행 가능 | 차단 시 다음 행동 |
|
||||
@@ -727,3 +785,22 @@ P1-T1 -> P1-GATE -> P2-T1 -> P2-T2 -> P2-T3 -> P2-GATE -> P3-T1 -> P3-GATE -> P4
|
||||
- 사용자 지시에 따라 `app/src/androidTest`, 기기·에뮬레이터 조작, screenshot, visual QA는 실행하지 않았다.
|
||||
- LSP diagnostics 도구는 제공되지 않아 Kotlin 컴파일과 ktlint로 대체했다.
|
||||
- 남은 항목: 없음.
|
||||
|
||||
### Phase 5 Gate 검증 — 2026-09-14
|
||||
|
||||
- 상태: 완료
|
||||
- 무엇을: 팔로워 0명 라벨 숨김, `팔로워`/`검색결과 0` 라벨 문구 크기 통일, 검색결과 숫자 `gray_500` span 적용을 검증했다.
|
||||
- 왜: `P5-T1`이 `DM-022`, `DM-023`의 후속 UI 요구를 충족하는지 확인하기 위해서다.
|
||||
- 어떻게:
|
||||
- RED focused test로 기존 구현이 팔로워 모드만 보고 라벨을 표시하고, 검색결과 라벨 style과 숫자 색상 span이 요구와 다름을 확인했다.
|
||||
- GREEN focused test로 `DmRecipientPickerSourceTest` 통과를 확인했다.
|
||||
- recipient 영향 범위와 기존 `DmChatRepositoryTest`, `assembleDebug`, `ktlintCheck`를 한 번에 실행했다.
|
||||
- `git diff --check`로 whitespace 오류가 없음을 확인했다.
|
||||
- 결과:
|
||||
- 최종 Gradle 명령: `BUILD SUCCESSFUL`, exit 0.
|
||||
- `testDebugUnitTest`, `assembleDebug`, `ktlintCheck` 통과.
|
||||
- `git diff --check` 출력 없음.
|
||||
- 수동/제외 검증:
|
||||
- 사용자 지시에 따라 `app/src/androidTest`, 기기·에뮬레이터 조작, screenshot, visual QA는 실행하지 않았다.
|
||||
- LSP diagnostics 도구는 제공되지 않아 Kotlin 컴파일과 ktlint로 대체했다.
|
||||
- 남은 항목: 없음.
|
||||
|
||||
Reference in New Issue
Block a user