This commit is contained in:
@@ -259,13 +259,16 @@ func (a *App) searchMedia(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
a.Hub.Broadcast("progress", gin.H{"type": "search", "status": "expanding query with Gemini", "progress": 10})
|
||||
queryVariants, expandErr := a.GeminiService.ExpandQuery(req.Query)
|
||||
if len(queryVariants) == 0 {
|
||||
queryVariants = []string{req.Query}
|
||||
}
|
||||
|
||||
a.Hub.Broadcast("progress", gin.H{"type": "search", "status": "searching Google Video, Envato, and Artgrid", "progress": 35})
|
||||
results, err := a.SearchService.SearchMedia(queryVariants)
|
||||
if err != nil {
|
||||
a.Hub.Broadcast("progress", gin.H{"type": "search", "status": "search failed", "progress": 100, "message": err.Error()})
|
||||
c.JSON(http.StatusBadGateway, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
@@ -274,12 +277,15 @@ func (a *App) searchMedia(c *gin.Context) {
|
||||
if expandErr != nil {
|
||||
warning += " Query expansion failed: " + expandErr.Error()
|
||||
}
|
||||
a.Hub.Broadcast("progress", gin.H{"type": "search", "status": "no renderable search results", "progress": 100, "message": warning})
|
||||
c.JSON(http.StatusOK, gin.H{"results": []services.AIRecommendation{}, "warning": warning})
|
||||
return
|
||||
}
|
||||
|
||||
a.Hub.Broadcast("progress", gin.H{"type": "search", "status": "ranking thumbnail candidates", "progress": 55})
|
||||
scored := rankSearchResults(req.Query, results)
|
||||
shortlist := scored[:min(len(scored), 10)]
|
||||
a.Hub.Broadcast("progress", gin.H{"type": "search", "status": "analyzing shortlisted thumbnails with Gemini Vision", "progress": 75})
|
||||
recommended, err := a.GeminiService.Recommend(req.Query, shortlist)
|
||||
if err != nil {
|
||||
fallback := make([]services.AIRecommendation, 0, min(20, len(scored)))
|
||||
@@ -297,6 +303,7 @@ func (a *App) searchMedia(c *gin.Context) {
|
||||
if expandErr != nil {
|
||||
warning = warning + " Query expansion failed: " + expandErr.Error()
|
||||
}
|
||||
a.Hub.Broadcast("progress", gin.H{"type": "search", "status": "Gemini Vision fallback to ranked results", "progress": 90, "message": warning})
|
||||
c.JSON(http.StatusOK, gin.H{"results": fallback, "warning": warning, "queries": queryVariants})
|
||||
return
|
||||
}
|
||||
@@ -305,6 +312,7 @@ func (a *App) searchMedia(c *gin.Context) {
|
||||
if expandErr != nil {
|
||||
response["warning"] = "Gemini query expansion failed: " + expandErr.Error() + ". Using the original query only."
|
||||
}
|
||||
a.Hub.Broadcast("progress", gin.H{"type": "search", "status": "search complete", "progress": 100})
|
||||
c.JSON(http.StatusOK, response)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user