Class: Assistant::TechnicalSupport::CaseEmbeddingQuery

Inherits:
Object
  • Object
show all
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

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.

Parameters:

  • ids (Array<Integer>)

    bounded Support Case IDs

Returns:

  • (Hash{Integer => Array<Float>})

    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.

Parameters:

  • ids (ActiveRecord::Relation, Array<Integer>)

    Support Case IDs

Returns:

  • (Hash{Integer => Integer})

    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