/** * Analytics Dashboard (GTM-002) * * Provides a unified view of system analytics by aggregating: * - Usage metrics (from UsageMeter) * - Performance metrics (from PerformanceTracker) * - Success/failure rates by tier and domain * - Latency trends over time * - Cost trends over time */ import { type TimePeriod } from './usage-meter.js'; import { type PercentileStats } from './performance-tracker.js'; import type { RenderTier } from '../core/tiered-fetcher.js'; /** * Tier-level analytics */ export interface TierAnalytics { tier: RenderTier; requestCount: number; successRate: number; costUnits: number; costPercentage: number; latency: PercentileStats | null; avgDurationMs: number; } /** * Domain-level analytics */ export interface DomainAnalytics { domain: string; requestCount: number; successRate: number; costUnits: number; preferredTier: RenderTier; avgLatencyMs: number; p95LatencyMs: number | null; } /** * Time series data point */ export interface TimeSeriesPoint { timestamp: number; periodLabel: string; requestCount: number; successRate: number; totalCostUnits: number; avgLatencyMs: number; fallbackRate: number; } /** * System health indicators */ export interface SystemHealth { overall: 'healthy' | 'degraded' | 'unhealthy'; successRate: number; avgLatencyMs: number; fallbackRate: number; issues: string[]; recommendations: string[]; } /** * Full analytics dashboard response */ export interface AnalyticsDashboard { /** Schema version for API compatibility */ schemaVersion: string; /** When this snapshot was generated */ generatedAt: number; /** Time period covered */ period: TimePeriod; /** High-level summary */ summary: { totalRequests: number; totalCostUnits: number; overallSuccessRate: number; avgLatencyMs: number; totalDomains: number; trackingSince: number | null; lastActivity: number | null; }; /** System health assessment */ health: SystemHealth; /** Per-tier breakdown */ byTier: TierAnalytics[]; /** Top domains by various metrics */ topDomains: { byCost: DomainAnalytics[]; byRequests: DomainAnalytics[]; bySlowest: DomainAnalytics[]; byFastest: DomainAnalytics[]; }; /** Time series for trend visualization */ timeSeries: TimeSeriesPoint[]; /** Period-over-period trends */ trends: { requestTrend: number | null; costTrend: number | null; successRateTrend: number | null; latencyTrend: number | null; }; } /** * Options for dashboard generation */ export interface DashboardOptions { /** Time period for aggregation (default: 'day') */ period?: TimePeriod; /** Number of top domains to include (default: 10) */ topDomainsLimit?: number; /** Number of time series points (default: 24 for hour, 7 for day) */ timeSeriesPoints?: number; /** Filter by specific domain */ domain?: string; /** Filter by tenant ID */ tenantId?: string; } /** * Generate the analytics dashboard */ export declare function generateDashboard(options?: DashboardOptions): Promise; /** * Get a compact summary suitable for quick status checks */ export declare function getQuickStatus(): Promise<{ schemaVersion: string; status: 'healthy' | 'degraded' | 'unhealthy'; requests24h: number; successRate: number; avgLatencyMs: number; costUnits24h: number; }>; //# sourceMappingURL=analytics-dashboard.d.ts.map