Improve result modal and Envato previews
build-push / docker (push) Successful in 4m26s

This commit is contained in:
AI Assistant
2026-03-16 11:57:12 +09:00
parent 8101f17f5b
commit 45ff5b860c
7 changed files with 167 additions and 16 deletions
+17
View File
@@ -2,9 +2,11 @@ package services
import (
"fmt"
"math/rand"
"sort"
"strings"
"sync"
"time"
)
const GeminiFallbackReason = "Gemini Vision 응답이 부족해 키워드 기준으로 보강된 결과입니다."
@@ -193,6 +195,21 @@ func BuildFallbackRecommendations(ranked []SearchResult, limit int, reason strin
return fallback
}
func RandomizeTopRecommendations(items []AIRecommendation, window int) []AIRecommendation {
if len(items) < 2 || window < 2 {
return items
}
limit := min(window, len(items))
shuffled := make([]AIRecommendation, len(items))
copy(shuffled, items)
rng := rand.New(rand.NewSource(time.Now().UnixNano()))
rng.Shuffle(limit, func(i, j int) {
shuffled[i], shuffled[j] = shuffled[j], shuffled[i]
})
return shuffled
}
func MergeRecommendations(recommended []AIRecommendation, ranked []SearchResult, limit int) []AIRecommendation {
merged := make([]AIRecommendation, 0, min(limit, len(ranked)))
seen := map[string]bool{}