Class: DecisionAgent::Monitoring::Storage::BaseAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/decision_agent/monitoring/storage/base_adapter.rb

Overview

Base adapter interface for metrics storage Subclasses must implement all abstract methods

Direct Known Subclasses

ActiveRecordAdapter, MemoryAdapter

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.available?Boolean

Check if adapter is available (dependencies installed)

Returns:

Raises:



84
85
86
# File 'lib/decision_agent/monitoring/storage/base_adapter.rb', line 84

def self.available?
  raise NotImplementedError, "#{self} must implement .available?"
end

Instance Method Details

#cleanup(older_than:) ⇒ Integer

Clean up old metrics

Parameters:

  • Remove metrics older than this many seconds

Returns:

  • Number of metrics removed

Raises:



78
79
80
# File 'lib/decision_agent/monitoring/storage/base_adapter.rb', line 78

def cleanup(older_than:)
  raise NotImplementedError, "#{self.class} must implement #cleanup"
end

#metrics_countHash

Get count of metrics stored

Returns:

  • Count by metric type

Raises:



71
72
73
# File 'lib/decision_agent/monitoring/storage/base_adapter.rb', line 71

def metrics_count
  raise NotImplementedError, "#{self.class} must implement #metrics_count"
end

#record_decision(decision, context, confidence: nil, evaluations_count: 0, duration_ms: nil, status: nil) ⇒ void

This method returns an undefined value.

Record a decision

Parameters:

  • The decision made

  • Decision context

  • (defaults to: nil)

    Confidence score (0-1)

  • (defaults to: 0)

    Number of evaluations

  • (defaults to: nil)

    Decision duration in milliseconds

  • (defaults to: nil)

    Decision status (success, failure, error)

Raises:



17
18
19
# File 'lib/decision_agent/monitoring/storage/base_adapter.rb', line 17

def record_decision(decision, context, confidence: nil, evaluations_count: 0, duration_ms: nil, status: nil)
  raise NotImplementedError, "#{self.class} must implement #record_decision"
end

#record_error(error_type, message: nil, stack_trace: nil, severity: nil, context: {}) ⇒ void

This method returns an undefined value.

Record an error

Parameters:

  • Type of error

  • (defaults to: nil)

    Error message

  • (defaults to: nil)

    Stack trace

  • (defaults to: nil)

    Error severity (low, medium, high, critical)

  • (defaults to: {})

    Error context

Raises:



49
50
51
# File 'lib/decision_agent/monitoring/storage/base_adapter.rb', line 49

def record_error(error_type, message: nil, stack_trace: nil, severity: nil, context: {})
  raise NotImplementedError, "#{self.class} must implement #record_error"
end

#record_evaluation(evaluator_name, score: nil, success: nil, duration_ms: nil, details: {}) ⇒ void

This method returns an undefined value.

Record an evaluation

Parameters:

  • Name of the evaluator

  • (defaults to: nil)

    Evaluation score

  • (defaults to: nil)

    Whether evaluation succeeded

  • (defaults to: nil)

    Evaluation duration

  • (defaults to: {})

    Additional details

Raises:



28
29
30
# File 'lib/decision_agent/monitoring/storage/base_adapter.rb', line 28

def record_evaluation(evaluator_name, score: nil, success: nil, duration_ms: nil, details: {})
  raise NotImplementedError, "#{self.class} must implement #record_evaluation"
end

#record_performance(operation, duration_ms: nil, status: nil, metadata: {}) ⇒ void

This method returns an undefined value.

Record a performance metric

Parameters:

  • Operation name

  • (defaults to: nil)

    Duration in milliseconds

  • (defaults to: nil)

    Status (success, failure, error)

  • (defaults to: {})

    Additional metadata

Raises:



38
39
40
# File 'lib/decision_agent/monitoring/storage/base_adapter.rb', line 38

def record_performance(operation, duration_ms: nil, status: nil, metadata: {})
  raise NotImplementedError, "#{self.class} must implement #record_performance"
end

#statistics(time_range: 3600) ⇒ Hash

Get statistics for a time range

Parameters:

  • (defaults to: 3600)

    Time range in seconds

Returns:

  • Statistics summary

Raises:



56
57
58
# File 'lib/decision_agent/monitoring/storage/base_adapter.rb', line 56

def statistics(time_range: 3600)
  raise NotImplementedError, "#{self.class} must implement #statistics"
end

#time_series(metric_type, bucket_size: 60, time_range: 3600) ⇒ Hash

Get time series data

Parameters:

  • Type of metric (:decisions, :evaluations, :performance, :errors)

  • (defaults to: 60)

    Bucket size in seconds

  • (defaults to: 3600)

    Time range in seconds

Returns:

  • Time series data

Raises:



65
66
67
# File 'lib/decision_agent/monitoring/storage/base_adapter.rb', line 65

def time_series(metric_type, bucket_size: 60, time_range: 3600)
  raise NotImplementedError, "#{self.class} must implement #time_series"
end