Skip to content

[Phase 5] Implement by_day token usage aggregation in MetricsTracker #120

Description

@frankbria

Overview

The MetricsTracker has a TODO for daily token usage aggregation, which would enable timeline visualizations.

Current State

File: codeframe/lib/metrics_tracker.py lines 457-458

# TODO: Implement by_day aggregation (future enhancement)
# This would group usage by date for timeline visualization

Expected Behavior

  • Aggregate token usage by day for time-series analysis
  • Support date range queries (start_date, end_date)
  • Calculate daily costs
  • Enable dashboard charts showing trends over time

Implementation Requirements

  1. Add get_usage_by_day() method to MetricsTracker
  2. Query database with date grouping
  3. Return daily aggregates with date, tokens, cost
  4. Support filtering by agent, model, project

Example Usage

tracker = MetricsTracker(db=db)

# Get daily usage for last 30 days
daily_usage = tracker.get_usage_by_day(
    project_id=1,
    start_date="2025-11-01",
    end_date="2025-11-30"
)

# Result:
# [
#     {"date": "2025-11-01", "tokens": 15000, "cost_usd": 0.45},
#     {"date": "2025-11-02", "tokens": 22000, "cost_usd": 0.66},
#     ...
# ]

SQL Query

SELECT 
    DATE(timestamp) as date,
    SUM(input_tokens + output_tokens) as total_tokens,
    SUM(cost_usd) as total_cost
FROM token_usage
WHERE project_id = ? 
  AND timestamp BETWEEN ? AND ?
GROUP BY DATE(timestamp)
ORDER BY date

Acceptance Criteria

  • Daily aggregation implemented
  • Date range filtering supported
  • Results include date, tokens, cost
  • Dashboard displays daily trends chart
  • Unit tests verify aggregation logic

Priority

P3 - Advanced: Nice visualization feature, not critical for core functionality.

References

  • File: codeframe/lib/metrics_tracker.py lines 457-458

Metadata

Metadata

Assignees

Labels

FutureDeferred - beyond v1/v2 scope, consider for future versionsenhancementNew feature or requestphase-5Phase 5: Advanced Features & Polish

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions