From 66973cf80bc9cfd0cdde57aa5afc6c0cfd6ee96b Mon Sep 17 00:00:00 2001 From: Klaus Date: Sun, 12 Jul 2026 16:43:12 +0900 Subject: [PATCH] =?UTF-8?q?docs(home):=20=ED=8C=94=EB=A1=9C=EC=9E=89=20?= =?UTF-8?q?=ED=81=AC=EB=A6=AC=EC=97=90=EC=9D=B4=ED=84=B0=20=EC=A0=95?= =?UTF-8?q?=EB=A0=AC=20=EC=A0=95=EC=B1=85=EC=9D=84=20=EB=AC=B8=EC=84=9C?= =?UTF-8?q?=ED=99=94=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/20260625_메인_홈_팔로잉_탭_API/plan-task.md | 10 ++++++++-- docs/20260625_메인_홈_팔로잉_탭_API/prd.md | 6 +++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/docs/20260625_메인_홈_팔로잉_탭_API/plan-task.md b/docs/20260625_메인_홈_팔로잉_탭_API/plan-task.md index 759ee98b..3f055e85 100644 --- a/docs/20260625_메인_홈_팔로잉_탭_API/plan-task.md +++ b/docs/20260625_메인_홈_팔로잉_탭_API/plan-task.md @@ -18,7 +18,7 @@ - 응답 wrapper: `ApiResponse.ok(...)` - `SecurityConfig`에 `GET /api/v2/home/following` permitAll 설정을 추가한다. - 섹션별 기본 노출 수: - - `followingCreators`: 최신 팔로우순 20개 + - `followingCreators`: 오래된 팔로우순 20개 - `onAirLives`: 팔로잉 크리에이터의 현재 진행 중인 라이브 최신순 10개 - `recentChats`: DM/AI 채팅 최신순 10개 - `monthlySchedules`: 이번 달 오늘 이후 일정 중 오늘과 가까운 순 3개 @@ -505,7 +505,7 @@ data class HomeFollowingNewsInboxRecord( - Create: `src/main/kotlin/kr/co/vividnext/sodalive/v2/home/following/adapter/out/persistence/HomeFollowingQueryRepository.kt` - Create: `src/main/kotlin/kr/co/vividnext/sodalive/v2/home/following/adapter/out/persistence/DefaultHomeFollowingQueryRepository.kt` - Test: `src/test/kotlin/kr/co/vividnext/sodalive/v2/home/following/adapter/out/persistence/DefaultHomeFollowingQueryRepositoryTest.kt` - - RED: 활성 팔로우/활성 크리에이터만 최신 팔로우순 20개 조회하는 `@DataJpaTest(properties = ["spring.cache.type=none"])` 테스트를 작성한다. + - RED: 활성 팔로우/활성 크리에이터만 오래된 팔로우순 20개 조회하는 `@DataJpaTest(properties = ["spring.cache.type=none"])` 테스트를 작성한다. - RED: 차단 관계 크리에이터가 제외되는 테스트를 작성한다. - 실패 확인: `./gradlew --no-daemon test --tests "kr.co.vividnext.sodalive.v2.home.following.adapter.out.persistence.DefaultHomeFollowingQueryRepositoryTest"` 실행, repository 미구현 실패 확인. - GREEN: `creator_following`, `member`, `block_member` 조건을 QueryDSL로 최소 구현한다. @@ -859,3 +859,9 @@ data class HomeFollowingNewsInboxRecord( - 리뷰 보완 후 Phase 5.5 집중 회귀 명령 `./gradlew --no-daemon test --tests "kr.co.vividnext.sodalive.v2.api.home.following.dto.HomeFollowingTabResponseTest" --tests "kr.co.vividnext.sodalive.v2.home.following.adapter.out.persistence.DefaultHomeFollowingQueryRepositoryTest" --tests "kr.co.vividnext.sodalive.explorer.profile.creatorCommunity.CreatorCommunityServiceTest" --tests "kr.co.vividnext.sodalive.v2.home.following.application.HomeFollowingNewsPublishServiceTest" --tests "kr.co.vividnext.sodalive.v2.api.home.following.adapter.in.web.HomeFollowingEndToEndTest"` 실행 결과 `BUILD SUCCESSFUL`. - 리뷰 보완 후 `./gradlew --no-daemon ktlintCheck` 실행 결과 `BUILD SUCCESSFUL`. - 응답 단순화: `HomeFollowingContentNews`/`FollowingContentNewsResponse`의 `releaseDate`를 제거하고 콘텐츠 공개 시각은 최상위 `visibleFromAtUtc`를 사용하도록 계약과 테스트를 갱신했다. + +- 2026-07-12 팔로잉 크리에이터 정렬 변경 영향 확인: + - `DefaultHomeFollowingQueryRepository.findFollowingCreators`의 정렬을 `creatorFollowing.createdAt.desc()`에서 `creatorFollowing.createdAt.asc()`로 변경한 계약에 맞춰 PRD/계획 문서의 `followingCreators` 정렬 설명을 오래된 팔로우순으로 갱신했다. + - 직접 검색 결과 정렬 계약을 명시한 위치는 `docs/20260625_메인_홈_팔로잉_탭_API/prd.md`, `docs/20260625_메인_홈_팔로잉_탭_API/plan-task.md`, `DefaultHomeFollowingQueryRepositoryTest.shouldFindActiveFollowingCreatorsByOldestFollowOrder`였고, 호출부는 `HomeFollowingQueryService`가 반환 순서를 그대로 조립하는 구조로 확인했다. + - `./gradlew --no-daemon test --tests "kr.co.vividnext.sodalive.v2.home.following.adapter.out.persistence.DefaultHomeFollowingQueryRepositoryTest"` 실행 결과 `BUILD SUCCESSFUL`. + - `./gradlew --no-daemon tasks --all` 실행 결과 `BUILD SUCCESSFUL`. diff --git a/docs/20260625_메인_홈_팔로잉_탭_API/prd.md b/docs/20260625_메인_홈_팔로잉_탭_API/prd.md index 98539465..6270d69e 100644 --- a/docs/20260625_메인_홈_팔로잉_탭_API/prd.md +++ b/docs/20260625_메인_홈_팔로잉_탭_API/prd.md @@ -19,7 +19,7 @@ - 메인 홈 팔로잉 탭 조회 API를 `kr.co.vividnext.sodalive.v2` 하위 신규 코드로 제공한다. - 기존 패턴과 동일하게 API 조립 계층과 도메인 조회 계층을 분리한다. - 비로그인 사용자도 API 호출은 허용하되, 로그인 유도 화면을 그릴 수 있는 응답을 제공한다. -- 사용자가 팔로우한 크리에이터 목록을 최신 팔로우순 20개 응답한다. +- 사용자가 팔로우한 크리에이터 목록을 오래된 팔로우순 20개 응답한다. - 사용자가 팔로우한 크리에이터의 현재 진행 중인 라이브를 최신순 10개 응답한다. - DM/AI 채팅방 중 최신 대화순 10개를 응답한다. - 사용자가 팔로우한 크리에이터들의 이번 달 오늘 이후 스케줄을 오늘과 가까운 순으로 최대 3개 응답한다. @@ -55,7 +55,7 @@ --- ## 6. User Stories -- 사용자는 내가 팔로우한 크리에이터 목록을 최근 팔로우한 순서로 보고 싶다. +- 사용자는 내가 팔로우한 크리에이터 목록을 오래 팔로우한 순서로 보고 싶다. - 사용자는 팔로우한 크리에이터가 지금 진행 중인 라이브를 바로 확인하고 싶다. - 사용자는 최근 DM/AI 채팅방으로 빠르게 이동하고 싶다. - 사용자는 팔로우한 크리에이터의 이번 달 예정 라이브/콘텐츠 일정을 가까운 일정부터 보고 싶다. @@ -90,7 +90,7 @@ ### Feature B. 팔로잉 크리에이터 #### Requirements -- 사용자가 팔로우한 활성 크리에이터를 최신 팔로우순으로 최대 20개 조회한다. +- 사용자가 팔로우한 활성 크리에이터를 오래된 팔로우순으로 최대 20개 조회한다. - 팔로잉 기준은 `creator_following.member_id = 요청 회원 id`, `creator_following.is_active = true`다. - 크리에이터는 `member.role = CREATOR`, `member.is_active = true`인 대상만 노출한다. - 응답 필드는 `creatorId`, `creatorNickname`, `creatorProfileImageUrl`을 포함한다.