From 47033f14ab5002f1b00bdcab2592d8d8737e45c5 Mon Sep 17 00:00:00 2001 From: oliver Date: Wed, 13 May 2026 17:28:52 +0800 Subject: [PATCH] fix(netx): order current alarms by time_created desc Sort UME current alarms by time_created descending (newest first) with last_seen_at and alarm_key as tie-breakers to keep offset/limit pagination stable. Apply the same default ordering in the MCP tool listing. Co-authored-by: Cursor --- netx_api/main.py | 11 ++++++++++- netx_api/mcp_server.py | 11 ++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/netx_api/main.py b/netx_api/main.py index 3ad4919..bea6bd9 100644 --- a/netx_api/main.py +++ b/netx_api/main.py @@ -1069,7 +1069,16 @@ def ume_list_alarms( | UmeInventoryNE.host_name.contains(kw) ) total = int(stmt.count()) - rows = stmt.order_by(UmeAlarmCurrent.last_seen_at.desc()).offset((page - 1) * page_size).limit(page_size).all() + rows = ( + stmt.order_by( + UmeAlarmCurrent.time_created.desc(), + UmeAlarmCurrent.last_seen_at.desc(), + UmeAlarmCurrent.alarm_key.desc(), + ) + .offset((page - 1) * page_size) + .limit(page_size) + .all() + ) items = [ { "alarm_key": str(alarm.alarm_key or ""), diff --git a/netx_api/mcp_server.py b/netx_api/mcp_server.py index 17d570c..b81d231 100644 --- a/netx_api/mcp_server.py +++ b/netx_api/mcp_server.py @@ -370,7 +370,16 @@ def _call_tool(name: str, args: dict[str, Any]) -> dict[str, Any]: page = max(1, int(args.get("page") or 1)) page_size = min(500, max(1, int(args.get("page_size") or 50))) total = int(stmt.count()) - rows = stmt.order_by(UmeAlarmCurrent.last_seen_at.desc()).offset((page - 1) * page_size).limit(page_size).all() + rows = ( + stmt.order_by( + UmeAlarmCurrent.time_created.desc(), + UmeAlarmCurrent.last_seen_at.desc(), + UmeAlarmCurrent.alarm_key.desc(), + ) + .offset((page - 1) * page_size) + .limit(page_size) + .all() + ) payload = { "total": total, "page": page,