Class: Crm::Amazon::ListingsController
- Inherits:
-
CrmController
- Object
- CrmController
- Crm::Amazon::ListingsController
- Defined in:
- app/controllers/crm/amazon/listings_controller.rb
Overview
Controller: listings.
Instance Method Summary collapse
-
#execute ⇒ void
POST /crm/amazon/listings/:id/execute — runs the AI listing optimizer and re-renders the prompt form with generated listing content.
- #index ⇒ void
-
#prompt ⇒ void
GET /crm/amazon/listings/:id/prompt — the AI listing-optimizer prompt form.
-
#save ⇒ void
POST /crm/amazon/listings/:id/save — saves the reviewed AI-generated listing content as Amazon spec values.
Instance Method Details
#execute ⇒ void
This method returns an undefined value.
POST /crm/amazon/listings/:id/execute — runs the AI listing optimizer
and re-renders the prompt form with generated listing content.
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'app/controllers/crm/amazon/listings_controller.rb', line 24 def execute @listing_optimizer = Amazon::ListingOptimizer.new(model: params.dig(:job, :model)) @job = OpenStruct.new(params[:job]) @job.target_locale = @job.target_locale.to_sym @job.result = @listing_optimizer.process(item: @item, prompt: @job.prompt, target_keywords: @job.target_keywords, locale: @job.target_locale) listing = @job.result.dig(:response, :listing) @job.product_title = listing[:product_title] listing[:bullet_points].each_with_index do |bullet_point, index| @job.send(:"bullet_point_#{index + 1}=", bullet_point) end @job.product_description = listing[:product_description] @job.generic_keyword = listing[:generic_keyword] @job.target_keywords = listing[:target_keywords] || @listing_optimizer.target_keywords render :prompt end |
#index ⇒ void
This method returns an undefined value.
7 |
# File 'app/controllers/crm/amazon/listings_controller.rb', line 7 def index; end |
#prompt ⇒ void
This method returns an undefined value.
GET /crm/amazon/listings/:id/prompt — the AI listing-optimizer prompt form.
12 13 14 15 16 17 18 |
# File 'app/controllers/crm/amazon/listings_controller.rb', line 12 def prompt @listing_optimizer = Amazon::ListingOptimizer.new @job = OpenStruct.new(params[:job]) @job.prompt ||= @listing_optimizer.prompt @job.target_keywords ||= @item.amazon_target_keywords @job.model ||= Amazon::ListingOptimizer::DEFAULT_MODEL end |
#save ⇒ void
This method returns an undefined value.
POST /crm/amazon/listings/:id/save — saves the reviewed AI-generated
listing content as Amazon spec values.
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'app/controllers/crm/amazon/listings_controller.rb', line 44 def save @job = OpenStruct.new(params[:job]) @link_to_product_line = @job.link_to_product_line.present? Mobility.with_locale(@job.target_locale) do @item.create_or_set_amazon_spec_value(name: 'Title', text_blurb: @job.product_title, link_to_product_line: @link_to_product_line) if @job.product_title.present? && @job.save_product_title.to_b @item.create_or_set_amazon_spec_value(name: "Feature 1", text_blurb: @job.bullet_point_1, link_to_product_line: @link_to_product_line) if @job.bullet_point_1.present? && @job.save_bullet_point_1.to_b @item.create_or_set_amazon_spec_value(name: "Feature 2", text_blurb: @job.bullet_point_2, link_to_product_line: @link_to_product_line) if @job.bullet_point_1.present? && @job.save_bullet_point_2.to_b @item.create_or_set_amazon_spec_value(name: "Feature 3", text_blurb: @job.bullet_point_3, link_to_product_line: @link_to_product_line) if @job.bullet_point_1.present? && @job.save_bullet_point_3.to_b @item.create_or_set_amazon_spec_value(name: "Feature 4", text_blurb: @job.bullet_point_4, link_to_product_line: @link_to_product_line) if @job.bullet_point_1.present? && @job.save_bullet_point_4.to_b @item.create_or_set_amazon_spec_value(name: "Feature 5", text_blurb: @job.bullet_point_5, link_to_product_line: @link_to_product_line) if @job.bullet_point_1.present? && @job.save_bullet_point_5.to_b @item.create_or_set_amazon_spec_value(name: "Feature 6", text_blurb: @job.bullet_point_6, link_to_product_line: @link_to_product_line) if @job.bullet_point_1.present? && @job.save_bullet_point_6.to_b @item.create_or_set_amazon_spec_value(name: 'Generic Keyword', text_blurb: @job.generic_keyword, link_to_product_line: @link_to_product_line) if @job.generic_keyword.present? && @job.save_generic_keyword.to_b @item.create_or_set_amazon_spec_value(name: 'Description', text_blurb: @job.product_description, link_to_product_line: @link_to_product_line) if @job.product_description.present? && @job.save_product_description.to_b @item.create_or_set_amazon_spec_value(name: 'Target Keywords', text_blurb: @job.target_keywords, link_to_product_line: @link_to_product_line) if @job.target_keywords && @job.save_target_keywords.to_b end @item.update_rendered_product_specifications(locales: [@job.target_locale]) redirect_to item_path(@item, tab: "amazon") end |