From fcb198c8a860fbe32db4ff758d40b98d0ea9fba1 Mon Sep 17 00:00:00 2001 From: klaus Date: Mon, 15 Jun 2026 22:40:53 +0900 Subject: [PATCH] =?UTF-8?q?docs(creator):=20=EC=B1=84=EB=84=90=20=ED=99=88?= =?UTF-8?q?=20=EC=B5=9C=EC=A2=85=20=EA=B2=80=EC=A6=9D=EC=9D=84=20=EA=B8=B0?= =?UTF-8?q?=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 ++++++++++++++++--- docs/20260611_크리에이터_채널_홈_탭/prd.md | 3 +++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/docs/20260611_크리에이터_채널_홈_탭/plan-task.md b/docs/20260611_크리에이터_채널_홈_탭/plan-task.md index 5cee5daa..86c301d6 100644 --- a/docs/20260611_크리에이터_채널_홈_탭/plan-task.md +++ b/docs/20260611_크리에이터_채널_홈_탭/plan-task.md @@ -880,26 +880,32 @@ - 2026-06-15: `UserProfileActivity` 진입 호출부를 확인한 결과, Phase 7 범위에서는 `v2/main/home`의 홈 추천/랭킹/크리에이터 카드처럼 이미 `creatorId`를 직접 보유한 확정 진입점만 신규 화면으로 전환했다. `HomeRecommendationBannerRoute.Creator`는 `CreatorChannelHomeActivity.newIntent(context, creatorId)`를 반환하도록 변경하고, `HomeMainFragment.openCreatorProfile(creatorId)`도 `CreatorChannelHomeActivity.newIntent(requireContext(), creatorId)`를 사용하도록 변경했다. 딥링크/알림/기존 프로필 화면 내부와 같이 정책 범위가 넓거나 다른 식별자 의미가 섞일 수 있는 호출부는 변경하지 않았다. `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeMainFragmentLayoutTest"`가 PASS했다. - 2026-06-15: 사용자 피드백에 따라 Task 7.3 의도를 재확인했고, 기존 크리에이터 채널인 `UserProfileActivity`로 이동하던 프로덕션 진입점을 신규 `CreatorChannelHomeActivity`로 전환하는 것이 요구사항임을 확인했다. RED로 `CreatorChannelHomeActivitySourceTest`에 `app/src/main/java`에서 `UserProfileActivity::class.java`와 `UserProfileActivity` import가 남으면 실패하는 검증을 추가했고, 기존 구현에서 실패함을 확인했다. 이후 딥링크/메인/홈/라이브/탐색/검색/팔로잉/알림설정/마이페이지/오디오 콘텐츠/시리즈/오디션/라이브 상세의 기존 채널 진입점을 모두 `CreatorChannelHomeActivity.newIntent(..., creatorId)`로 전환했다. 수정 후 동일 RED 테스트가 PASS했고, `rg`로 `app/src/main/java`에 외부 `UserProfileActivity` 직접 진입점이 남지 않음을 확인했다. - 2026-06-15: 후속 검증으로 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelHomeActivitySourceTest"`, `./gradlew :app:compileDebugKotlin`, `git diff --check`가 PASS했다. `rg -n "Intent\([^\n]*UserProfileActivity|UserProfileActivity::class\.java|import kr\.co\.vividnext\.sodalive\.explorer\.profile\.UserProfileActivity" app/src/main/java`는 match 없이 종료되어 프로덕션 직접 진입점이 제거되었음을 확인했다. `./gradlew :app:ktlintCheck`는 `audio_content` 패키지명 underscore 기존 규칙 위반 4건(`AudioContentNewAllActivity.kt`, `AudioContentAllByThemeActivity.kt`, `AudioContentDetailActivity.kt`, `SeriesDetailActivity.kt`)으로 실패했다. 패키지명 변경은 범위 밖이고 전역 ktlint rule 변경은 기존 전체 lint 부채를 노출해 범위를 크게 늘리므로 적용하지 않았다. + - 2026-06-15: 코드 리뷰에서 `AuditionRoleDetailActivity`의 지원자 닉네임 클릭은 `GetAuditionRoleApplicantItem.memberId`만 보유하고 `creatorId`/크리에이터 여부를 판별할 수 없어 신규 크리에이터 채널 홈으로 이동하면 잘못된 ID로 홈 API를 호출할 수 있음을 확인했다. RED로 `CreatorChannelHomeActivitySourceTest`에 오디션 지원자 `memberId` 프로필은 기존 `UserProfileActivity`로 이동한다는 계약을 추가해 실패를 확인했고, `AuditionRoleDetailActivity`의 해당 경로만 `UserProfileActivity`로 복구했다. 현재 API 응답만으로는 이 클릭에서 크리에이터 여부를 분기할 수 없으므로, 크리에이터 지원자만 신규 화면으로 보내려면 서버 응답에 `creatorId` 또는 `isCreator` 등 판별 필드가 추가되어야 한다. + - 2026-06-15: 후속 검증으로 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelHomeActivitySourceTest.오디션 지원자 memberId 프로필은 기존 UserProfileActivity로 이동한다"`, `./gradlew :app:compileDebugKotlin`, `git diff --check`가 PASS했다. --- ### Phase 8: 최종 검증과 문서 기록 -- [ ] **Task 8.1: 단위 테스트 실행** +- [x] **Task 8.1: 단위 테스트 실행** - 실행: - `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.common.*"` - `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.*"` - `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*"` - 기대 결과: - 신규 공용 타입, 크리에이터 채널 홈, 기존 홈 추천 관련 테스트가 모두 `BUILD SUCCESSFUL`로 통과한다. + - 검증 기록: + - 2026-06-15: Phase 8 최종 검증으로 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.common.*"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.*"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*"`를 순차 실행했다. 세 명령 모두 `BUILD SUCCESSFUL`로 통과했다. -- [ ] **Task 8.2: 리소스/컴파일/린트 검증** +- [x] **Task 8.2: 리소스/컴파일/린트 검증** - 실행: - `./gradlew :app:mergeDebugResources` - `./gradlew :app:compileDebugKotlin` - `./gradlew :app:ktlintCheck` - 기대 결과: - 모든 명령이 `BUILD SUCCESSFUL`로 통과한다. + - 검증 기록: + - 2026-06-15: Phase 8 최종 검증으로 `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`를 순차 실행했다. 세 명령 모두 `BUILD SUCCESSFUL`로 통과했다. `ktlintCheck`의 `.editorconfig disabled_rules` deprecation 경고와 Gradle deprecation warning은 기존 경고로 이번 변경과 무관하다. - [ ] **Task 8.3: 수동 화면 검증** - 확인: @@ -911,8 +917,11 @@ - 홈 API 응답의 각 section이 홈 탭에 표시된다. - 기대 결과: - PRD Metrics 항목을 모두 만족한다. + - 검증 기록: + - 2026-06-15: Figma `296:14890`, `296:14892`, `296:14287`, `296:14288`, `296:14289` 스크린샷을 확인해 전체 화면, 크리에이터 이미지 영역, 팔로우 상태별 title-bar 기준을 재확인했다. 구현 근거로 `activity_creator_channel_home.xml`의 status bar 뒤 header/overlay title-bar/tab-bar/RecyclerView 구조, `CreatorChannelHomeActivity.kt`의 title-bar 상태 bind/버튼 표시 조합/sticky tab/title-bar black 전환, `CreatorChannelTitleBarState.kt`, `CreatorChannelScrollState.kt`, `CreatorChannelHomeSectionAdapter.kt`, `CreatorChannelHomeActivitySourceTest.kt`를 대조했다. + - 2026-06-15: 실제 기기 표면 검증을 위해 `adb devices`에서 연결 기기 `2cec640c34017ece`가 한 차례 표시됨을 확인하고 `./gradlew :app:assembleDebug`를 실행해 `BUILD SUCCESSFUL`을 확인했다. 이어서 `adb install -r "app/build/outputs/apk/debug/app-debug.apk"`를 실행했으나 설치 시점에 `adb: no devices/emulators found`로 실패했고, 재확인한 `adb devices`에서도 연결 기기가 없어 실제 전면 화면 캡처와 스크롤/클릭 육안 검증은 완료하지 못했다. 기기 재연결 후 이 Task를 이어서 확인해야 한다. -- [ ] **Task 8.4: 검증 기록 누적** +- [x] **Task 8.4: 검증 기록 누적** - 수정: - `docs/20260611_크리에이터_채널_홈_탭/plan-task.md` - `docs/20260611_크리에이터_채널_홈_탭/prd.md` @@ -921,6 +930,8 @@ - 실패 후 수정한 명령이 있다면 실패 기록을 삭제하지 않고 후속 성공 기록을 추가한다. - 기대 결과: - 문서 하단에 구현 후 검증 이력이 남는다. + - 검증 기록: + - 2026-06-15: Phase 8.1, 8.2의 성공 기록과 Phase 8.3의 Figma/source 대조 및 실제 기기 연결 차단 기록을 `plan-task.md`와 `prd.md`에 누적했다. 기존 검증 기록은 삭제하거나 덮어쓰지 않았다. --- @@ -1000,3 +1011,6 @@ - 2026-06-15: 사용자 요청에 따라 기존 `UserProfileActivity`로 이동하던 크리에이터 채널 진입점을 신규 `CreatorChannelHomeActivity`로 전환하는 작업을 Phase 7의 `Task 7.3`으로 추가했다. 이번 단계는 계획 문서 추가만 수행했으며 해당 진입점 전환 구현/빌드/테스트는 아직 실행하지 않았다. - 2026-06-15: Phase 6 reviewer gate에서 sticky tab-bar가 `RecyclerView`보다 앞선 sibling이라 draw order상 컨텐츠에 가려질 수 있다는 blocking issue를 확인했다. `horizontal_tab_scroll_view`에 `android:elevation="1dp"`를 추가해 sticky tab-bar가 홈 컨텐츠 위에 그려지도록 수정하고 source test 계약을 보강했다. - 2026-06-15: Phase 6 reviewer gate 차단 이슈 수정 후 `CreatorChannelHomeActivitySourceTest`, `CreatorChannelScrollStateTest`, `:app:mergeDebugResources`, `:app:compileDebugKotlin`, `:app:ktlintCheck`, `git diff --check`를 재실행해 모두 `BUILD SUCCESSFUL` 또는 출력 없음으로 PASS했다. `ktlintCheck`의 `.editorconfig disabled_rules` deprecation 경고와 Gradle deprecation warning은 기존 경고로 이번 변경과 무관하다. +- 2026-06-15: Phase 8 최종 단위 테스트로 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.common.*"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.*"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*"`를 순차 실행해 모두 `BUILD SUCCESSFUL`을 확인했다. +- 2026-06-15: Phase 8 리소스/컴파일/린트 검증으로 `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`를 순차 실행해 모두 `BUILD SUCCESSFUL`을 확인했다. `ktlintCheck`의 `.editorconfig disabled_rules` deprecation 경고와 Gradle deprecation warning은 기존 경고로 이번 변경과 무관하다. +- 2026-06-15: Phase 8 수동 화면 검증 준비로 Figma `296:14890`, `296:14892`, `296:14287`, `296:14288`, `296:14289` 스크린샷을 확인하고, `CreatorChannelHomeActivity.kt`, `activity_creator_channel_home.xml`, `CreatorChannelTitleBarState.kt`, `CreatorChannelScrollState.kt`, `CreatorChannelHomeSectionAdapter.kt`, `CreatorChannelHomeActivitySourceTest.kt`를 대조했다. `./gradlew :app:assembleDebug`는 `BUILD SUCCESSFUL`이었으나, 설치/실행 시점에 연결 기기가 사라져 `adb install -r "app/build/outputs/apk/debug/app-debug.apk"`가 `adb: no devices/emulators found`로 실패했다. 재확인한 `adb devices`에도 기기가 없어 실제 전면 화면 캡처와 스크롤/클릭 육안 검증은 미완료로 남겼다. diff --git a/docs/20260611_크리에이터_채널_홈_탭/prd.md b/docs/20260611_크리에이터_채널_홈_탭/prd.md index dbe52007..d9d0e7c1 100644 --- a/docs/20260611_크리에이터_채널_홈_탭/prd.md +++ b/docs/20260611_크리에이터_채널_홈_탭/prd.md @@ -477,3 +477,6 @@ tab-bar는 스크롤 중 title-bar 하단에 고정되는 sticky 영역으로 - 2026-06-13: 사용자 추가 요청에 따라 신규 크리에이터 채널 홈 패키지를 `kr.co.vividnext.sodalive.v2.creatorchannel`에서 `kr.co.vividnext.sodalive.v2.creator.channel`로 변경했다. - 2026-06-13: 사용자 확인에 따라 백엔드 `CreatorActivityType` 원본 enum과 동일한 대문자 code 계약을 API 계약/기술 제약에 명시했다. 이후 코드리뷰에서는 별도 서버 계약 변경 근거가 없는 한 크리에이터 채널 홈 DTO의 `CreatorActivityType` 직접 사용과 Gson enum TypeAdapter 부재를 대소문자 대응 문제로 제기하지 않는다. 이번 단계는 문서 수정만 수행했으며 빌드/테스트는 실행하지 않았다. - 2026-06-15: 사용자 요청에 따라 탭 바 아래 홈 컨텐츠를 기존 동적 조립 UI에서 Figma `296:14895`의 `SectionTitle`, `Contents`, `Feed`, `ListComment`, `SNS` 컴포넌트 기반 UI로 전면 재구성하는 요구사항을 추가했다. 이번 단계는 문서 수정만 수행했으며 구현/빌드/테스트는 실행하지 않았다. +- 2026-06-15: Phase 8 최종 단위 테스트로 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.common.*"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.*"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*"`를 순차 실행해 모두 `BUILD SUCCESSFUL`을 확인했다. +- 2026-06-15: Phase 8 리소스/컴파일/린트 검증으로 `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`를 순차 실행해 모두 `BUILD SUCCESSFUL`을 확인했다. `ktlintCheck`의 `.editorconfig disabled_rules` deprecation 경고와 Gradle deprecation warning은 기존 경고로 이번 변경과 무관하다. +- 2026-06-15: Phase 8 수동 화면 검증 준비로 Figma `296:14890`, `296:14892`, `296:14287`, `296:14288`, `296:14289` 스크린샷을 확인하고 구현 소스와 source test를 대조했다. `./gradlew :app:assembleDebug`는 `BUILD SUCCESSFUL`이었으나, 설치/실행 시점에 연결 기기가 사라져 `adb install -r "app/build/outputs/apk/debug/app-debug.apk"`가 `adb: no devices/emulators found`로 실패했다. 재확인한 `adb devices`에도 기기가 없어 실제 전면 화면 캡처와 스크롤/클릭 육안 검증은 미완료로 남겼다.