Class: Assistant::TechnicalSupport::CaseEmbeddingQuery
- Inherits:
-
Object
- Object
- Assistant::TechnicalSupport::CaseEmbeddingQuery
- Includes:
- ArelHelpers
- Defined in:
- app/queries/assistant/technical_support/case_embedding_query.rb
Overview
Aggregates existing Activity, Communication, and linked CallRecord vectors
by Support Case. Returned vectors are in-memory averages used only for
sample diversity.
Instance Method Summary collapse
-
#averages(ids:) ⇒ Hash{Integer => Array<Float>}
Weighted average vector by case.
-
#counts(ids:) ⇒ Hash{Integer => Integer}
Searchable event count by case.
-
#initialize(linked_call_record_query: CaseLinkedCallRecordQuery.new) ⇒ CaseEmbeddingQuery
constructor
A new instance of CaseEmbeddingQuery.
Constructor Details
#initialize(linked_call_record_query: CaseLinkedCallRecordQuery.new) ⇒ CaseEmbeddingQuery
Returns a new instance of CaseEmbeddingQuery.
11 12 13 |
# File 'app/queries/assistant/technical_support/case_embedding_query.rb', line 11 def initialize(linked_call_record_query: CaseLinkedCallRecordQuery.new) @linked_call_record_query = linked_call_record_query end |
Instance Method Details
#averages(ids:) ⇒ Hash{Integer => Array<Float>}
Returns weighted average vector by case.
29 30 31 32 33 34 35 36 37 38 |
# File 'app/queries/assistant/technical_support/case_embedding_query.rb', line 29 def averages(ids:) ActiveRecord::Base.with_connection do stats = merge_stats( grouped_stats(activity_scope(ids)), grouped_stats(communication_scope(ids)), call_record_stats(ids) ) stats.transform_values { |values| values[:embedding] } end end |
#counts(ids:) ⇒ Hash{Integer => Integer}
Returns searchable event count by case.
17 18 19 20 21 22 23 24 25 |
# File 'app/queries/assistant/technical_support/case_embedding_query.rb', line 17 def counts(ids:) ActiveRecord::Base.with_connection do merge_counts( grouped_count(activity_scope(ids)), grouped_count(communication_scope(ids)), call_record_stats(ids).transform_values { |values| values.fetch(:count) } ) end end |