pub fn detect_patterns(
sessions: &[Arc<SessionMetadata>],
days: usize,
) -> UsagePatternsExpand description
Detect usage patterns
Analyzes hourly/weekday distributions, model usage (token + cost weighted), session duration, and peak hours (80th percentile threshold).
§Performance
Target: <30ms for 1000 sessions
§Graceful Degradation
- Empty sessions: Returns UsagePatterns::empty()
- Missing timestamps: Session skipped with warning
- No duration data: avg_session_duration = 0