Class: DecisionLog
- Inherits:
-
ApplicationRecord
- Object
- ApplicationRecord
- DecisionLog
- Defined in:
- lib/generators/decision_agent/install/templates/decision_log.rb
Class Method Summary collapse
- .average_confidence_by_time(bucket_size: 60, time_range: 3600) ⇒ Object
-
.count_by_time_bucket(bucket_size: 60, time_range: 3600) ⇒ Object
Time series aggregation helpers.
- .success_rate(time_range: 3600) ⇒ Object
Instance Method Summary collapse
-
#parsed_context ⇒ Object
Parse JSON context field.
-
#parsed_metadata ⇒ Object
Parse JSON metadata field.
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_context ⇒ Object
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_metadata ⇒ Object
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 |