주의 구간
diff --git a/src/components/report/NasTable.tsx b/src/components/report/NasTable.tsx
new file mode 100644
index 0000000..ed0437c
--- /dev/null
+++ b/src/components/report/NasTable.tsx
@@ -0,0 +1,37 @@
+'use client';
+
+import type { MetricInstance } from '@/types/metrics';
+import { formatPercent } from '@/lib/formatters';
+
+interface NasTableProps {
+ nas: MetricInstance[];
+}
+
+export default function NasTable({ nas }: NasTableProps) {
+ if (!nas || nas.length === 0) return null;
+
+ return (
+
+
+
+
+ | Mountpoint |
+ Avg |
+ Max |
+ Min |
+
+
+
+ {nas.map((inst) => (
+
+ | {inst.instance || '-'} |
+ {formatPercent(inst.stats.avg)} |
+ {formatPercent(inst.stats.max)} |
+ {formatPercent(inst.stats.min)} |
+
+ ))}
+
+
+
+ );
+}
diff --git a/src/components/report/NetworkTable.tsx b/src/components/report/NetworkTable.tsx
new file mode 100644
index 0000000..acc6fad
--- /dev/null
+++ b/src/components/report/NetworkTable.tsx
@@ -0,0 +1,53 @@
+'use client';
+
+import type { NetworkMetrics } from '@/types/metrics';
+import { formatBytesPerSec } from '@/lib/formatters';
+
+interface NetworkTableProps {
+ title: string;
+ data: NetworkMetrics;
+}
+
+export default function NetworkTable({ title, data }: NetworkTableProps) {
+ const hasData = data.receive.length > 0 || data.transmit.length > 0;
+ if (!hasData) return null;
+
+ return (
+
+
+
+
+ | {title} |
+ Avg |
+ Max |
+ Min |
+
+
+
+ {data.receive.map((inst, idx) => (
+
+ |
+ RX
+ {inst.instance || 'total'}
+ |
+ {formatBytesPerSec(inst.stats.avg)} |
+ {formatBytesPerSec(inst.stats.max)} |
+ {formatBytesPerSec(inst.stats.min)} |
+
+ ))}
+ {data.transmit.map((inst, idx) => (
+
+ |
+ TX
+ {inst.instance || 'total'}
+ |
+ {formatBytesPerSec(inst.stats.avg)} |
+ {formatBytesPerSec(inst.stats.max)} |
+ {formatBytesPerSec(inst.stats.min)} |
+
+ ))}
+
+
+
+ );
+}
diff --git a/src/components/report/NodeTable.tsx b/src/components/report/NodeTable.tsx
index fcc49a9..62c8847 100644
--- a/src/components/report/NodeTable.tsx
+++ b/src/components/report/NodeTable.tsx
@@ -31,7 +31,9 @@ export default function NodeTable({ nodes, cpu, memory, disk }: NodeTableProps)
MEM avg |
MEM max |
MEM min |
+
DISK avg |
DISK max |
+
DISK min |
@@ -70,9 +72,13 @@ export default function NodeTable({ nodes, cpu, memory, disk }: NodeTableProps)
{memStats ? formatPercent(memStats.min) : '-'}
|
+ {diskStats ? formatPercent(diskStats.avg) : '-'} |
{diskStats ? formatPercent(diskStats.max) : '-'}
|
+
+ {diskStats ? formatPercent(diskStats.min) : '-'}
+ |
);
})}