Class: GroupLandingPages::AiFieldTranslationService

Inherits:
Object
  • Object
show all
Includes:
ElasticAPM::SpanHelpers
Defined in:
app/services/group_landing_pages/ai_field_translation_service.rb

Overview

Service for field-level AI translation (single field, multiple languages)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(field_name:, source_language:, source_text:, target_languages:) ⇒ AiFieldTranslationService

Returns a new instance of AiFieldTranslationService.



11
12
13
14
15
16
# File 'app/services/group_landing_pages/ai_field_translation_service.rb', line 11

def initialize(field_name:, source_language:, source_text:, target_languages:)
  @field_name = field_name
  @source_language = source_language
  @source_text = source_text
  @target_languages = target_languages
end

Instance Attribute Details

#field_nameObject (readonly)

Returns the value of attribute field_name.



9
10
11
# File 'app/services/group_landing_pages/ai_field_translation_service.rb', line 9

def field_name
  @field_name
end

#source_languageObject (readonly)

Returns the value of attribute source_language.



9
10
11
# File 'app/services/group_landing_pages/ai_field_translation_service.rb', line 9

def source_language
  @source_language
end

#source_textObject (readonly)

Returns the value of attribute source_text.



9
10
11
# File 'app/services/group_landing_pages/ai_field_translation_service.rb', line 9

def source_text
  @source_text
end

#target_languagesObject (readonly)

Returns the value of attribute target_languages.



9
10
11
# File 'app/services/group_landing_pages/ai_field_translation_service.rb', line 9

def target_languages
  @target_languages
end

Instance Method Details

#callObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'app/services/group_landing_pages/ai_field_translation_service.rb', line 18

def call
  validate_inputs!

  return failure_result('No source text provided') if source_text.blank?
  return failure_result('No target languages provided') if target_languages.blank?

  # Build translation prompt
  prompt = build_translation_prompt

  # Execute translation
  translations = execute_translation(prompt)

  return failure_result('No translations generated') if translations.blank?

  success_result(translations)
rescue StandardError => e
  handle_error(e)
end