From 4f66b6abb928633d80b39d34143b553da75bf9dd Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 1 Jun 2026 21:32:26 +0900 Subject: [PATCH] =?UTF-8?q?feat(home):=20=EC=B2=AB=20=EC=98=A4=EB=94=94?= =?UTF-8?q?=EC=98=A4=20=EC=BD=98=ED=85=90=EC=B8=A0=20=ED=8F=AC=EC=9D=B8?= =?UTF-8?q?=ED=8A=B8=20=EC=82=AC=EC=9A=A9=20=EA=B0=80=EB=8A=A5=20=EC=97=AC?= =?UTF-8?q?=EB=B6=80=EB=A5=BC=20=EC=9D=91=EB=8B=B5=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v2/api/home/application/HomeRecommendationFacade.kt | 3 ++- .../sodalive/v2/api/home/dto/HomeRecommendationResponse.kt | 3 ++- .../DefaultHomeRecommendationQueryRepository.kt | 7 +++++-- .../v2/recommend/port/out/HomeRecommendationQueryPort.kt | 1 + 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/api/home/application/HomeRecommendationFacade.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/api/home/application/HomeRecommendationFacade.kt index e7a41960..27997960 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/v2/api/home/application/HomeRecommendationFacade.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/api/home/application/HomeRecommendationFacade.kt @@ -270,7 +270,8 @@ class HomeRecommendationFacade( creatorProfileImage = imageUrl(cloudFrontHost, creatorProfileImage), title = title, coverImage = imageUrl(cloudFrontHost, coverImage), - releaseDate = releaseDate.toUtcIso() + releaseDate = releaseDate.toUtcIso(), + isPointAvailable = isPointAvailable ) private fun HomeAiCharacterRecommendationRecord.toItem() = HomeAiCharacterItem( diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/api/home/dto/HomeRecommendationResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/api/home/dto/HomeRecommendationResponse.kt index bf1a6039..c55fa169 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/v2/api/home/dto/HomeRecommendationResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/api/home/dto/HomeRecommendationResponse.kt @@ -66,7 +66,8 @@ data class HomeFirstAudioContentItem( val creatorProfileImage: String?, val title: String, val coverImage: String?, - val releaseDate: String + val releaseDate: String, + val isPointAvailable: Boolean ) data class HomeAiCharacterItem( diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommend/adapter/out/persistence/DefaultHomeRecommendationQueryRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommend/adapter/out/persistence/DefaultHomeRecommendationQueryRepository.kt index aabf0170..592cb225 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommend/adapter/out/persistence/DefaultHomeRecommendationQueryRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommend/adapter/out/persistence/DefaultHomeRecommendationQueryRepository.kt @@ -395,6 +395,7 @@ class DefaultHomeRecommendationQueryRepository( ac.cover_image as cover_image, ac.release_date as release_date, ac.is_active as is_active, + ac.is_point_available as is_point_available, row_number() over ( partition by ac.member_id order by ac.created_at asc, ac.release_date asc, ac.id asc @@ -421,6 +422,7 @@ class DefaultHomeRecommendationQueryRepository( ec.title as title, ec.cover_image as cover_image, ec.release_date as release_date, + ec.is_point_available as is_point_available, case when ec.release_date >= :recency3Start then 100 when ec.release_date >= :recency7Start then 80 @@ -471,8 +473,9 @@ class DefaultHomeRecommendationQueryRepository( title = row[4] as String, coverImage = row[5] as String?, releaseDate = toLocalDateTime(row[6]), - recencyScore = (row[7] as Number).toInt(), - randomTieBreaker = (row[8] as Number).toDouble() + isPointAvailable = row[7] as Boolean, + recencyScore = (row[8] as Number).toInt(), + randomTieBreaker = (row[9] as Number).toDouble() ) } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommend/port/out/HomeRecommendationQueryPort.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommend/port/out/HomeRecommendationQueryPort.kt index 430c1358..1875d975 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommend/port/out/HomeRecommendationQueryPort.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommend/port/out/HomeRecommendationQueryPort.kt @@ -126,6 +126,7 @@ data class HomeFirstAudioContentRecord( val title: String, val coverImage: String?, val releaseDate: LocalDateTime, + val isPointAvailable: Boolean, val recencyScore: Int, val randomTieBreaker: Double )