From fc48795299162f10b72c170f15324c199d5f674b Mon Sep 17 00:00:00 2001 From: "2569718930@qq.com" <2569718930@qq.com> Date: Thu, 14 May 2026 00:18:26 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=91=E6=8E=A7=E9=A1=B5=E4=BB=8E=20iframe?= =?UTF-8?q?=20=E6=94=B9=E4=B8=BA=E5=8E=9F=E7=94=9F=20React=20=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=EF=BC=9A=E6=97=A0=E5=8A=A0=E8=BD=BD=E5=BB=B6=E8=BF=9F?= =?UTF-8?q?=EF=BC=8C30s=20JSON=20=E8=BD=AE=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/app/api/m/route.ts | 6 +- .../dashboard/ScanTerminalDashboard.tsx | 11 +- .../dashboard/monitoring/MonitorPanel.tsx | 188 ++++++++++++++++++ web/monitor_routes.py | 12 ++ 4 files changed, 209 insertions(+), 8 deletions(-) create mode 100644 frontend/components/dashboard/monitoring/MonitorPanel.tsx diff --git a/frontend/app/api/m/route.ts b/frontend/app/api/m/route.ts index 41f78fc5..6e7eb4eb 100644 --- a/frontend/app/api/m/route.ts +++ b/frontend/app/api/m/route.ts @@ -8,9 +8,13 @@ export async function GET(req: NextRequest) { return new NextResponse("API not configured", { status: 500 }); } const isCards = req.nextUrl.searchParams.get("cards") === "1"; - const path = isCards ? "/m/cards" : "/m"; + const asJson = req.nextUrl.searchParams.get("json") === "1"; + const path = asJson ? "/m/json" : isCards ? "/m/cards" : "/m"; const auth = await buildBackendRequestHeaders(req, { includeSupabaseIdentity: false }); const res = await fetch(`${API_BASE}${path}`, { headers: auth.headers }); + if (asJson) { + return NextResponse.json(await res.json()); + } const html = await res.text(); return new NextResponse(html, { status: res.status, diff --git a/frontend/components/dashboard/ScanTerminalDashboard.tsx b/frontend/components/dashboard/ScanTerminalDashboard.tsx index db106fe6..3c759ffa 100644 --- a/frontend/components/dashboard/ScanTerminalDashboard.tsx +++ b/frontend/components/dashboard/ScanTerminalDashboard.tsx @@ -46,6 +46,7 @@ import { useScanTerminalTheme, useUserLocalClock, } from "@/components/dashboard/scan-terminal/use-scan-terminal-ui-state"; +import MonitorPanel from "@/components/dashboard/monitoring/MonitorPanel"; type ContentView = "analysis" | "map" | "monitor"; @@ -597,13 +598,9 @@ function ScanTerminalScreen() { ) : ( renderMainView() )} -
-