feat(recommendation): 인기 커뮤니티 본문 번역을 적용한다
This commit is contained in:
+15
-2
@@ -3,6 +3,7 @@ package kr.co.vividnext.sodalive.v2.recommendation.application
|
||||
import kr.co.vividnext.sodalive.i18n.Lang
|
||||
import kr.co.vividnext.sodalive.i18n.LangContext
|
||||
import kr.co.vividnext.sodalive.v2.common.domain.CreatorActivityType
|
||||
import kr.co.vividnext.sodalive.v2.creator.channel.community.translation.application.CreatorCommunityTranslationService
|
||||
import kr.co.vividnext.sodalive.v2.recommendation.domain.RecommendationSnapshotWindowPolicy
|
||||
import kr.co.vividnext.sodalive.v2.recommendation.domain.RecommendedSectionType
|
||||
import kr.co.vividnext.sodalive.v2.recommendation.port.out.HomeAiCharacterRecommendationRecord
|
||||
@@ -31,7 +32,8 @@ class HomeRecommendationQueryService(
|
||||
private val cheerCreatorSnapshotFallbackService: CheerCreatorSnapshotFallbackPort? = null,
|
||||
private val popularCommunitySnapshotFallbackService: PopularCommunitySnapshotFallbackPort? = null,
|
||||
private val clock: Clock = Clock.systemUTC(),
|
||||
private val langContext: LangContext
|
||||
private val langContext: LangContext,
|
||||
private val creatorCommunityTranslationService: CreatorCommunityTranslationService
|
||||
) {
|
||||
private val snapshotWindowPolicy = RecommendationSnapshotWindowPolicy()
|
||||
|
||||
@@ -154,9 +156,20 @@ class HomeRecommendationQueryService(
|
||||
.associateBy { it.communityId }
|
||||
val selectedCreatorIds = mutableSetOf<Long>()
|
||||
|
||||
return snapshots.mapNotNull { snapshot ->
|
||||
val recommendations = snapshots.mapNotNull { snapshot ->
|
||||
detailsById[snapshot.targetId]?.takeIf { selectedCreatorIds.add(it.creatorId) }
|
||||
}.take(limit)
|
||||
if (recommendations.isEmpty()) return emptyList()
|
||||
|
||||
val displayContents = creatorCommunityTranslationService.findDisplayContents(
|
||||
recommendations.map { it.communityId },
|
||||
langContext.lang.code
|
||||
)
|
||||
return recommendations.map { recommendation ->
|
||||
displayContents[recommendation.communityId]
|
||||
?.let { displayContent -> recommendation.copy(content = displayContent.content) }
|
||||
?: recommendation
|
||||
}
|
||||
}
|
||||
|
||||
private fun findPopularCommunitySnapshotsWithFallback(): List<RecommendationSnapshotRecord> {
|
||||
|
||||
Reference in New Issue
Block a user