diff --git a/app/models/family/auto_categorizer.rb b/app/models/family/auto_categorizer.rb index 7e74817ce..f9a83f1f2 100644 --- a/app/models/family/auto_categorizer.rb +++ b/app/models/family/auto_categorizer.rb @@ -16,9 +16,16 @@ class Family::AutoCategorizer Rails.logger.info("Auto-categorizing #{scope.count} transactions for family #{family.id}") end + categories_input = user_categories_input + + if categories_input.empty? + Rails.logger.error("Cannot auto-categorize transactions for family #{family.id}: no categories available") + return + end + result = llm_provider.auto_categorize( transactions: transactions_input, - user_categories: user_categories_input, + user_categories: categories_input, family: family ) @@ -30,7 +37,7 @@ class Family::AutoCategorizer scope.each do |transaction| auto_categorization = result.data.find { |c| c.transaction_id == transaction.id } - category_id = user_categories_input.find { |c| c[:name] == auto_categorization&.category_name }&.dig(:id) + category_id = categories_input.find { |c| c[:name] == auto_categorization&.category_name }&.dig(:id) if category_id.present? transaction.enrich_attribute( diff --git a/app/models/provider/openai.rb b/app/models/provider/openai.rb index e25361e36..be320e959 100644 --- a/app/models/provider/openai.rb +++ b/app/models/provider/openai.rb @@ -54,6 +54,11 @@ class Provider::Openai < Provider def auto_categorize(transactions: [], user_categories: [], model: "", family: nil) with_provider_response do raise Error, "Too many transactions to auto-categorize. Max is 25 per request." if transactions.size > 25 + if user_categories.blank? + family_id = family&.id || "unknown" + Rails.logger.error("Cannot auto-categorize transactions for family #{family_id}: no categories available") + raise Error, "No categories available for auto-categorization" + end effective_model = model.presence || @default_model