Class: DecisionLog

Inherits:
ApplicationRecord
  • Object
show all
Defined in:
lib/generators/decision_agent/install/templates/decision_log.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.average_confidence_by_time(bucket_size: 60, time_range: 3600) ⇒ Object



25
26
27
28
29
30
# File 'lib/generators/decision_agent/install/templates/decision_log.rb', line 25

def self.average_confidence_by_time(bucket_size: 60, time_range: 3600)
  recent(time_range)
    .where.not(confidence: nil)
    .group("(EXTRACT(EPOCH FROM created_at)::bigint / #{bucket_size}) * #{bucket_size}")
    .average(:confidence)
end

.count_by_time_bucket(bucket_size: 60, time_range: 3600) ⇒ Object

Time series aggregation helpers



19
20
21
22
23
# File 'lib/generators/decision_agent/install/templates/decision_log.rb', line 19

def self.count_by_time_bucket(bucket_size: 60, time_range: 3600)
  recent(time_range)
    .group("(EXTRACT(EPOCH FROM created_at)::bigint / #{bucket_size}) * #{bucket_size}")
    .count
end

.success_rate(time_range: 3600) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/generators/decision_agent/install/templates/decision_log.rb', line 32

def self.success_rate(time_range: 3600)
  total = recent(time_range).where.not(status: nil).count
  return 0.0 if total.zero?

  successful_count = recent(time_range).successful.count
  successful_count.to_f / total
end

Instance Method Details

#parsed_contextObject

Parse JSON context field



41
42
43
44
45
46
47
# File 'lib/generators/decision_agent/install/templates/decision_log.rb', line 41

def parsed_context
  return {} if context.nil?

  JSON.parse(context, symbolize_names: true)
rescue JSON::ParserError
  {}
end

#parsed_metadataObject

Parse JSON metadata field



50
51
52
53
54
55
56
# File 'lib/generators/decision_agent/install/templates/decision_log.rb', line 50

def 
  return {} if .nil?

  JSON.parse(, symbolize_names: true)
rescue JSON::ParserError
  {}
end