diff --git a/docs/20260626_현재진행중인라이브조회_API/plan-task.md b/docs/20260626_현재진행중인라이브조회_API/plan-task.md index 0b45295a..e6f3961c 100644 --- a/docs/20260626_현재진행중인라이브조회_API/plan-task.md +++ b/docs/20260626_현재진행중인라이브조회_API/plan-task.md @@ -107,7 +107,7 @@ data class HomeLiveRecommendationRecord( ### Phase 1: 도메인 조회 record 확장 -- [ ] **Task 1.1: 라이브 추천 record에 title/price/beginDateTime 포함** +- [x] **Task 1.1: 라이브 추천 record에 title/price/beginDateTime 포함** - Files: - Modify: `src/main/kotlin/kr/co/vividnext/sodalive/v2/recommendation/port/out/HomeRecommendationQueryPort.kt` - Modify: `src/main/kotlin/kr/co/vividnext/sodalive/v2/recommendation/adapter/out/persistence/DefaultHomeRecommendationQueryRepository.kt` @@ -118,7 +118,7 @@ data class HomeLiveRecommendationRecord( - REFACTOR: 기존 `HomeRecommendationFacade.toItem()`과 기존 테스트 컴파일 오류를 수정하되 `HomeLiveItem` 공개 필드는 추가하지 않는다. - 기대 결과: repository 테스트가 PASS이고 기존 추천 탭 응답 DTO에는 `title`, `price`, `beginDateTimeUtc`가 추가되지 않는다. -- [ ] **Task 1.2: 기존 라이브 조회 조건 회귀 테스트 보강** +- [x] **Task 1.2: 기존 라이브 조회 조건 회귀 테스트 보강** - Files: - Modify: `src/test/kotlin/kr/co/vividnext/sodalive/v2/recommendation/adapter/out/persistence/DefaultHomeRecommendationQueryRepositoryTest.kt` - Modify: `src/main/kotlin/kr/co/vividnext/sodalive/v2/recommendation/adapter/out/persistence/DefaultHomeRecommendationQueryRepository.kt` @@ -128,7 +128,7 @@ data class HomeLiveRecommendationRecord( - REFACTOR: 중복 조건은 기존 private condition 함수로 유지하고 신규 abstraction은 추가하지 않는다. - 기대 결과: 진행 중 라이브 조회 정책이 PRD의 노출 조건과 일치한다. -- [ ] **Task 1.3: HomeRecommendationQueryService 위임 계약 유지** +- [x] **Task 1.3: HomeRecommendationQueryService 위임 계약 유지** - Files: - Modify: `src/test/kotlin/kr/co/vividnext/sodalive/v2/recommendation/application/HomeRecommendationQueryServiceTest.kt` - Modify: `src/main/kotlin/kr/co/vividnext/sodalive/v2/recommendation/application/HomeRecommendationQueryService.kt` @@ -140,7 +140,7 @@ data class HomeLiveRecommendationRecord( ### Phase 2: 신규 API 조립 계층 -- [ ] **Task 2.1: 신규 응답 DTO와 직렬화 테스트 추가** +- [x] **Task 2.1: 신규 응답 DTO와 직렬화 테스트 추가** - Files: - Create: `src/main/kotlin/kr/co/vividnext/sodalive/v2/api/home/live/dto/HomeOnAirLiveResponse.kt` - Create: `src/test/kotlin/kr/co/vividnext/sodalive/v2/api/home/live/dto/HomeOnAirLiveResponseTest.kt` @@ -150,7 +150,7 @@ data class HomeLiveRecommendationRecord( - REFACTOR: DTO에는 도메인 조회나 CDN 변환 로직을 넣지 않는다. - 기대 결과: 공개 응답 필드명이 PRD와 일치한다. -- [ ] **Task 2.2: HomeOnAirLiveFacade 작성** +- [x] **Task 2.2: HomeOnAirLiveFacade 작성** - Files: - Create: `src/main/kotlin/kr/co/vividnext/sodalive/v2/api/home/live/application/HomeOnAirLiveFacade.kt` - Create: `src/test/kotlin/kr/co/vividnext/sodalive/v2/api/home/live/application/HomeOnAirLiveFacadeTest.kt` @@ -164,7 +164,7 @@ data class HomeLiveRecommendationRecord( - REFACTOR: CDN URL 변환은 기존 홈 추천의 `profileImageUrl(cloudFrontHost, path)` 의미와 동일하게 유지한다. 시작 시간 UTC 문자열 변환은 기존 `toUtcIso` 의미와 동일하게 유지한다. 해당 helper들이 package-private이라 재사용이 어렵다면 facade 내부 private 함수로 최소 복제한다. - 기대 결과: facade가 page 조립, 성인 노출 플래그 계산, DTO 매핑만 담당한다. -- [ ] **Task 2.3: HomeOnAirLiveController 작성** +- [x] **Task 2.3: HomeOnAirLiveController 작성** - Files: - Create: `src/main/kotlin/kr/co/vividnext/sodalive/v2/api/home/live/adapter/in/web/HomeOnAirLiveController.kt` - Create: `src/test/kotlin/kr/co/vividnext/sodalive/v2/api/home/live/adapter/in/web/HomeOnAirLiveControllerTest.kt` @@ -259,3 +259,7 @@ data class HomeLiveRecommendationRecord( - 문서 작성 시점에는 구현을 진행하지 않았으므로 테스트 실행 기록은 없다. - 2026-06-26 문서 작성 후 명령 유효성 확인을 위해 `./gradlew tasks --all`을 실행했고 `BUILD SUCCESSFUL`을 확인했다. - 2026-06-26 `beginDateTimeUtc` 응답 필드 문서 보강 후 명령 유효성 확인을 위해 `./gradlew tasks --all`을 실행했고 `BUILD SUCCESSFUL`을 확인했다. +- 2026-06-26 Phase 1/2 RED 확인: 신규 테스트 추가 후 `HomeLiveRecommendationRecord.title/price/beginDateTime`, `HomeOnAirLiveResponse`, `HomeOnAirLiveFacade`, `HomeOnAirLiveController` 미구현으로 `:compileTestKotlin FAILED`를 확인했다. +- 2026-06-26 Phase 1/2 GREEN 확인: `./gradlew test --tests kr.co.vividnext.sodalive.v2.recommendation.adapter.out.persistence.DefaultHomeRecommendationQueryRepositoryTest --tests kr.co.vividnext.sodalive.v2.recommendation.application.HomeRecommendationQueryServiceTest --tests kr.co.vividnext.sodalive.v2.api.home.live.dto.HomeOnAirLiveResponseTest --tests kr.co.vividnext.sodalive.v2.api.home.live.application.HomeOnAirLiveFacadeTest --tests kr.co.vividnext.sodalive.v2.api.home.live.adapter.in.web.HomeOnAirLiveControllerTest`를 실행했고 `BUILD SUCCESSFUL`을 확인했다. +- 2026-06-26 Phase 1/2 포맷 검증: `./gradlew ktlintCheck`를 실행했고 `BUILD SUCCESSFUL`을 확인했다. +- 2026-06-26 전체 회귀 확인: `./gradlew test`는 1026개 테스트 중 1개 실패로 종료했다. 실패 테스트는 `kr.co.vividnext.sodalive.content.AudioContentServiceTest.shouldNotPublishNewsWhenUploadCompleteKeepsScheduledContentInactive`이며, 동일 테스트 단독 재실행도 같은 `HomeFollowingNewsPublishService` mock interaction 검증 실패를 재현했다. 이번 Phase 1/2 변경 파일은 `v2/recommendation`, `v2/api/home/live`, 문서에 한정되어 해당 실패는 범위 외 잔여 실패로 기록한다.