Class: DecisionAgent::ABTesting::ABTestAssignment

Inherits:
Object
  • Object
show all
Defined in:
lib/decision_agent/ab_testing/ab_test_assignment.rb

Overview

Tracks individual assignments of users/requests to A/B test variants

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ab_test_id:, variant:, version_id:, **options) ⇒ ABTestAssignment

Returns a new instance of ABTestAssignment.

Parameters:

  • ab_test_id (String, Integer)

    The A/B test ID

  • variant (Symbol)

    :champion or :challenger

  • version_id (String, Integer)

    The rule version ID that was used

  • options (Hash)

    Optional configuration

Options Hash (**options):

  • :user_id (String)

    User identifier (optional)

  • :timestamp (Time)

    When the assignment occurred

  • :decision_result (String)

    The decision outcome

  • :confidence (Float)

    Confidence score of the decision

  • :context (Hash)

    Additional context for the decision

  • :id (String, Integer)

    Optional ID (for persistence)



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/decision_agent/ab_testing/ab_test_assignment.rb', line 20

def initialize(
  ab_test_id:,
  variant:,
  version_id:,
  **options
)
  @id = options[:id]
  @ab_test_id = ab_test_id
  @user_id = options[:user_id]
  @variant = variant
  @version_id = version_id
  @timestamp = options[:timestamp] || Time.now.utc
  @decision_result = options[:decision_result]
  @confidence = options[:confidence]
  @context = options[:context] || {}

  validate!
end

Instance Attribute Details

#ab_test_idObject (readonly)

Returns the value of attribute ab_test_id.



7
8
9
# File 'lib/decision_agent/ab_testing/ab_test_assignment.rb', line 7

def ab_test_id
  @ab_test_id
end

#confidenceObject (readonly)

Returns the value of attribute confidence.



7
8
9
# File 'lib/decision_agent/ab_testing/ab_test_assignment.rb', line 7

def confidence
  @confidence
end

#contextObject (readonly)

Returns the value of attribute context.



7
8
9
# File 'lib/decision_agent/ab_testing/ab_test_assignment.rb', line 7

def context
  @context
end

#decision_resultObject (readonly)

Returns the value of attribute decision_result.



7
8
9
# File 'lib/decision_agent/ab_testing/ab_test_assignment.rb', line 7

def decision_result
  @decision_result
end

#idObject (readonly)

Returns the value of attribute id.



7
8
9
# File 'lib/decision_agent/ab_testing/ab_test_assignment.rb', line 7

def id
  @id
end

#timestampObject (readonly)

Returns the value of attribute timestamp.



7
8
9
# File 'lib/decision_agent/ab_testing/ab_test_assignment.rb', line 7

def timestamp
  @timestamp
end

#user_idObject (readonly)

Returns the value of attribute user_id.



7
8
9
# File 'lib/decision_agent/ab_testing/ab_test_assignment.rb', line 7

def user_id
  @user_id
end

#variantObject (readonly)

Returns the value of attribute variant.



7
8
9
# File 'lib/decision_agent/ab_testing/ab_test_assignment.rb', line 7

def variant
  @variant
end

#version_idObject (readonly)

Returns the value of attribute version_id.



7
8
9
# File 'lib/decision_agent/ab_testing/ab_test_assignment.rb', line 7

def version_id
  @version_id
end

Instance Method Details

#record_decision(decision, confidence) ⇒ Object

Update the assignment with decision results

Parameters:

  • decision (String)

    The decision result

  • confidence (Float)

    The confidence score



42
43
44
45
# File 'lib/decision_agent/ab_testing/ab_test_assignment.rb', line 42

def record_decision(decision, confidence)
  @decision_result = decision
  @confidence = confidence
end

#to_hHash

Convert to hash representation

Returns:

  • (Hash)


49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/decision_agent/ab_testing/ab_test_assignment.rb', line 49

def to_h
  {
    id: @id,
    ab_test_id: @ab_test_id,
    user_id: @user_id,
    variant: @variant,
    version_id: @version_id,
    timestamp: @timestamp,
    decision_result: @decision_result,
    confidence: @confidence,
    context: @context
  }
end