'use client'; import React from 'react'; import { OperationsHealth, ComponentHealthStatus, HealthComponentKey, OperationsOverviewData, OperationsNavId, } from './types'; import { HEALTH_COMPONENT_METADATA } from '../../lib/ops-data'; interface OperationsOverviewProps { overview?: OperationsOverviewData | null; health: OperationsHealth; onRefresh: () => Promise | void; isRefreshing: boolean; onSelectIncident?: (caseRef: string) => void; onNavigateNav?: (nav: OperationsNavId) => void; } export function OperationsOverview({ overview, health, onRefresh, isRefreshing, onSelectIncident, onNavigateNav, }: OperationsOverviewProps) { const componentKeys: HealthComponentKey[] = [ 'operations_api', 'operations_database', 'session_validation', 'audit_persistence', ]; const effectiveHealth = overview?.health ?? health; function getStatusBadge(status: ComponentHealthStatus) { switch (status) { case 'available': return { label: 'Available', icon: 'check_circle', classes: 'bg-emerald-950/60 text-emerald-400 border-emerald-800/60', }; case 'degraded': return { label: 'Degraded', icon: 'warning', classes: 'bg-amber-950/60 text-amber-400 border-amber-800/60', }; case 'unavailable': return { label: 'Unavailable', icon: 'cancel', classes: 'bg-rose-950/60 text-rose-400 border-rose-800/60', }; case 'unknown': default: return { label: 'Unknown', icon: 'help', classes: 'bg-surface-container-highest text-on-surface-variant border-outline-variant/40', }; } } function getSeverityBadge(severity: string) { switch (severity) { case 'critical': return 'bg-rose-950/60 text-rose-400 border border-rose-800/60'; case 'high': return 'bg-amber-950/60 text-amber-400 border border-amber-800/60'; case 'medium': return 'bg-yellow-950/60 text-yellow-400 border border-yellow-800/60'; case 'low': default: return 'bg-blue-950/60 text-blue-400 border border-blue-800/60'; } } function getStatusBadgeClass(status: string) { switch (status) { case 'open': return 'bg-rose-950/60 text-rose-300 border border-rose-800/60'; case 'investigating': return 'bg-amber-950/60 text-amber-300 border border-amber-800/60'; case 'monitoring': return 'bg-cyan-950/60 text-cyan-300 border border-cyan-800/60'; case 'resolved': case 'closed': default: return 'bg-emerald-950/60 text-emerald-300 border border-emerald-800/60'; } } const effectiveCheckedAt = effectiveHealth.checked_at; const formattedCheckedAt = effectiveCheckedAt ? new Date(effectiveCheckedAt).toLocaleString('en-US', { year: 'numeric', month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit', second: '2-digit', timeZoneName: 'short', }) : '--'; return (
{/* Header Row: Title & Manual Refresh */}
System Health & Operations

System Health & Operations Overview

Unified telemetry, platform activity, and operational security triage.

Last checked
{/* 1. KPI Row (4 Cards) */}
{/* Card 1: Registered Users */}
Registered Users
group
{overview ? overview.users.total_registered.toLocaleString() : '--'}
trending_up +{overview ? overview.users.new_this_week.toLocaleString() : 0} this week
{/* Card 2: Active Users 24h / 7d */}
Active Users (24h)
bolt
{overview ? overview.users.active_24h.toLocaleString() : '--'}
{overview ? overview.users.active_7d.toLocaleString() : '--'} active in 7 days
{/* Card 3: Premium Members / Conversion Rate */}
Premium Members
workspace_premium
{overview ? overview.membership.premium_members.toLocaleString() : '--'}
{overview ? overview.membership.conversion_rate_pct : 0}% conv. ({overview ? overview.membership.free_members.toLocaleString() : 0} free)
{/* Card 4: Open Incidents */}
Open Incidents
0 ? 'text-rose-400' : (overview?.incidents.total_open ?? 0) > 0 ? 'text-amber-400' : 'text-emerald-400' }`}> {(overview?.incidents.total_open ?? 0) > 0 ? 'warning' : 'check_circle'}
0 ? 'text-rose-400' : (overview?.incidents.total_open ?? 0) > 0 ? 'text-amber-400' : 'text-on-surface' }`}> {overview ? overview.incidents.total_open : 0}
{overview ? overview.incidents.critical_count : 0} critical, {overview ? overview.incidents.high_count : 0} high
{/* 2. Platform Activity Split */}
{/* Website Activity */}
language

Website Platform Activity

Portal logins, browser sessions, and web registrations

Web Ingress
24h Sessions {overview ? overview.activity.web_active_sessions_24h.toLocaleString() : '--'}
24h Logins {overview ? overview.activity.web_logins_24h.toLocaleString() : '--'}
7d Signups {overview ? overview.activity.web_signups_7d.toLocaleString() : '--'}
{/* Mobile Telemetry Activity */}
two_wheeler

Mobile Telemetry Activity

Mobile ride recording, active sessions, and sensor data ingestion

Mobile Ingress
24h Sessions {overview ? overview.activity.mobile_active_sessions_24h.toLocaleString() : '--'}
Rides Today {overview ? overview.activity.mobile_rides_today.toLocaleString() : '--'}
Active Rides {overview ? overview.activity.mobile_rides_active.toLocaleString() : '--'}
Data Points {overview ? overview.activity.mobile_datapoints_24h.toLocaleString() : '--'}
24h Distance {overview?.activity.mobile_distance_miles_24h !== undefined ? `${overview.activity.mobile_distance_miles_24h} mi` : '--'}
Top Speed Today {overview?.activity.mobile_top_speed_mph_today !== undefined ? `${overview.activity.mobile_top_speed_mph_today} mph` : '--'}
Avg Speed Today {overview?.activity.mobile_avg_speed_mph_today !== undefined ? `${overview.activity.mobile_avg_speed_mph_today} mph` : '--'}
Ingress Rate {overview?.activity.mobile_ingress_rate_hz !== undefined ? `${overview.activity.mobile_ingress_rate_hz} Hz` : '20 Hz'}
{/* 3. Subsystem Health Telemetry (4 Cards) */}

Core Subsystem Health

{getStatusBadge(effectiveHealth.status).icon} System {getStatusBadge(effectiveHealth.status).label}
{componentKeys.map((key) => { const meta = HEALTH_COMPONENT_METADATA[key]; const comp = effectiveHealth.components?.[key]; const status = comp?.status ?? 'unknown'; const badge = getStatusBadge(status); return (
Subsystem

{meta.name}

{comp?.description || meta.description}

Status
{badge.icon} {badge.label}
); })}
{/* 4. Recent Security Errors / Denials Stream */}
security

Security Error & Denial Stream

Live monitoring of unauthorized attempts, PHP probes, and subsystem errors

{overview?.errors.php_probes_24h !== undefined && ( {overview.errors.php_probes_24h} PHP Probes (24h) )} {overview?.errors.denials_24h ?? 0} Denials (24h) {overview?.errors.errors_24h ?? 0} Errors (24h)
{overview?.errors.recent && overview.errors.recent.length > 0 ? (
{overview.errors.recent.map((err, idx) => (
{err.action === 'nginx.php_probe' ? 'php probe' : err.result} {err.action} {err.action === 'nginx.php_probe' ? `from ${err.actor_identity}` : `by ${err.actor_identity}`}
{err.target_resource && ( res: {err.target_resource} )} {err.reason_code && ( ({err.reason_code}) )}
))}
) : (
Zero security errors or access denials recorded in recent event window.
)}
{/* 5. Open Incidents Triage */}
crisis_alert

Open Incidents Triage

Active incidents requiring operator assessment or active investigation

{onNavigateNav && ( )}
{overview?.incidents.recent_open && overview.incidents.recent_open.length > 0 ? (
{/* Desktop Table */}
{overview.incidents.recent_open.map((inc) => ( onSelectIncident?.(inc.case_reference)} className={`hover:bg-surface-bright/40 transition-colors ${ onSelectIncident ? 'cursor-pointer' : '' }`} > ))}
Case Title Severity Status Created
{inc.case_reference} {inc.title} {inc.severity} {inc.status} {new Date(inc.created_at).toLocaleDateString('en-US', { month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit', })}
{/* Mobile Stacked Cards */}
{overview.incidents.recent_open.map((inc) => (
onSelectIncident?.(inc.case_reference)} className={`p-4 space-y-2.5 ${onSelectIncident ? 'cursor-pointer active:bg-surface-bright/40' : ''}`} >
{inc.case_reference}
{inc.severity} {inc.status}
{inc.title}
Created {new Date(inc.created_at).toLocaleDateString('en-US', { month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit', })}
))}
) : (
All operational systems normal. Zero open or active triage incidents.
)}
{/* 6. Operational Policy & Architecture Boundary */}
verified_user

Operational Architecture & Data Boundary

Authority Source

PostgreSQL ops.operators schema. Consumer roles and Firebase custom claims strictly bypassed.

Privacy Isolation

Zero cross-rider data access. Personal rides, GPS points, vehicles, and billing accounts are structurally inaccessible.

Session Integrity

Governed by host-prefixed __Host-motorsignal_ops cookies with strict same-origin isolation.

); }