import React from "react"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Server, Database, Cpu, HardDrive, Activity } from "lucide-react"; import { fetchServer } from "@/lib/api"; import SystemStatusCard from "@/components/admin/SystemStatusCard"; interface SystemStatus { uptimeSeconds: number; memory: { rss: number; heapTotal: number; heapUsed: number; external: number; arrayBuffers: number; }; versions: Record; counts: { vendors: number; orders: number; products: number; chats: number; }; } export default async function AdminStatusPage() { let systemStatus: SystemStatus | null = null; let error: string | null = null; try { systemStatus = await fetchServer("/admin/system-status"); } catch (err) { console.error("Failed to fetch system status:", err); error = "Failed to load system status"; } if (error) { return (

System Status

Monitor system health and performance metrics

{error}

); } const formatUptime = (seconds: number) => { const days = Math.floor(seconds / 86400); const hours = Math.floor((seconds % 86400) / 3600); const minutes = Math.floor((seconds % 3600) / 60); return `${days}d ${hours}h ${minutes}m`; }; const formatBytes = (bytes: number) => { const sizes = ['Bytes', 'KB', 'MB', 'GB']; if (bytes === 0) return '0 Bytes'; const i = Math.floor(Math.log(bytes) / Math.log(1024)); return Math.round(bytes / Math.pow(1024, i) * 100) / 100 + ' ' + sizes[i]; }; const memoryUsagePercent = systemStatus ? Math.round((systemStatus.memory.heapUsed / systemStatus.memory.heapTotal) * 100) : 0; return (

System Status

Monitor system health and performance metrics

{/* Server Status */} Server Status
Online {systemStatus ? formatUptime(systemStatus.uptimeSeconds) : 'N/A'}

Last checked: {new Date().toLocaleTimeString()}

{/* Database Status */} Database
Connected {systemStatus ? `${systemStatus.counts.vendors + systemStatus.counts.orders + systemStatus.counts.products} records` : 'N/A'}

Total collections: 4

{/* Memory Usage */} Memory
80 ? "destructive" : memoryUsagePercent > 60 ? "secondary" : "outline"}> {memoryUsagePercent}% {systemStatus ? formatBytes(systemStatus.memory.heapUsed) : 'N/A'}

Total: {systemStatus ? formatBytes(systemStatus.memory.heapTotal) : 'N/A'}

{/* Platform Stats */} Platform Stats
Active {systemStatus ? `${systemStatus.counts.vendors} vendors` : 'N/A'}

{systemStatus ? `${systemStatus.counts.orders} orders, ${systemStatus.counts.products} products` : 'N/A'}

{/* Node.js Version */} Runtime
{systemStatus ? `Node ${systemStatus.versions.node}` : 'N/A'} Runtime

{systemStatus ? `V8: ${systemStatus.versions.v8}` : 'N/A'}

); }