From cc14353fa4729316f2f21e2c8c67ac1935c18c67 Mon Sep 17 00:00:00 2001 From: Yu Sung Date: Wed, 1 Jul 2026 20:14:17 +0900 Subject: [PATCH] =?UTF-8?q?docs(creator):=20=EC=B1=84=EB=84=90=20=ED=99=88?= =?UTF-8?q?=20=EA=B5=AC=ED=98=84=20=EA=B8=B0=EB=A1=9D=EC=9D=84=20=EA=B0=B1?= =?UTF-8?q?=EC=8B=A0=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/20260701_크리에이터_채널_홈/plan-task.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/docs/20260701_크리에이터_채널_홈/plan-task.md b/docs/20260701_크리에이터_채널_홈/plan-task.md index a36454ac..f2db4f1e 100644 --- a/docs/20260701_크리에이터_채널_홈/plan-task.md +++ b/docs/20260701_크리에이터_채널_홈/plan-task.md @@ -78,7 +78,7 @@ ### Phase 1: API와 상태 모델 -- [ ] **Task 1.1: 크리에이터 채널 홈 Response model 생성** +- [x] **Task 1.1: 크리에이터 채널 홈 Response model 생성** - 대상 파일: - 생성: `SodaLive/Sources/V2/CreatorChannel/Home/Models/CreatorChannelHomeResponse.swift` - 확인: `SodaLive/Sources/V2/Main/Home/Following/Models/HomeFollowingTabResponse.swift` @@ -92,7 +92,7 @@ - 실행 명령: `rg "struct CreatorChannelHomeResponse|struct CreatorChannelCreatorResponse|struct CreatorChannelLiveResponse|struct CreatorChannelAudioContentResponse|struct CreatorChannelDonationResponse|struct CreatorChannelScheduleResponse|struct CreatorChannelSeriesResponse|struct CreatorChannelCommunityPostResponse|struct CreatorChannelFanTalkSummaryResponse|struct CreatorChannelActivityResponse|struct CreatorChannelSnsResponse" SodaLive/Sources/V2/CreatorChannel/Home/Models/CreatorChannelHomeResponse.swift` - 기대 결과: PRD의 응답 모델이 Swift 파일에 모두 존재하고 id/count 타입이 `Int`이다. -- [ ] **Task 1.2: 홈 tab enum 생성** +- [x] **Task 1.2: 홈 tab enum 생성** - 대상 파일: - 생성: `SodaLive/Sources/V2/CreatorChannel/Home/Models/CreatorChannelHomeTab.swift` - 작업 내용: @@ -104,7 +104,7 @@ - 실행 명령: `rg "enum CreatorChannelHomeTab|case home|case live|case audio|case series|case community|case fanTalk|case donation|화보|photo" SodaLive/Sources/V2/CreatorChannel/Home/Models/CreatorChannelHomeTab.swift` - 기대 결과: 7개 tab case가 있고 `화보`/`photo` case가 없다. -- [ ] **Task 1.3: API endpoint 생성** +- [x] **Task 1.3: API endpoint 생성** - 대상 파일: - 생성: `SodaLive/Sources/V2/CreatorChannel/Home/Repository/CreatorChannelHomeApi.swift` - 확인: `SodaLive/Sources/V2/Main/Home/Ranking/Repository/MainHomeRankingApi.swift` @@ -118,7 +118,7 @@ - 실행 명령: `rg "enum CreatorChannelHomeApi|getHome\\(creatorId: Int\\)|/api/v2/creator-channels/|/home|TargetType|requestPlain|Authorization" SodaLive/Sources/V2/CreatorChannel/Home/Repository/CreatorChannelHomeApi.swift` - 기대 결과: 신규 endpoint와 인증 헤더가 확인된다. -- [ ] **Task 1.4: Repository 생성** +- [x] **Task 1.4: Repository 생성** - 대상 파일: - 생성: `SodaLive/Sources/V2/CreatorChannel/Home/Repository/CreatorChannelHomeRepository.swift` - 확인: `SodaLive/Sources/V2/Main/Home/Ranking/Repository/MainHomeRankingRepository.swift` @@ -129,7 +129,7 @@ - 실행 명령: `rg "final class CreatorChannelHomeRepository|MoyaProvider|getHome\\(creatorId: Int\\)|AnyPublisher" SodaLive/Sources/V2/CreatorChannel/Home/Repository/CreatorChannelHomeRepository.swift` - 기대 결과: 기존 V2 Repository와 같은 형태가 확인된다. -- [ ] **Task 1.5: ViewModel 생성 및 API 실패 placeholder 상태 정의** +- [x] **Task 1.5: ViewModel 생성 및 API 실패 placeholder 상태 정의** - 대상 파일: - 생성: `SodaLive/Sources/V2/CreatorChannel/Home/CreatorChannelHomeViewModel.swift` - 확인: `SodaLive/Sources/V2/Main/Home/Ranking/MainHomeRankingViewModel.swift` @@ -149,7 +149,7 @@ ### Phase 2: 라우팅과 기본 화면 shell -- [ ] **Task 2.1: 기존 creatorDetail 라우팅을 신규 홈으로 연결** +- [x] **Task 2.1: 기존 creatorDetail 라우팅을 신규 홈으로 연결** - 대상 파일: - 수정: `SodaLive/Sources/ContentView.swift` - 생성: `SodaLive/Sources/V2/CreatorChannel/Home/CreatorChannelHomeView.swift` @@ -163,7 +163,7 @@ - 실행 명령: `rg "case \\.creatorDetail|CreatorChannelHomeView\\(creatorId: userId\\)|UserProfileView\\(userId:" SodaLive/Sources/ContentView.swift SodaLive/Sources/V2/CreatorChannel/Home/CreatorChannelHomeView.swift` - 기대 결과: `.creatorDetail`이 신규 `CreatorChannelHomeView`로 연결되고 기존 `UserProfileView` 파일은 유지된다. -- [ ] **Task 2.2: 기본 shell과 로딩/API 실패 placeholder 구성** +- [x] **Task 2.2: 기본 shell과 로딩/API 실패 placeholder 구성** - 대상 파일: - 수정: `SodaLive/Sources/V2/CreatorChannel/Home/CreatorChannelHomeView.swift` - 생성: `SodaLive/Sources/V2/CreatorChannel/Home/Components/CreatorChannelPlaceholderTabView.swift` @@ -178,7 +178,7 @@ - 실행 명령: `rg "@StateObject private var viewModel|fetchHome\\(creatorId: creatorId\\)|isApiFailedPlaceholderVisible|CreatorChannelPlaceholderTabView|LoadingView|Color.black" SodaLive/Sources/V2/CreatorChannel/Home/CreatorChannelHomeView.swift SodaLive/Sources/V2/CreatorChannel/Home/Components/CreatorChannelPlaceholderTabView.swift` - 기대 결과: API 호출, 실패 placeholder, 홈 외 tab placeholder shell이 확인된다. -- [ ] **Task 2.3: I18n 문구 추가** +- [x] **Task 2.3: I18n 문구 추가** - 대상 파일: - 수정: `SodaLive/Sources/I18n/I18n.swift` - 작업 내용: @@ -550,3 +550,4 @@ - 2026-07-01: 기존 V2 홈 API/Repository/ViewModel, AI 채팅 guard, follow/unfollow API, SNS asset 사용처를 확인해 대상 파일과 검증 기준에 반영했다. - 2026-07-01: 사용자 요청에 따라 기존 Phase 4 `대화하기 액션 영역`을 Phase 17로 이동하고, 기존 Phase 5~17을 Phase 4~16으로 한 칸씩 당겼다. - 2026-07-01: Header, TitleBar, TabBar만으로 sticky 동작을 먼저 확인할 수 있도록 Phase 3에 `CreatorChannelHomeView_Previews` 기반 debug-only sticky scaffold 검증 task를 추가했다. +- 2026-07-01: Phase 1~2 구현을 완료하고 `rg` 체크리스트 및 `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build` 성공으로 신규 API/상태 모델, 라우팅, 기본 shell, I18n, 프로젝트 파일 포함을 검증했다.