docs(creator): 채널 라이브 Phase 5 기록을 갱신한다
This commit is contained in:
@@ -391,7 +391,7 @@ private fun LocalDateTime.toUtcIso(): String {
|
||||
|
||||
### Phase 5: 회귀 및 문서 동기화
|
||||
|
||||
- [ ] **Task 5.1: 기존 홈 API 회귀 테스트 보강**
|
||||
- [x] **Task 5.1: 기존 홈 API 회귀 테스트 보강**
|
||||
- Files:
|
||||
- Test: `src/test/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/adapter/in/web/CreatorChannelHomeControllerTest.kt`
|
||||
- Test: `src/test/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/application/CreatorChannelHomeQueryServiceTest.kt`
|
||||
@@ -401,8 +401,9 @@ private fun LocalDateTime.toUtcIso(): String {
|
||||
- GREEN: Phase 1 구현이 빠뜨린 변환/fixture를 보정한다.
|
||||
- 통과 확인: `./gradlew test --tests kr.co.vividnext.sodalive.v2.creator.channel.adapter.in.web.CreatorChannelHomeControllerTest --tests kr.co.vividnext.sodalive.v2.creator.channel.application.CreatorChannelHomeQueryServiceTest --tests kr.co.vividnext.sodalive.v2.creator.channel.adapter.out.persistence.DefaultCreatorChannelHomeQueryRepositoryTest`
|
||||
- REFACTOR: test fixture의 `CreatorChannelAudioContent` 생성부가 반복되면 테스트 내부 helper만 추가하고 production abstraction은 만들지 않는다.
|
||||
- 검증 기록(2026-06-17): 기존 controller/service 테스트의 `isOwned`/`isRented` 응답/변환 회귀에 더해, 홈 repository 통합 fixture에서 `latestAudioContent`의 `KEEP` 주문과 `audioContents`의 유효 `RENTAL` 주문 상태를 함께 검증하도록 보강했다. `./gradlew test --tests kr.co.vividnext.sodalive.v2.creator.channel.adapter.in.web.CreatorChannelHomeControllerTest --tests kr.co.vividnext.sodalive.v2.creator.channel.application.CreatorChannelHomeQueryServiceTest --tests kr.co.vividnext.sodalive.v2.creator.channel.adapter.out.persistence.DefaultCreatorChannelHomeQueryRepositoryTest` 성공을 확인했다.
|
||||
|
||||
- [ ] **Task 5.2: 라이브 탭 통합 시나리오 검증**
|
||||
- [x] **Task 5.2: 라이브 탭 통합 시나리오 검증**
|
||||
- Files:
|
||||
- Test: `src/test/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/live/adapter/out/persistence/DefaultCreatorChannelLiveQueryRepositoryTest.kt`
|
||||
- Test: `src/test/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/live/adapter/in/web/CreatorChannelLiveControllerTest.kt`
|
||||
@@ -411,8 +412,25 @@ private fun LocalDateTime.toUtcIso(): String {
|
||||
- GREEN: 누락된 mapping, count, hasNext, sort 응답을 보정한다.
|
||||
- 통과 확인: `./gradlew test --tests kr.co.vividnext.sodalive.v2.creator.channel.live.adapter.out.persistence.DefaultCreatorChannelLiveQueryRepositoryTest --tests kr.co.vividnext.sodalive.v2.api.creator.channel.live.adapter.in.web.CreatorChannelLiveControllerTest`
|
||||
- REFACTOR: 통합 테스트는 하나의 대표 시나리오만 유지하고 세부 정렬/상태 케이스는 repository 단위 테스트로 둔다.
|
||||
- 검증 기록(2026-06-17): 기존 repository 테스트의 21개 조회/pagination/current live/order state 검증에 더해, controller 응답 표면에서 `liveReplayContentCount=21`, `liveReplayContents.length()==20`, `hasNext=true`, `sort=LATEST`, `page=0`, `size=20`, 소장/대여/미구매 상태가 JSON으로 내려오는 대표 시나리오를 추가했다. `./gradlew test --tests kr.co.vividnext.sodalive.v2.creator.channel.live.adapter.out.persistence.DefaultCreatorChannelLiveQueryRepositoryTest --tests kr.co.vividnext.sodalive.v2.api.creator.channel.live.adapter.in.web.CreatorChannelLiveControllerTest` 성공을 확인했다.
|
||||
|
||||
- [ ] **Task 5.3: 전체 회귀 검증과 문서 검증 기록 추가**
|
||||
- [x] **Task 5.3: 라이브 탭 end-to-end 통합 테스트 추가**
|
||||
- Files:
|
||||
- Test: `src/test/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/live/adapter/in/web/CreatorChannelLiveEndToEndTest.kt`
|
||||
- TDD 예외 사유: production 동작 변경 없이 기존 구현의 controller-service-repository-DB-JSON 연결을 고정하는 회귀 테스트 추가 task다.
|
||||
- RED: `@SpringBootTest + MockMvc` 기반으로 인증 회원이 `GET /api/v2/creator-channels/{creatorId}/live?page=0&size=20&sort=LATEST`를 호출하는 실제 end-to-end 테스트를 추가한다.
|
||||
- 검증 대상:
|
||||
- 현재 라이브 1개가 `currentLive`로 내려온다.
|
||||
- 공개 `다시듣기` 콘텐츠 21개 중 응답 목록은 20개만 내려온다.
|
||||
- `liveReplayContentCount=21`, `hasNext=true`, `sort=LATEST`, `page=0`, `size=20`이 내려온다.
|
||||
- 조회자의 `KEEP`, 유효 `RENTAL`, 미구매 콘텐츠 상태가 `isOwned`/`isRented` JSON으로 내려온다.
|
||||
- 이미지 경로는 실제 facade/service mapping을 거쳐 CDN URL로 내려온다.
|
||||
- 실행 확인: `./gradlew test --tests kr.co.vividnext.sodalive.v2.api.creator.channel.live.adapter.in.web.CreatorChannelLiveEndToEndTest`
|
||||
- GREEN: production 변경 없이 기존 구현이 통과하면 회귀 테스트로 유지한다. 실패하면 실패 원인이 테스트 fixture인지 실제 연결 결함인지 구분해 최소 수정한다.
|
||||
- REFACTOR: fixture helper는 테스트 파일 내부에만 둔다. 기존 mock 기반 controller 테스트와 repository 세부 테스트는 유지한다.
|
||||
- 검증 기록(2026-06-17): `CreatorChannelLiveEndToEndTest`를 추가해 실제 Spring context에서 `Controller -> Facade -> Service -> Repository -> DB -> Response JSON` 흐름을 검증했다. 테스트 fixture는 커밋된 DB 상태를 MockMvc 요청에서 조회하도록 `TransactionTemplate`으로 생성했다. `./gradlew test --tests kr.co.vividnext.sodalive.v2.api.creator.channel.live.adapter.in.web.CreatorChannelLiveEndToEndTest` 성공을 확인했다. 최초 성공 실행에서 H2 shutdown 경고가 있어 테스트 전용 datasource URL에 `DB_CLOSE_ON_EXIT=FALSE`를 추가했고, 동일 명령 재실행 성공을 확인했다.
|
||||
|
||||
- [x] **Task 5.4: 전체 회귀 검증과 문서 검증 기록 추가**
|
||||
- Files:
|
||||
- Modify: `docs/20260617_크리에이터_채널_라이브_API/plan-task.md`
|
||||
- TDD 예외 사유: 문서 검증 기록 갱신 task로 production/test 코드 변경이 없다.
|
||||
@@ -423,10 +441,21 @@ private fun LocalDateTime.toUtcIso(): String {
|
||||
- `./gradlew test --tests kr.co.vividnext.sodalive.v2.creator.channel.live.application.CreatorChannelLiveQueryServiceTest`
|
||||
- `./gradlew test --tests kr.co.vividnext.sodalive.v2.creator.channel.live.adapter.out.persistence.DefaultCreatorChannelLiveQueryRepositoryTest`
|
||||
- `./gradlew test --tests kr.co.vividnext.sodalive.v2.api.creator.channel.live.adapter.in.web.CreatorChannelLiveControllerTest`
|
||||
- `./gradlew test --tests kr.co.vividnext.sodalive.v2.api.creator.channel.live.adapter.in.web.CreatorChannelLiveEndToEndTest`
|
||||
- `./gradlew test --tests kr.co.vividnext.sodalive.v2.api.creator.channel.live.application.CreatorChannelLiveFacadeTest`
|
||||
- `./gradlew ktlintCheck`
|
||||
- 기대 결과: 모든 명령이 성공한다.
|
||||
- REFACTOR: 실패가 발생하면 실패 task로 돌아가 문서의 체크박스를 완료 처리하지 않는다.
|
||||
- 검증 기록(2026-06-17): Phase 5 최종 회귀로 아래 명령이 모두 성공함을 확인했다.
|
||||
- `./gradlew test --tests kr.co.vividnext.sodalive.v2.common.domain.ContentSortTest`
|
||||
- `./gradlew test --tests kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelLiveReplayQueryPolicyTest`
|
||||
- `./gradlew test --tests kr.co.vividnext.sodalive.v2.creator.channel.live.application.CreatorChannelLiveQueryServiceTest`
|
||||
- `./gradlew test --tests kr.co.vividnext.sodalive.v2.creator.channel.live.adapter.out.persistence.DefaultCreatorChannelLiveQueryRepositoryTest`
|
||||
- `./gradlew test --tests kr.co.vividnext.sodalive.v2.api.creator.channel.live.adapter.in.web.CreatorChannelLiveControllerTest`
|
||||
- `./gradlew test --tests kr.co.vividnext.sodalive.v2.api.creator.channel.live.adapter.in.web.CreatorChannelLiveEndToEndTest`
|
||||
- `./gradlew test --tests kr.co.vividnext.sodalive.v2.api.creator.channel.live.application.CreatorChannelLiveFacadeTest`
|
||||
- `./gradlew ktlintCheck`
|
||||
- `git diff --check`
|
||||
|
||||
---
|
||||
|
||||
@@ -497,3 +526,4 @@ private fun LocalDateTime.toUtcIso(): String {
|
||||
- 2026-06-17 Phase 3 검증: `DefaultCreatorChannelLiveQueryRepositoryTest`를 먼저 추가해 RED 단계에서 `DefaultCreatorChannelLiveQueryRepository` 미존재 컴파일 실패를 확인했다. GREEN 단계에서 live tab repository interface/default 구현체를 추가하고 count/list/pagination/sort/order state/current live policy를 구현했다. `./gradlew test --tests kr.co.vividnext.sodalive.v2.creator.channel.live.adapter.out.persistence.DefaultCreatorChannelLiveQueryRepositoryTest`, `./gradlew test --tests kr.co.vividnext.sodalive.v2.creator.channel.live.application.CreatorChannelLiveQueryServiceTest --tests kr.co.vividnext.sodalive.v2.creator.channel.live.adapter.out.persistence.DefaultCreatorChannelLiveQueryRepositoryTest --tests kr.co.vividnext.sodalive.support.SpringBootIntegrationSampleTest`, `./gradlew ktlintCheck`, `git diff --check` 성공을 확인했다. 리뷰 게이트에서 Phase 3 persistence adapter 범위와 시나리오 검증에 대한 unconditional approval을 받았다.
|
||||
- 2026-06-17 Phase 3 리뷰 보완 검증: `isFirstContent` 의미를 PRD에 명시하고, 라이브 다시듣기 repository 테스트에 다른 테마의 더 오래된 공개 오디오가 있을 때 `다시듣기` item의 `isFirstContent`가 `false`인지 확인하는 회귀 테스트를 추가했다. RED 단계에서 기존 구현이 실패하는 것을 확인했고, first content id 조회를 기존 홈 API와 같은 전체 공개 오디오 기준으로 수정했다. 검증은 `./gradlew test --tests kr.co.vividnext.sodalive.v2.creator.channel.live.adapter.out.persistence.DefaultCreatorChannelLiveQueryRepositoryTest`, `./gradlew ktlintCheck`, `./gradlew tasks --all`, `git diff --check`로 수행했고 모두 성공했다. 검증 중 Gradle 테스트 2개를 병렬 실행했을 때 한 세션에서 QueryDSL generated source compile race로 `compileJava`가 실패했으나, 단일 세션으로 재실행한 repository 전체 테스트는 성공했다.
|
||||
- 2026-06-17 Phase 4 검증: 라이브 탭 공개 API 조립 계층을 `v2.api.creator.channel.live` 하위에 추가했다. RED 단계에서 controller/facade/DTO 미존재 컴파일 실패를 확인했고, GREEN 단계에서 `CreatorChannelLiveControllerTest`, `CreatorChannelLiveFacadeTest` 통과를 확인했다. invalid `page`/`size` 요청은 기존 오류 응답 표면인 HTTP 200 + `success=false`로 확인했고, `CreatorChannelLiveQueryServiceTest`와 함께 service validation 회귀를 확인했다. 검증은 `./gradlew test --tests kr.co.vividnext.sodalive.v2.api.creator.channel.live.adapter.in.web.CreatorChannelLiveControllerTest --tests kr.co.vividnext.sodalive.v2.api.creator.channel.live.application.CreatorChannelLiveFacadeTest`, `./gradlew test --tests kr.co.vividnext.sodalive.v2.api.creator.channel.live.adapter.in.web.CreatorChannelLiveControllerTest --tests kr.co.vividnext.sodalive.v2.creator.channel.live.application.CreatorChannelLiveQueryServiceTest`, `./gradlew ktlintCheck`, `git diff --check`로 수행했고 모두 성공했다.
|
||||
- 2026-06-17 Phase 5 검증: 기존 홈 API 회귀와 라이브 탭 대표 응답 표면을 보강했다. 홈 repository 통합 fixture는 `latestAudioContent.isOwned/isRented`와 `audioContents.isOwned/isRented`를 주문 상태 기반으로 검증하고, 라이브 탭 controller는 현재 라이브 1개, 다시듣기 20개 응답, 전체 count 21, `hasNext=true`, 소장/대여/미구매 상태를 확인한다. 추가로 `CreatorChannelLiveEndToEndTest`를 만들어 실제 Spring context에서 `Controller -> Facade -> Service -> Repository -> DB -> Response JSON` 흐름을 검증했다. Phase 5 지정 테스트와 `./gradlew ktlintCheck`, `git diff --check`가 모두 성공했다.
|
||||
|
||||
Reference in New Issue
Block a user