mirror of
https://github.com/we-promise/sure.git
synced 2026-04-19 03:54:08 +00:00
Provider merchants enhancement (#1254)
* Add AI merchant enhancement and dedup * Enhancements Add error if job is already running add note that we also merge merchants * Allow updating provider website * Review fixes * Update provider_merchant.rb * Linter and fixes * FIX transaction quick menu modal
This commit is contained in:
@@ -17,6 +17,9 @@ class FamilyMerchantsController < ApplicationController
|
||||
assigned_ids = @provider_merchants.pluck(:id)
|
||||
@unlinked_merchants = ProviderMerchant.where(id: recently_unlinked_ids - assigned_ids).alphabetically
|
||||
|
||||
@enhanceable_count = @provider_merchants.where(website_url: [ nil, "" ]).count
|
||||
@llm_available = Provider::Registry.get_provider(:openai).present?
|
||||
|
||||
render layout: "settings"
|
||||
end
|
||||
|
||||
@@ -42,11 +45,21 @@ class FamilyMerchantsController < ApplicationController
|
||||
|
||||
def update
|
||||
if @merchant.is_a?(ProviderMerchant)
|
||||
# Convert ProviderMerchant to FamilyMerchant for this family only
|
||||
@family_merchant = @merchant.convert_to_family_merchant_for(Current.family, merchant_params)
|
||||
respond_to do |format|
|
||||
format.html { redirect_to family_merchants_path, notice: t(".converted_success") }
|
||||
format.turbo_stream { render turbo_stream: turbo_stream.action(:redirect, family_merchants_path) }
|
||||
if merchant_params[:name].present? && merchant_params[:name] != @merchant.name
|
||||
# Name changed — convert ProviderMerchant to FamilyMerchant for this family only
|
||||
@family_merchant = @merchant.convert_to_family_merchant_for(Current.family, merchant_params)
|
||||
respond_to do |format|
|
||||
format.html { redirect_to family_merchants_path, notice: t(".converted_success") }
|
||||
format.turbo_stream { render turbo_stream: turbo_stream.action(:redirect, family_merchants_path) }
|
||||
end
|
||||
else
|
||||
# Only website changed — update the ProviderMerchant directly
|
||||
@merchant.update!(merchant_params.slice(:website_url))
|
||||
@merchant.generate_logo_url_from_website!
|
||||
respond_to do |format|
|
||||
format.html { redirect_to family_merchants_path, notice: t(".success") }
|
||||
format.turbo_stream { render turbo_stream: turbo_stream.action(:redirect, family_merchants_path) }
|
||||
end
|
||||
end
|
||||
elsif @merchant.update(merchant_params)
|
||||
respond_to do |format|
|
||||
@@ -72,6 +85,19 @@ class FamilyMerchantsController < ApplicationController
|
||||
end
|
||||
end
|
||||
|
||||
def enhance
|
||||
cache_key = "enhance_provider_merchants:#{Current.family.id}"
|
||||
|
||||
already_running = !Rails.cache.write(cache_key, true, expires_in: 10.minutes, unless_exist: true)
|
||||
|
||||
if already_running
|
||||
return redirect_to family_merchants_path, alert: t(".already_running")
|
||||
end
|
||||
|
||||
EnhanceProviderMerchantsJob.perform_later(Current.family)
|
||||
redirect_to family_merchants_path, notice: t(".success")
|
||||
end
|
||||
|
||||
def merge
|
||||
@merchants = all_family_merchants
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user