From edad7b24fad85d98f9ab632ed6263a927a56b6b3 Mon Sep 17 00:00:00 2001 From: oliver Date: Mon, 11 May 2026 19:11:55 +0800 Subject: [PATCH] UME current alarms: filter by host_name instead of ne_id in UI GET /v1/ume/alarms accepts host_name (contains on inventory); ne_id query kept for API clients. Web uses host_name field and link on host column. Co-authored-by: Cursor --- netx_api/main.py | 4 ++++ web/src/pages/UmePage.tsx | 44 +++++++++++++++++++++++---------------- web/src/services/api.ts | 4 ++-- 3 files changed, 32 insertions(+), 20 deletions(-) diff --git a/netx_api/main.py b/netx_api/main.py index 6859222..546d370 100644 --- a/netx_api/main.py +++ b/netx_api/main.py @@ -653,6 +653,7 @@ def ume_list_alarms( severity: str | None = Query(default=None), is_cleared: str | None = Query(default=None), ne_id: str | None = Query(default=None), + host_name: str | None = Query(default=None), keyword: str | None = Query(default=None), page: int = Query(default=1, ge=1), page_size: int = Query(default=50, ge=1, le=500), @@ -667,6 +668,9 @@ def ume_list_alarms( stmt = stmt.filter(UmeAlarmCurrent.is_cleared == str(is_cleared).strip()) if ne_id and str(ne_id).strip(): stmt = stmt.filter(UmeAlarmCurrent.ne_id == str(ne_id).strip()) + hn = str(host_name or "").strip() + if hn: + stmt = stmt.filter(UmeInventoryNE.host_name.contains(hn)) kw = str(keyword or "").strip() if kw: stmt = stmt.filter( diff --git a/web/src/pages/UmePage.tsx b/web/src/pages/UmePage.tsx index 0ecdac5..89328bc 100644 --- a/web/src/pages/UmePage.tsx +++ b/web/src/pages/UmePage.tsx @@ -23,7 +23,7 @@ export function UmePage() { const [curSeverity, setCurSeverity] = useState(""); const [curCleared, setCurCleared] = useState(""); - const [curNeId, setCurNeId] = useState(""); + const [curHostName, setCurHostName] = useState(""); const [curKeyword, setCurKeyword] = useState(""); const [curPage, setCurPage] = useState(1); const [curPageSize, setCurPageSize] = useState(50); @@ -92,12 +92,12 @@ export function UmePage() { staleTime: 5000, }); const currentQuery = useQuery({ - queryKey: ["umeCurrentAlarms", curSeverity, curCleared, curNeId, curKeyword, curPage, curPageSize], + queryKey: ["umeCurrentAlarms", curSeverity, curCleared, curHostName, curKeyword, curPage, curPageSize], queryFn: () => fetchUmeCurrentAlarms({ severity: curSeverity, isCleared: curCleared, - neId: curNeId, + hostName: curHostName, keyword: curKeyword, page: curPage, pageSize: curPageSize, @@ -419,7 +419,7 @@ export function UmePage() { placeholder="keyword(告警键/原因/ne_name/host_name/ip 等)" onChange={(e) => setCurKeyword(e.target.value)} /> - setCurNeId(e.target.value)} /> + setCurHostName(e.target.value)} /> @@ -464,19 +464,27 @@ export function UmePage() { {x.time_created} {x.perceived_severity} + {x.ne_id} - + {(x.host_name || "").trim() ? ( + + ) : ( + + - + + )} - {x.host_name ?? ""} {x.ne_type ?? ""} {x.native_probable_cause} diff --git a/web/src/services/api.ts b/web/src/services/api.ts index d63dcaa..673ccc1 100644 --- a/web/src/services/api.ts +++ b/web/src/services/api.ts @@ -121,7 +121,7 @@ export const fetchUmeNe = (params: { keyword: string; page: number; pageSize: nu export const fetchUmeCurrentAlarms = (params: { severity: string; isCleared: string; - neId: string; + hostName: string; keyword: string; page: number; pageSize: number; @@ -129,7 +129,7 @@ export const fetchUmeCurrentAlarms = (params: { const p = new URLSearchParams(); if (params.severity) p.set("severity", params.severity); if (params.isCleared) p.set("is_cleared", params.isCleared); - if (params.neId) p.set("ne_id", params.neId); + if (params.hostName) p.set("host_name", params.hostName); if (params.keyword) p.set("keyword", params.keyword); p.set("page", String(Math.max(1, Number(params.page || 1)))); p.set("page_size", String(Math.max(1, Math.min(500, Number(params.pageSize || 50)))));