From 2e67e092a512eca09b4f18b4496b4369ac77175d Mon Sep 17 00:00:00 2001 From: klaus Date: Thu, 17 Sep 2026 12:29:07 +0900 Subject: [PATCH] =?UTF-8?q?docs(chat):=20=EC=8B=A0=EA=B7=9C=20DM=20?= =?UTF-8?q?=EC=95=84=EC=9D=B4=EC=BD=98=20=EB=B3=80=EA=B2=BD=20=EA=B8=B0?= =?UTF-8?q?=EB=A1=9D=EC=9D=84=20=EB=82=A8=EA=B8=B4=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plan-task.md | 43 ++++++++++++++++++- .../prd.md | 2 +- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/docs/20260914_크리에이터의_리스너_DM_시작/plan-task.md b/docs/20260914_크리에이터의_리스너_DM_시작/plan-task.md index 31b1f7b3..6cc96782 100644 --- a/docs/20260914_크리에이터의_리스너_DM_시작/plan-task.md +++ b/docs/20260914_크리에이터의_리스너_DM_시작/plan-task.md @@ -498,6 +498,31 @@ **Expected:** 0 exit code. 팔로워 라벨 source contract, 라벨 typography/숫자 color contract, 기존 recipient flow와 DM request 회귀가 통과한다. +## Phase 6. 메인 대화 탭 신규 DM 아이콘 변경 + +**Phase 결과:** 크리에이터에게만 보이는 메인 대화 탭 우측 하단 버튼이 `ic_new_talk_add` 아이콘을 사용한다. + +**선행조건:** 기존 `btn_new_dm` 노출 조건과 클릭 동작을 그대로 유지한다. + +**Phase 완료 조건:** `P6-T1` 완료와 리소스 merge 검증 기록 누적. + +### 구현 항목 + +#### Task 6.1 신규 DM 버튼 아이콘 리소스 교체 + +**Goal 실행 `P6-T1`:** `fragment_v2_main_chat.xml`의 `btn_new_dm` 아이콘 참조만 `ic_plus_no_bg`에서 `ic_new_talk_add`로 변경한다. + +- **완료 증거:** XML 참조 확인, `:app:mergeDebugResources`, 관련 layout test, `git diff --check` 통과. +- **범위 밖:** 버튼 크기·배경·노출 조건·클릭 동작과 다른 기능 변경. + +**Files:** + +- Modify: `app/src/main/res/layout/fragment_v2_main_chat.xml` +- Modify: `docs/20260914_크리에이터의_리스너_DM_시작/prd.md`, `plan-task.md` + +- [x] `btn_new_dm`의 `android:src`만 `@drawable/ic_new_talk_add`로 변경한다. +- [x] 리소스 merge와 관련 layout test를 실행하고 결과를 `Verification Log`에 기록한다. + ## 실행 순서와 의존성 | 순서 | Goal | 선행조건 | 병행 가능 | 차단 시 다음 행동 | @@ -512,9 +537,10 @@ | 8 | `P3-GATE` | `P3-T1` | 아니요 | 실패 소유 Task의 회귀 수정 goal 생성 | | 9 | `P4-T1` | `P2-GATE` | 아니요 | Figma UI contract 재확인 | | 10 | `P4-GATE` | `P4-T1` | 아니요 | 실패 소유 Task의 회귀 수정 goal 생성 | +| 11 | `P6-T1` | 기존 `btn_new_dm` 구현 | 아니요 | 신규 drawable 존재와 XML 참조 확인 | ```text -P1-T1 -> P1-GATE -> P2-T1 -> P2-T2 -> P2-T3 -> P2-GATE -> P3-T1 -> P3-GATE -> P4-T1 -> P4-GATE +P1-T1 -> P1-GATE -> P2-T1 -> P2-T2 -> P2-T3 -> P2-GATE -> P3-T1 -> P3-GATE -> P4-T1 -> P4-GATE -> P6-T1 ``` ## 변경 금지 항목 @@ -749,6 +775,21 @@ P1-T1 -> P1-GATE -> P2-T1 -> P2-T2 -> P2-T3 -> P2-GATE -> P3-T1 -> P3-GATE -> P4 - LSP diagnostics 도구는 제공되지 않아 Kotlin 컴파일과 ktlint로 대체했다. - 남은 항목: 없음. +### Phase 6 아이콘 변경 검증 — 2026-09-17 + +- 상태: 완료 +- 무엇을: 메인 대화 탭 우측 하단 `btn_new_dm` 아이콘 참조만 `@drawable/ic_new_talk_add`로 변경했는지 확인했다. +- 왜: 신규 PNG 리소스를 크리에이터 전용 `+` 버튼 아이콘으로 사용하고, 버튼의 다른 기능은 유지해야 하기 때문이다. +- 어떻게: + - `fragment_v2_main_chat.xml`의 `btn_new_dm` `android:src`를 `@drawable/ic_plus_no_bg`에서 `@drawable/ic_new_talk_add`로 변경했다. + - `./gradlew :app:mergeDebugResources --max-workers=1` 성공, `BUILD SUCCESSFUL`. + - `git diff --check` 출력 없음. + - `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.chat.ChatMainFragmentLayoutTest" --max-workers=1`은 `ChatMainFragmentLayoutTest.kt:71`의 기존 title bar source assertion에서 실패했다. 이번 변경 파일인 `fragment_v2_main_chat.xml`의 아이콘 참조와는 무관한 `llTitleBarActions.addView` source contract 실패다. +- 수동/제외 검증: + - 아이콘만 교체하는 리소스 참조 변경이므로 신규 local unit test는 작성하지 않았다. + - 사용자 지시에 따라 기기·에뮬레이터 조작, screenshot, visual QA는 실행하지 않았다. +- 남은 항목: 없음. + ### Phase 3 Gate 검증 — 2026-09-14 - 상태: 완료 diff --git a/docs/20260914_크리에이터의_리스너_DM_시작/prd.md b/docs/20260914_크리에이터의_리스너_DM_시작/prd.md index 3dabcf76..e3704899 100644 --- a/docs/20260914_크리에이터의_리스너_DM_시작/prd.md +++ b/docs/20260914_크리에이터의_리스너_DM_시작/prd.md @@ -110,7 +110,7 @@ MainV2Activity | ID | 상태 | 요구사항 | 수용 기준 | 계약/Goal 연결 | |---|---|---|---|---| | DM-001 | 확정 | 크리에이터는 메인 대화 탭에서 리스너에게 먼저 DM을 시작할 수 있다. | 크리에이터 계정에서 신규 수신자 선택 화면에 진입할 수 있다. | `P2-T3` | -| DM-002 | 확정 | 메인 대화 탭 우측 하단에 홈과 유사한 `+` 버튼을 추가한다. | 버튼은 크리에이터 역할 사용자에게만 보이고, 비크리에이터에게는 보이지 않는다. | `P1-T1`, `P2-T3` | +| DM-002 | 확정 | 메인 대화 탭 우측 하단에 `ic_new_talk_add` 아이콘을 사용하는 `+` 버튼을 추가한다. | 버튼은 크리에이터 역할 사용자에게만 보이고, 비크리에이터에게는 보이지 않는다. | `P1-T1`, `P2-T3`, `P6-T1` | ### 8.2 수신자 선택 화면