From a00745dd3817bc2525ce3e7eac69709de62c9119 Mon Sep 17 00:00:00 2001 From: klaus Date: Sun, 12 Jul 2026 08:33:02 +0900 Subject: [PATCH] =?UTF-8?q?docs(content):=20=EC=83=81=EC=84=B8=20=EC=98=A4?= =?UTF-8?q?=EB=94=94=EC=98=A4=20=EA=B5=AC=EB=A7=A4=20=EA=B2=80=EC=A6=9D?= =?UTF-8?q?=EC=9D=84=20=EA=B8=B0=EB=A1=9D=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plan-task.md | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/docs/20260708_커뮤니티_게시물_상세_댓글_답글/plan-task.md b/docs/20260708_커뮤니티_게시물_상세_댓글_답글/plan-task.md index b76ca327..f7bf56c2 100644 --- a/docs/20260708_커뮤니티_게시물_상세_댓글_답글/plan-task.md +++ b/docs/20260708_커뮤니티_게시물_상세_댓글_답글/plan-task.md @@ -252,11 +252,31 @@ - 검증: `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.community.CreatorChannelCommunityDetailReplyUiContractTest"`, `./gradlew :app:ktlintCheck`, `git diff --check` - 검증 기록(2026-07-12): 상세 게시글 컨테이너의 `bg_feed_card` 배경을 제거해 목록형 rounded card 배경이 상세 상단 본문에는 적용되지 않도록 했다. 게시글과 댓글 헤더 사이에는 `gray_800` 1dp divider를 추가하고 댓글 가능 상태에서만 노출되도록 Activity binding을 연결했다. 댓글 item 하단 divider에는 id를 부여하고 adapter에서 마지막 댓글의 divider를 숨겨 댓글 사이 border로만 보이게 했다. `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.community.CreatorChannelCommunityDetailReplyUiContractTest"`, `./gradlew :app:ktlintCheck`, `git diff --check`가 모두 통과했다. `ktlintCheck`의 `.editorconfig disabled_rules` deprecation 경고는 기존 설정 경고로 남아 있다. +### Phase 13: 커뮤니티 상세 오디오/구매 후속 반영 + +- [x] **Task 13.1: 상세 오디오 중앙 버튼과 구매 회귀 테스트 추가** + - 수정: `app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/community/CreatorChannelCommunityDetailViewModelTest.kt`, `CreatorChannelCommunityDetailReplyUiContractTest.kt` + - 작업: 상세 layout에 이미지 중앙 play/pause 버튼이 있고, Activity가 `PurchaseCommunityPostDialog`와 `purchaseCommunityPost`를 연결하며, ViewModel이 구매 성공 후 상세를 재조회하는 계약을 RED로 고정한다. + - 검증: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.community.CreatorChannelCommunityDetailViewModelTest"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.community.CreatorChannelCommunityDetailReplyUiContractTest"` + - 검증 기록(2026-07-12): 상세 layout의 중앙 오디오 버튼 id, legacy 구매 dialog 연결, ViewModel 구매 성공 후 상세 재조회 계약을 테스트에 추가했다. 최초 병렬 Gradle 실행은 120초/300초 timeout 및 병렬 resource packaging 충돌성 `NoSuchFileException`으로 완료 결과를 얻지 못했으나, 구현 후 순차 재실행에서 동일 테스트들이 PASS했다. + +- [x] **Task 13.2: 상세 오디오 중앙 버튼과 구매 흐름 구현** + - 수정: `app/src/main/res/layout/activity_creator_channel_community_detail.xml`, `CreatorChannelCommunityDetailActivity.kt`, `CreatorChannelCommunityDetailViewModel.kt` + - 작업: `item_creator_community_all.xml`의 `iv_play_or_pause`처럼 상세 이미지 중앙 버튼을 추가하고, 재생 상태에 따라 play/pause drawable을 갱신한다. 상세 paywall 가격 클릭 시 기존 구매 dialog를 띄우고 구매 성공 후 상세를 다시 로드한다. + - 검증: targeted test PASS, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin` + - 검증 기록(2026-07-12): `activity_creator_channel_community_detail.xml`의 이미지 컨테이너 중앙에 `iv_creator_channel_community_detail_play_or_pause`를 추가하고 `btn_audio_content_play`/`btn_audio_content_pause`를 사용하도록 연결했다. `CreatorChannelCommunityDetailActivity`는 이미지+오디오 게시물에서 중앙 버튼을 표시하고, 이미지 없는 오디오 게시물은 기존 텍스트 오디오 버튼을 유지한다. paywall 영역 클릭 시 기존 `PurchaseCommunityPostDialog`를 띄우고 확인 시 `CreatorChannelCommunityDetailViewModel.purchaseCommunityPost()`를 호출한다. ViewModel은 기존 `CreatorCommunityRepository.purchaseCommunityPost`를 호출한 뒤 성공 시 상세를 다시 로드한다. `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin` PASS로 확인했다. + +- [x] **Task 13.3: 후속 검증** + - 실행: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.community.*"`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `git diff --check` + - 검증 기록: `Verification Log`에 누적한다. + - 검증 기록(2026-07-12): `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.community.CreatorChannelCommunityDetailViewModelTest"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.community.CreatorChannelCommunityDetailReplyUiContractTest"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.community.*"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `git diff --check`가 모두 통과했다. `ktlintCheck`의 `.editorconfig disabled_rules` deprecation 경고와 Gradle deprecated feature 경고는 기존 설정 경고로 남아 있다. + --- ## Verification Log - 구현 전 문서 작성 단계에서는 Gradle 검증을 실행하지 않았다. +- 2026-07-12: 커뮤니티 상세 오디오 중앙 버튼 및 유료 게시글 구매 후속 변경을 반영했다. 상세 ViewModel 구매 회귀 테스트, 상세 UI 계약 테스트, 커뮤니티 targeted 테스트, 리소스 병합, Kotlin 컴파일, ktlint, diff whitespace 검증이 모두 통과했다. 최초 병렬 Gradle 실행 중 resource packaging incremental output 충돌성 오류가 한 번 발생했으나 순차 재실행에서 재현되지 않았다. - 2026-07-08: 추가 review findings 반영 범위를 확정했다. 상세/답글 변경 결과를 상위 커뮤니티 목록과 상세 댓글/답글 카운트에 반영하고, 좋아요 API의 `success=false` 응답에서 낙관적 상태를 롤백하며, 댓글/답글 입력창을 3줄까지 자동 확장되도록 고정 높이를 제거하고, 수정 내용이 없을 때 기존 `audio_content_comment_no_change` toast를 표시하도록 보강한다. - 2026-07-08: Phase 2.3/3.2 UI 구현 전 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.community.*"`를 실행해 신규 activity/layout/item/source가 없어 `compileDebugUnitTestKotlin` RED 실패를 확인했다. - 2026-07-08: Phase 2.3/3.2 UI 구현 후 동일 targeted 테스트를 재실행해 48개 테스트 PASS를 확인했다. Robolectric inflate로 상세/답글 layout의 title back/content/input bar 및 item layout 계약을 확인했고, source 검사로 AppDI/manifest/ViewModel binding/popup menu/comment hidden/newIntent 계약을 확인했다.