7.8 KiB
7.8 KiB
크리에이터 상세정보 다이얼로그 구현 계획
구현 체크리스트
- 1단계: 크리에이터 상세정보 다이얼로그 요구사항 및 기존 구현 패턴을 확인한다.
- 대상 파일:
app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/UserProfileActivity.kt,app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/detail/GetCreatorDetailResponse.kt,app/src/main/java/kr/co/vividnext/sodalive/dialog/MemberProfileDialog.kt,app/src/main/res/values/strings.xml
- 대상 파일:
- 2단계:
kr.co.vividnext.sodalive.explorer.profile.detail패키지에 크리에이터 상세정보 Custom Dialog UI/로직을 구현한다.- 대상 파일:
app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/detail/*.kt,app/src/main/res/layout/*.xml,app/src/main/res/drawable/*.xml
- 대상 파일:
- 3단계:
UserProfileActivity에서tvNotificationCount클릭 시 상세정보 다이얼로그가 표시되도록 연결한다.- 대상 파일:
app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/UserProfileActivity.kt,app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/UserProfileViewModel.kt,app/src/main/java/kr/co/vividnext/sodalive/explorer/ExplorerApi.kt,app/src/main/java/kr/co/vividnext/sodalive/explorer/ExplorerRepository.kt
- 대상 파일:
- 4단계: 팔로워 문구를
팔로워 OO명 · 상세정보 >형태로 국제화 문자열에 반영한다.- 대상 파일:
app/src/main/res/values/strings.xml,app/src/main/res/values-en/strings.xml,app/src/main/res/values-ja/strings.xml
- 대상 파일:
- 5단계: 진단/테스트/빌드 검증을 수행하고 문서 하단 검증 기록에 누적한다.
- 대상 명령:
./gradlew :app:testDebugUnitTest,./gradlew :app:assembleDebug
- 대상 명령:
작업 메모
@docs/20260224_AGENTS문서정비.md의 제목/섹션 구조를 기준 포맷으로 채택한다.- 구현 중 범위 변경 시 체크리스트를 먼저 갱신한 뒤 코드 변경을 진행한다.
- SNS 아이콘/정렬 정책 추가 반영:
ic_sns_*아이콘 사용, 노출 순서유튜브 -> 인스타그램 -> 오픈채팅 -> fancimm -> x고정.
검증 기록
1) 계획 문서 포맷 정렬
- 무엇: 계획 문서를
제목 -> 구현 체크리스트 -> 작업 메모 -> 검증 기록구조로 정렬. - 왜: 초기 기준 문서(
docs/20260224_AGENTS문서정비.md)와 동일한 작성 규칙을 유지하기 위해. - 어떻게:
docs/20260224_AGENTS문서정비.md의 헤더 구조를 확인.docs/20260225_크리에이터상세정보다이얼로그구현.md에 제목/체크리스트/메모 섹션을 추가 및 정리.
- 결과: 계획 문서 형식이 기준 문서와 동일한 섹션 구조로 정렬됨.
2) 상세정보 다이얼로그 및 문자열 반영
- 무엇: 크리에이터 상세정보 다이얼로그 구현 및
tvNotificationCount연결, 팔로워 문구 국제화 반영. - 왜: 팔로워 수 클릭 시 상세정보 노출 UX와 다국어 문구 요구사항을 충족하기 위해.
- 어떻게:
CreatorDetailDialog/dialog_creator_detail.xml/ic_x_white.xml생성.ExplorerApi/ExplorerRepository/UserProfileViewModel에 크리에이터 상세 API 호출 흐름 추가.UserProfileActivity에서tvNotificationCount클릭 시 상세 다이얼로그 표시 연결.values/strings.xml,values-en/strings.xml,values-ja/strings.xml의 팔로워 문구를... · ... >형태로 변경하고 상세정보 타이틀 문자열 추가.
- 결과: 요구한 다이얼로그 표시 흐름과 국제화 문자열 반영 완료.
3) 진단/테스트/빌드 검증
- 무엇: 변경 파일 진단 및 단위 테스트/디버그 빌드 수행.
- 왜: 구현 반영 후 컴파일/리소스/테스트 안정성을 확인하기 위해.
- 어떻게:
lsp_diagnostics를 수정한 Kotlin/XML 파일에 실행 시도../gradlew :app:testDebugUnitTest :app:assembleDebug실행.
- 결과:
- LSP: 현재 환경에서 Kotlin/XML LSP 미설정(
No LSP server configured for extension: .kt/.xml). - Gradle:
BUILD SUCCESSFUL(unit test + debug assemble 통과).
- LSP: 현재 환경에서 Kotlin/XML LSP 미설정(
4) 추가 수정 후 재검증
- 무엇: SNS 항목 확장 반영(
fancimmUrl,websiteUrl,blogUrl) 이후 재검증. - 왜: 마지막 코드 변경 이후에도 빌드/테스트가 정상인지 확인하기 위해.
- 어떻게:
lsp_diagnostics로CreatorDetailDialog.kt진단 실행 시도../gradlew :app:testDebugUnitTest :app:assembleDebug재실행.
- 결과:
- LSP: Kotlin LSP 미설정(
No LSP server configured for extension: .kt). - Gradle:
BUILD SUCCESSFUL.
- LSP: Kotlin LSP 미설정(
5) 최종 변경 반영 후 검증
- 무엇: SNS 아이템 노출 필드(오픈채팅/인스타그램/유튜브/팬심/X/웹사이트/블로그) 최종 반영 후 재검증.
- 왜: 마지막 수정 이후에도 테스트/빌드 통과 상태를 보장하기 위해.
- 어떻게:
lsp_diagnostics로CreatorDetailDialog.kt진단 실행 시도../gradlew :app:testDebugUnitTest :app:assembleDebug실행.
- 결과:
- LSP: Kotlin LSP 미설정(
No LSP server configured for extension: .kt). - Gradle:
BUILD SUCCESSFUL.
- LSP: Kotlin LSP 미설정(
6) SNS 순서/아이콘 정책 반영 후 재검증
- 무엇: SNS 노출 순서를
유튜브 -> 인스타그램 -> 오픈채팅 -> fancimm -> x로 고정하고ic_sns_*아이콘 사용으로 통일. - 왜: 추가 요청된 UI 정책을 정확히 반영하기 위해.
- 어떻게:
CreatorDetailDialog.kt의 SNS 리스트 순서와 아이콘 리소스를ic_sns_youtube,ic_sns_instagram,ic_sns_kakao,ic_sns_fancimm,ic_sns_x로 수정../gradlew :app:testDebugUnitTest :app:assembleDebug실행.
- 결과:
BUILD SUCCESSFUL.
7) 프로필 이미지 1:1 전체 폭 반영 후 재검증
- 무엇: 상세 다이얼로그 프로필 이미지를 다이얼로그 가로 전체 폭으로 확장하고 1:1 비율로 고정.
- 왜: 추가 요청된 UI 규격(가로 full + 정사각형 비율)을 충족하기 위해.
- 어떻게:
dialog_creator_detail.xml에서 이미지 블록을 상단 full-width ConstraintLayout으로 분리.ImageView를0dp x 0dp+app:layout_constraintDimensionRatio="1:1"로 설정해 가로 기준 정사각형을 강제../gradlew :app:testDebugUnitTest :app:assembleDebug실행.
- 결과:
- LSP: XML LSP 미설정(
No LSP server configured for extension: .xml). - Gradle:
BUILD SUCCESSFUL.
- LSP: XML LSP 미설정(
8) 최근 2회 수정 롤백 및 검증
- 무엇: 직전 2회 수정(라운드/패딩/스크롤 구조 변경, 긴급 표시 수정)을 롤백.
- 왜: 요청에 따라 최근 2회 수정 내용을 원복하기 위해.
- 어떻게:
dialog_creator_detail.xml을 롤백 전 구조(루트wrap_content, 스크롤wrap_content, 이미지0dp/0dp + ratio 1:1)로 복원.CreatorDetailDialog.kt를 롤백 전 상태(CircleCropTransformation, 다이얼로그 높이WRAP_CONTENT,ivProfile.post제거)로 복원../gradlew :app:testDebugUnitTest :app:assembleDebug실행.
- 결과:
- LSP: Kotlin/XML LSP 미설정(
No LSP server configured for extension: .kt/.xml). - Gradle:
BUILD SUCCESSFUL.
- LSP: Kotlin/XML LSP 미설정(
9) 라이브 누적 시간 섹션 추가
- 무엇:
라이브 총 횟수아래에 동일 UI 패턴의라이브 누적 시간섹션을 추가하고liveTime값을 표시. - 왜: 추가 요청된 정보 항목을 동일한 상세정보 구조로 노출하기 위해.
- 어떻게:
dialog_creator_detail.xml에ll_section_live_time,tv_live_time_title,tv_live_time_value추가.CreatorDetailDialog.kt에서detail.activitySummary.liveTime을moneyFormat()으로 바인딩.values/strings.xml,values-en/strings.xml,values-ja/strings.xml에screen_creator_detail_live_time문자열 추가../gradlew :app:testDebugUnitTest :app:assembleDebug실행.
- 결과:
- LSP: Kotlin/XML LSP 미설정(
No LSP server configured for extension: .kt/.xml). - Gradle:
BUILD SUCCESSFUL.
- LSP: Kotlin/XML LSP 미설정(