docs(content): original tag 이미지 교체를 기록한다

This commit is contained in:
2026-06-25 19:11:30 +09:00
parent 7748431330
commit bb00dd13b0
2 changed files with 28 additions and 5 deletions

View File

@@ -1,12 +1,13 @@
# 시리즈 original tag 이미지 교체 Plan / Task
## Goal
`CreatorChannelHomeSeriesCardView`에서 series original tag의 텍스트를 `@drawable/img_new_only` 이미지로 교체하고, 다른 series original tag 사용처를 조사한다.
`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`은 이번 요청 범위가 아니므로 변경하지 않는다.
- Follow-up happy path: 공용 `SeriesContentCardView`에서 `isOriginal == true`이면 `fl_series_original_tag`가 기존 위치에 표시되고, `iv_series_original_icon` 옆에 `img_new_only` 이미지가 표시된다.
- Regression: 기존 creator channel 전용 original tag 레이아웃은 후속 요청 범위가 아니므로 리팩터링하지 않는다.
### Phase 1: 사용처 조사
- [x] **Task 1.1: series original tag 참조 검색**
@@ -24,6 +25,13 @@
- 검증 기록:
- 무엇/왜/어떻게: 기존 `TextView`를 동일 id의 `ImageView`로 교체하고 mdpi 이미지 크기인 `37dp x 12dp``@drawable/img_new_only`를 참조했다.
- 결과: 대상 XML에서 `android:text="Only"`가 제거되고 `android:src="@drawable/img_new_only"`가 추가됐다.
- [x] **Task 2.2: Common series original tag text 교체**
- 파일: `app/src/main/res/layout/view_series_original_tag.xml`
- 변경: `tv_series_original_text` `TextView`를 동일 id의 `ImageView`로 교체하고 `@drawable/img_new_only`를 표시한다.
- 검증 기준: `iv_series_original_icon` 속성은 그대로 유지되고, `tv_series_original_text``ImageView``android:contentDescription="@null"``android:src="@drawable/img_new_only"`를 가진다.
- 검증 기록:
- 무엇/왜/어떻게: 크리에이터 채널 original tag 이미지 패턴의 `18dp` 오프셋과 장식 이미지 접근성 처리를 공용 layout에 적용했다.
- 결과: 공용 tag container `fl_series_original_tag`와 original icon은 유지되고 텍스트 영역만 이미지로 교체됐다.
### Phase 3: 검증
- [x] **Task 3.1: 정적 검색 검증**
@@ -42,3 +50,8 @@
## 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가 성공했다.
- 후속 요청 검증: `view_series_original_tag.xml`에서 `tv_series_original_text`가 동일 id의 `ImageView`로 교체됐고 `@drawable/img_new_only`, `android:contentDescription="@null"`를 참조함을 확인했다. 기존 creator channel 전용 layout은 변경하지 않았다.
- 후속 요청 검색 검증: `rg -n "android:text=\"ORIGINAL\"|<TextView[\\s\\S]*tv_series_original_text|tv_series_original_text|img_new_only|fl_series_original_tag|iv_series_original_icon" app/src/main/res/layout/view_series_original_tag.xml` 실행 결과, 공용 tag container, original icon, 유지된 `tv_series_original_text` id, `img_new_only` 참조를 확인했고 `android:text="ORIGINAL"`은 검색되지 않았다.
- 후속 공용 `view_series_original_tag.xml` 변경 후 `./gradlew :app:assembleDebug`를 실행한 결과, `BUILD SUCCESSFUL in 48s`로 debug build가 성공했다.
- 후속 크기 수정 검증: `view_series_content_card.xml``include_series_original_tag`에서 고정 `101dp`/`@dimen/spacing_24` 크기를 제거하고 `wrap_content`로 변경해 `view_series_original_tag.xml`의 루트 크기가 덮이지 않도록 했다. `rg -n "include_series_original_tag|view_series_original_tag|android:layout_width=\"101dp\"|android:layout_height=\"@dimen/spacing_24\"" app/src/main/res/layout/view_series_content_card.xml app/src/main/res/layout/view_series_original_tag.xml app/src/main/res/layout/item_content_original_series.xml` 실행 결과, 공용 include 참조와 `wrap_content` 적용을 확인했고 해당 고정 크기는 검색되지 않았다.
- 후속 크기 수정 빌드 검증: `./gradlew :app:assembleDebug`를 실행한 결과, `BUILD SUCCESSFUL in 25s`로 debug build가 성공했다.

View File

@@ -1,23 +1,25 @@
# PRD: 시리즈 original tag 이미지 교체
## 1. Overview
크리에이터 채널 홈 시리즈 카드 original tag에서 텍스트 표시를 `img_new_only.png` 이미지 표시로 교체한다.
크리에이터 채널 홈 및 공용 시리즈 카드 original tag에서 텍스트 표시를 `img_new_only.png` 이미지 표시로 교체한다.
## 2. Problem
- 현재 `CreatorChannelHomeSeriesCardView` 카드 레이아웃은 original tag에서 `Only` 텍스트를 직접 표시한다.
- 후속 요청으로 공용 `view_series_original_tag.xml``ORIGINAL` 텍스트 대신 동일한 이미지 라벨을 사용해야 한다.
- 제공된 이미지 리소스와 실제 표시 방식이 달라 UI 일관성이 떨어질 수 있다.
## 3. Goals
- `item_creator_channel_home_series_content.xml`의 original tag 텍스트를 `@drawable/img_new_only` 이미지로 교체한다.
- `view_series_original_tag.xml`의 공용 original tag 텍스트를 `@drawable/img_new_only` 이미지로 교체한다.
- series original tag를 사용하는 다른 위치를 조사해 변경 여부를 명확히 보고한다.
## 4. Non-Goals
- 공용 `SeriesContentCardView`의 original tag 디자인 변경은 이번 범위에서 제외한다.
- 기존 creator channel 전용 original tag 레이아웃은 후속 범위에서 리팩터링하지 않는다.
- `isOriginal` 바인딩 로직이나 API 모델은 변경하지 않는다.
- 신규 UI 컴포넌트는 추가하지 않는다.
## 5. Target Users
- 크리에이터 채널 홈에서 시리즈 카드를 보는 사용자.
- 크리에이터 채널 홈 및 공용 시리즈 카드에서 original tag를 보는 사용자.
## 6. User Stories
- 사용자는 original 시리즈 카드에서 텍스트 대신 제공된 이미지 태그를 본다.
@@ -32,11 +34,19 @@
- 기존 original icon은 유지한다.
- `Only` 텍스트 위치에는 `@drawable/img_new_only` 이미지를 표시한다.
### Feature B: Common series original tag image
#### Requirements
- 기존 `fl_series_original_tag` container와 `iv_series_original_icon` 속성은 유지한다.
- 기존 `tv_series_original_text` id는 유지하되 `TextView` 대신 `ImageView`로 교체한다.
- 교체된 이미지는 `@drawable/img_new_only`를 표시하고 `android:contentDescription="@null"`을 사용한다.
#### Edge Cases
- `series.isOriginal == false`이면 기존처럼 tag container가 숨겨진다.
## 8. UX / UI Expectations
- `img_new_only.png` 원본 크기인 mdpi `37dp x 12dp` 기준으로 표시한다.
- 공용 original tag는 `isOriginal == true`일 때 기존처럼 좌상단에서 시각적으로 사용 가능해야 한다.
- 이미지 자체가 장식/라벨 역할을 하므로 별도 접근성 문구는 추가하지 않는다.
## 9. Technical Constraints