import React, { useState, useEffect } from 'react' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@core/components/ui/card' import { Badge } from '@core/components/ui/badge' import { Button } from '@core/components/ui/button' import { Tabs, TabsContent, TabsList, TabsTrigger } from '@core/components/ui/tabs' import { useApi } from '@core/hooks/useApi' import { formatDistanceToNow } from 'date-fns' interface SignalMetrics { total_signals: number signals_today: number signals_this_week: number conversion_rate: number top_sources: Array<{ source: string; count: number }> recent_signals: Array<{ id: string action_type: string source: string stage: string created_at: string account_name?: string }> } interface FunnelMetrics { anonymous_visitors: number identified_users: number installed_instances: number conversion_rates: { anonymous_to_identified: number identified_to_installed: number } stage_distribution: Array<{ stage: string count: number percentage: number }> } export default function OperationsDashboard() { const [signalMetrics, setSignalMetrics] = useState(null) const [funnelMetrics, setFunnelMetrics] = useState(null) const [loading, setLoading] = useState(true) const { apiFetch } = useApi() useEffect(() => { loadMetrics() }, []) const loadMetrics = async () => { try { const [signals, funnel] = await Promise.all([ apiFetch('/admin/signals/metrics'), apiFetch('/admin/funnel/metrics') ]) setSignalMetrics(signals) setFunnelMetrics(funnel) } catch (error) { console.error('Failed to load metrics:', error) } finally { setLoading(false) } } if (loading) { return
Loading operations dashboard...
} return (

Operations Dashboard

Monitor signal tracking, funnel performance, and system health

{/* Key Metrics */}
Total Signals
{signalMetrics?.total_signals || 0}

+{signalMetrics?.signals_today || 0} today

Conversion Rate
{(signalMetrics?.conversion_rate || 0).toFixed(1)}%

Last 30 days

Active Users
{funnelMetrics?.identified_users || 0}

Identified users

Installations
{funnelMetrics?.installed_instances || 0}

Active instances

Signal Analytics Funnel Performance System Health
Top Signal Sources Most active signal sources
{signalMetrics?.top_sources?.map((source, index) => (
{index + 1} {source.source}
{source.count}
))}
Recent Signals Latest signal activity
{signalMetrics?.recent_signals?.slice(0, 10).map((signal) => (
{signal.action_type}
{signal.account_name || 'Anonymous'} • {signal.source}
{signal.stage}
{formatDistanceToNow(new Date(signal.created_at), { addSuffix: true })}
))}
Funnel Stages User progression through funnel
{funnelMetrics?.stage_distribution?.map((stage) => (
{stage.stage} {stage.count} ({stage.percentage.toFixed(1)}%)
))}
Conversion Rates Stage-to-stage conversion
{(funnelMetrics?.conversion_rates.anonymous_to_identified || 0).toFixed(1)}%

Anonymous → Identified

{(funnelMetrics?.conversion_rates.identified_to_installed || 0).toFixed(1)}%

Identified → Installed

System Health Overall system status and performance
Healthy

Signal Processing

Operational

Database

Normal

API Response

) }