diff --git a/docs/20260617_시리즈_original_tag_이미지_교체/plan-task.md b/docs/20260617_시리즈_original_tag_이미지_교체/plan-task.md new file mode 100644 index 00000000..72e62877 --- /dev/null +++ b/docs/20260617_시리즈_original_tag_이미지_교체/plan-task.md @@ -0,0 +1,44 @@ +# 시리즈 original tag 이미지 교체 Plan / Task + +## Goal +`CreatorChannelHomeSeriesCardView`에서 series original tag의 텍스트를 `@drawable/img_new_only` 이미지로 교체하고, 다른 series original tag 사용처를 조사한다. + +## Scenarios +- Happy path: `series.isOriginal == true`인 크리에이터 채널 홈 시리즈 카드에서 original tag container가 표시되고, icon 옆에 `img_new_only` 이미지가 표시된다. +- Edge: `series.isOriginal == false`이면 기존 `CreatorChannelHomeSeriesCardView.bind()` 로직대로 original tag container가 `GONE` 처리된다. +- Regression: 공용 `SeriesContentCardView`의 `view_series_original_tag.xml`은 이번 요청 범위가 아니므로 변경하지 않는다. + +### Phase 1: 사용처 조사 +- [x] **Task 1.1: series original tag 참조 검색** + - 파일: `app/src/main/java`, `app/src/main/res` + - 검증 기준: `layout_series_original_tag`, `include_series_original_tag`, `view_series_original_tag`, `isOriginal` 참조를 확인한다. + - 검증 기록: + - 무엇/왜/어떻게: `rg`로 original tag 관련 id, layout, flag 참조를 검색했다. + - 결과: 크리에이터 채널 홈 시리즈 카드 외에 공용 `SeriesContentCardView`가 `view_series_original_tag.xml`을 include해 original tag를 사용한다. + +### Phase 2: UI 리소스 교체 +- [x] **Task 2.1: Creator channel series original tag text 교체** + - 파일: `app/src/main/res/layout/item_creator_channel_home_series_content.xml` + - 변경: `tv_series_original_text` `TextView`를 `ImageView`로 교체하고 `@drawable/img_new_only`를 표시한다. + - 검증 기준: XML에서 `android:text="Only"`가 제거되고 `android:src="@drawable/img_new_only"`가 존재한다. + - 검증 기록: + - 무엇/왜/어떻게: 기존 `TextView`를 동일 id의 `ImageView`로 교체하고 mdpi 이미지 크기인 `37dp x 12dp`로 `@drawable/img_new_only`를 참조했다. + - 결과: 대상 XML에서 `android:text="Only"`가 제거되고 `android:src="@drawable/img_new_only"`가 추가됐다. + +### Phase 3: 검증 +- [x] **Task 3.1: 정적 검색 검증** + - 명령: `rg -n "android:text=\"Only\"|img_new_only|tv_series_original_text|layout_series_original_tag|include_series_original_tag|view_series_original_tag" app/src/main/res app/src/main/java` + - 기대 결과: 대상 카드에는 `img_new_only`가 표시되고, 공용 original tag 사용처는 별도로 남아 있음을 확인한다. + - 검증 기록: + - 무엇/왜/어떻게: `rg`로 `Only` 텍스트, `img_new_only`, series original tag id/layout 참조를 검색했다. + - 결과: 대상 카드의 `img_new_only` 참조를 확인했고 `android:text="Only"`는 검색 결과에 남지 않았다. 공용 `SeriesContentCardView`는 `view_series_original_tag.xml`을 계속 include한다. +- [x] **Task 3.2: Android debug build 검증** + - 명령: `./gradlew :app:assembleDebug` + - 기대 결과: exit code 0. + - 검증 기록: + - 무엇/왜/어떻게: Android resource/data binding 생성 및 Kotlin compile까지 포함하는 debug APK 빌드를 실행했다. + - 결과: `BUILD SUCCESSFUL in 56s`. + +## Verification Log +- `rg -n "android:text=\"Only\"|img_new_only|tv_series_original_text|layout_series_original_tag|include_series_original_tag|view_series_original_tag|SeriesContentCardView|setOriginalVisible|isOriginal" app/src/main/res app/src/main/java/kr/co/vividnext/sodalive/v2 app/src/main/java/kr/co/vividnext/sodalive/audio_content/series app/src/main/java/kr/co/vividnext/sodalive/home` 실행 결과, 크리에이터 채널 홈 시리즈 카드의 `img_new_only` 참조와 공용 `SeriesContentCardView` original tag 사용처를 확인했다. +- `./gradlew :app:assembleDebug` 실행 결과, debug build가 성공했다. diff --git a/docs/20260617_시리즈_original_tag_이미지_교체/prd.md b/docs/20260617_시리즈_original_tag_이미지_교체/prd.md new file mode 100644 index 00000000..29036576 --- /dev/null +++ b/docs/20260617_시리즈_original_tag_이미지_교체/prd.md @@ -0,0 +1,51 @@ +# PRD: 시리즈 original tag 이미지 교체 + +## 1. Overview +크리에이터 채널 홈의 시리즈 카드 original tag에서 텍스트 표시를 `img_new_only.png` 이미지 표시로 교체한다. + +## 2. Problem +- 현재 `CreatorChannelHomeSeriesCardView` 카드 레이아웃은 original tag에서 `Only` 텍스트를 직접 표시한다. +- 제공된 이미지 리소스와 실제 표시 방식이 달라 UI 일관성이 떨어질 수 있다. + +## 3. Goals +- `item_creator_channel_home_series_content.xml`의 original tag 텍스트를 `@drawable/img_new_only` 이미지로 교체한다. +- series original tag를 사용하는 다른 위치를 조사해 변경 여부를 명확히 보고한다. + +## 4. Non-Goals +- 공용 `SeriesContentCardView`의 original tag 디자인 변경은 이번 범위에서 제외한다. +- `isOriginal` 바인딩 로직이나 API 모델은 변경하지 않는다. +- 신규 UI 컴포넌트는 추가하지 않는다. + +## 5. Target Users +- 크리에이터 채널 홈에서 시리즈 카드를 보는 사용자. + +## 6. User Stories +- 사용자는 original 시리즈 카드에서 텍스트 대신 제공된 이미지 태그를 본다. +- 개발자는 다른 series original tag 사용처가 영향을 받는지 확인할 수 있다. + +## 7. Core Features + +### Feature A: Creator channel series original tag image + +#### Requirements +- 기존 `layout_series_original_tag` 표시 여부는 `series.isOriginal`에 따른다. +- 기존 original icon은 유지한다. +- `Only` 텍스트 위치에는 `@drawable/img_new_only` 이미지를 표시한다. + +#### Edge Cases +- `series.isOriginal == false`이면 기존처럼 tag container가 숨겨진다. + +## 8. UX / UI Expectations +- `img_new_only.png` 원본 크기인 mdpi `37dp x 12dp` 기준으로 표시한다. +- 이미지 자체가 장식/라벨 역할을 하므로 별도 접근성 문구는 추가하지 않는다. + +## 9. Technical Constraints +- Android XML View 기반 레이아웃만 최소 수정한다. +- 기존 Kotlin custom view 코드는 변경하지 않는다. + +## 10. Metrics +- 빌드 성공 여부. +- `rg` 검색으로 기존 `Only` 텍스트 잔존 여부와 다른 series original tag 사용처 확인. + +## 11. Open Questions +- 없음.