Class: Tracebook::RollupDaily

Inherits:
ApplicationRecord show all
Defined in:
app/models/tracebook/rollup_daily.rb

Overview

Daily aggregated metrics for LLM interactions.

Stores summarized statistics by date/provider/model/project for analytics and cost reporting. Updated nightly by DailyRollupsJob.

Fields

  • date - Date of rollup (part of composite PK)
  • provider - Provider name (part of composite PK)
  • model - Model identifier (part of composite PK)
  • project - Project name (part of composite PK, nullable)
  • interactions_count - Total number of interactions
  • success_count - Number of successful interactions
  • error_count - Number of failed interactions
  • input_tokens_sum - Sum of input tokens
  • output_tokens_sum - Sum of output tokens
  • cost_cents_sum - Total cost in cents

Primary Key

Composite PK: (date, provider, model, project)

Examples:

Querying daily metrics

RollupDaily
  .where(provider: "openai", date: Date.current)
  .sum(:cost_cents_sum) / 100.0 # Total cost in dollars

Finding top models by cost

RollupDaily
  .where(date: 30.days.ago..Date.current)
  .group(:provider, :model)
  .sum(:cost_cents_sum)
  .sort_by { |_, cents| -cents }
  .first(10)

Error rate for a model

rollup = RollupDaily.find_by(date: Date.current, provider: "openai", model: "gpt-4o")
error_rate = rollup.error_count.to_f / rollup.interactions_count

See Also:

Instance Attribute Summary collapse

Instance Attribute Details

#cost_cents_sumInteger

Returns Total cost in cents (default: 0).

Returns:

  • (Integer)

    Total cost in cents (default: 0)



67
# File 'app/models/tracebook/rollup_daily.rb', line 67

attribute :cost_cents_sum, :integer, default: 0

#error_countInteger

Returns Number of failed interactions (default: 0).

Returns:

  • (Integer)

    Number of failed interactions (default: 0)



55
# File 'app/models/tracebook/rollup_daily.rb', line 55

attribute :error_count, :integer, default: 0

#input_tokens_sumInteger

Returns Sum of input tokens across all interactions (default: 0).

Returns:

  • (Integer)

    Sum of input tokens across all interactions (default: 0)



59
# File 'app/models/tracebook/rollup_daily.rb', line 59

attribute :input_tokens_sum, :integer, default: 0

#interactions_countInteger

Returns Total number of interactions (default: 0).

Returns:

  • (Integer)

    Total number of interactions (default: 0)



47
# File 'app/models/tracebook/rollup_daily.rb', line 47

attribute :interactions_count, :integer, default: 0

#output_tokens_sumInteger

Returns Sum of output tokens across all interactions (default: 0).

Returns:

  • (Integer)

    Sum of output tokens across all interactions (default: 0)



63
# File 'app/models/tracebook/rollup_daily.rb', line 63

attribute :output_tokens_sum, :integer, default: 0

#success_countInteger

Returns Number of successful interactions (default: 0).

Returns:

  • (Integer)

    Number of successful interactions (default: 0)



51
# File 'app/models/tracebook/rollup_daily.rb', line 51

attribute :success_count, :integer, default: 0