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,