diff --git a/internal/tender/recommendation_page_cache.go b/internal/tender/recommendation_page_cache.go index 4f51636..d360f56 100644 --- a/internal/tender/recommendation_page_cache.go +++ b/internal/tender/recommendation_page_cache.go @@ -201,6 +201,20 @@ func (s *tenderService) buildAllRankedRecommendations( return out, nil } +func (s *tenderService) isRecommendedPageCacheStale(ctx context.Context, companyID string, cachedCount int) bool { + companyID = strings.TrimSpace(companyID) + if companyID == "" || cachedCount == 0 { + return false + } + + recommendations, err := s.companyService.GetAIRecommendations(ctx, companyID) + if err != nil || len(recommendations) == 0 { + return false + } + + return cachedCount < len(recommendations) +} + func (s *tenderService) recommendFromPageCache( ctx context.Context, companyID string, @@ -223,6 +237,10 @@ func (s *tenderService) recommendFromPageCache( return nil, false } + if len(companyIDs) == 0 && s.isRecommendedPageCacheStale(ctx, companyID, len(cached)) { + return nil, false + } + excluded, excludedByCompany, err := s.loadRecommendationExclusions(ctx, form, companyID, companyIDs) if err != nil { return nil, false