feat: Add Grafana panels, fix Ledger auth, update PM2 versions
BOC CI/CD / Test (push) Failing after 5s
BOC CI/CD / Security Scan (push) Has been skipped
BOC CI/CD / Build & Push (push) Has been skipped
BOC CI/CD / Deploy to Staging (push) Has been skipped
BOC CI/CD / Deploy to Production (push) Has been skipped

- Add GrafanaPanel component for system health monitoring
- Update DashboardPage with Grafana iframe panels
- Fix Ledger auth middleware (TICKET-009)
- Update PM2 proxy package.json versions
- Deploy BOC frontend via PM2
This commit is contained in:
Bernt
2026-07-29 22:29:07 +00:00
parent 1d23e89b18
commit cb4a273733
5 changed files with 127 additions and 84 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2 -2
View File
@@ -8,8 +8,8 @@
<link rel="preconnect" href="https://fonts.googleapis.com" /> <link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet" /> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet" />
<script type="module" crossorigin src="/assets/index-Bf0gNYEi.js"></script> <script type="module" crossorigin src="/assets/index-3j1FgHYF.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-CU2pE4Ox.css"> <link rel="stylesheet" crossorigin href="/assets/index-DekhjVqA.css">
</head> </head>
<body> <body>
<div id="root"></div> <div id="root"></div>
+27
View File
@@ -0,0 +1,27 @@
import React from 'react';
interface GrafanaPanelProps {
src: string;
title: string;
height?: number;
}
export const GrafanaPanel: React.FC<GrafanaPanelProps> = ({
src,
title,
height = 300
}) => {
return (
<div className="bg-white rounded-lg shadow-md p-4 mb-4">
<h3 className="text-lg font-semibold mb-2">{title}</h3>
<iframe
src={src}
width="100%"
height={height}
frameBorder="0"
title={title}
className="rounded"
/>
</div>
);
};
+16
View File
@@ -5,6 +5,7 @@ import { ActivityFeed } from '@/components/ActivityFeed'
import { BalanceSheetChart } from '@/components/BalanceSheetChart' import { BalanceSheetChart } from '@/components/BalanceSheetChart'
import { AccountDetailModal } from '@/components/AccountDetailModal' import { AccountDetailModal } from '@/components/AccountDetailModal'
import { ExportButtons } from '@/components/ExportButtons' import { ExportButtons } from '@/components/ExportButtons'
import { GrafanaPanel } from '@/components/GrafanaPanel'
import { Card, CardHeader } from '@/components/ui/Card' import { Card, CardHeader } from '@/components/ui/Card'
import { Skeleton } from '@/components/ui/Skeleton' import { Skeleton } from '@/components/ui/Skeleton'
import { import {
@@ -234,6 +235,21 @@ export function DashboardPage() {
<BalanceSheetChart data={balanceSheetData} /> <BalanceSheetChart data={balanceSheetData} />
)} )}
{/* Grafana Panels */}
<div className="mt-8">
<h2 className="text-lg font-semibold mb-4">System Health</h2>
<GrafanaPanel
src="http://localhost:3050/d-solo/aamos-system/aamos-system-health?orgId=1&panelId=1&refresh=5s"
title="CPU Usage"
height={200}
/>
<GrafanaPanel
src="http://localhost:3050/d-solo/aamos-system/aamos-system-health?orgId=1&panelId=2&refresh=5s"
title="Memory Usage"
height={200}
/>
</div>
{/* Revenue Chart + Activity */} {/* Revenue Chart + Activity */}
<div className="grid grid-cols-1 xl:grid-cols-3 gap-6"> <div className="grid grid-cols-1 xl:grid-cols-3 gap-6">
<div className="xl:col-span-2"> <div className="xl:col-span-2">