This is an automated email from the ASF dual-hosted git repository.

zqr10159 pushed a commit to branch 2.0.0
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git

commit 66ae2f6c88335c3759bb7bbdc4465dd8ebeac0ce
Author: Logic <[email protected]>
AuthorDate: Fri May 29 09:46:56 2026 +0800

    fix(ai): align tools with backend API changes
    
    Validation:
    
    - ./mvnw -pl hertzbeat-ai -Dcheckstyle.skip=true -DskipITs -Dskip.frontend 
-Dskip.npm -DskipDocker -DskipTests clean compile
    
    - git diff --cached --check
    
    - cached trailing-whitespace scan
---
 .../hertzbeat/ai/tools/impl/AlertToolsImpl.java    | 26 +++++++++++-----------
 .../hertzbeat/ai/tools/impl/MonitorToolsImpl.java  | 10 +++++----
 2 files changed, 19 insertions(+), 17 deletions(-)

diff --git 
a/hertzbeat-ai/src/main/java/org/apache/hertzbeat/ai/tools/impl/AlertToolsImpl.java
 
b/hertzbeat-ai/src/main/java/org/apache/hertzbeat/ai/tools/impl/AlertToolsImpl.java
index 2e8df751c2..4b461b0888 100644
--- 
a/hertzbeat-ai/src/main/java/org/apache/hertzbeat/ai/tools/impl/AlertToolsImpl.java
+++ 
b/hertzbeat-ai/src/main/java/org/apache/hertzbeat/ai/tools/impl/AlertToolsImpl.java
@@ -44,26 +44,26 @@ public class AlertToolsImpl implements AlertTools {
     @Override
     @Tool(name = "query_alerts", description = """
             HertzBeat: Query alerts with comprehensive filtering and 
pagination options.
-            
+
             ALERT TYPES:
             - Pass alertType='single' for individual alert instances
             - Pass alertType='group' for grouped/aggregated alerts
             - Pass alertType='both' to get both types (separate sections)
-            
+
             STATUS FILTERING:
             - 'firing': Currently active alerts requiring attention
             - 'resolved': Previously active alerts that have been cleared
             - 'all': Both firing and resolved alerts (default)
-            
+
             SEARCH & FILTERING:
             - search: Search in alert content, labels, or descriptions
             - sort: Order by 'startAt' (trigger time), 'triggerTimes' 
(frequency), 'status'
             - order: 'asc' (oldest first) or 'desc' (newest first, default)
-            
+
             PAGINATION:
             - pageIndex: Page number starting from 0
             - pageSize: Number of alerts per page (default: 10, max 
recommended: 50)
-            
+
             EXAMPLE AND COMMON USE CASES:
             - Recent active alerts: alertType='single', status='firing', 
sort='startAt', order='desc'
             - Historical analysis: alertType='single', status='resolved', 
pageSize=50
@@ -115,7 +115,7 @@ public class AlertToolsImpl implements AlertTools {
             // Handle different alert types
             if ("single".equalsIgnoreCase(alertType) || 
"both".equalsIgnoreCase(alertType)) {
                 Page<SingleAlert> singleResult = 
alertService.getSingleAlerts(status, search, sort, order, pageIndex, pageSize);
-                
+
                 response.append("SINGLE ALERTS:\n");
                 response.append("Found 
").append(singleResult.getContent().size()).append(" single alerts (Total: 
").append(singleResult.getTotalElements()).append("):\n\n");
 
@@ -124,7 +124,7 @@ public class AlertToolsImpl implements AlertTools {
                     response.append("Status: 
").append(alert.getStatus()).append("\n");
                     response.append("Content: ").append(alert.getContent() != 
null ? alert.getContent() : "No content").append("\n");
                     response.append("Trigger Times: 
").append(alert.getTriggerTimes()).append("\n");
-                    
+
                     if (alert.getStartAt() != null) {
                         response.append("Started At: 
").append(UtilityClass.formatTimestamp(alert.getStartAt())).append("\n");
                     }
@@ -134,7 +134,7 @@ public class AlertToolsImpl implements AlertTools {
                     if (alert.getEndAt() != null) {
                         response.append("Ended At: 
").append(UtilityClass.formatTimestamp(alert.getEndAt())).append("\n");
                     }
-                    
+
                     if (alert.getLabels() != null && 
!alert.getLabels().isEmpty()) {
                         response.append("Labels: 
").append(alert.getLabels()).append("\n");
                     }
@@ -151,9 +151,9 @@ public class AlertToolsImpl implements AlertTools {
                 if ("both".equalsIgnoreCase(alertType)) {
                     response.append("\n");
                 }
-                
-                Page<GroupAlert> groupResult = 
alertService.getGroupAlerts(status, search, sort, order, pageIndex, pageSize);
-                
+
+                Page<GroupAlert> groupResult = 
alertService.getGroupAlerts(status, search, null, sort, order, pageIndex, 
pageSize);
+
                 response.append("GROUP ALERTS:\n");
                 response.append("Found 
").append(groupResult.getContent().size()).append(" group alerts (Total: 
").append(groupResult.getTotalElements()).append("):\n\n");
 
@@ -161,14 +161,14 @@ public class AlertToolsImpl implements AlertTools {
                     response.append("Group Alert ID: 
").append(alert.getId()).append("\n");
                     response.append("Status: 
").append(alert.getStatus()).append("\n");
                     response.append("Group Key: ").append(alert.getGroupKey() 
!= null ? alert.getGroupKey() : "No group key").append("\n");
-                    
+
                     if (alert.getGmtCreate() != null) {
                         response.append("Created At: 
").append(alert.getGmtCreate()).append("\n");
                     }
                     if (alert.getGmtUpdate() != null) {
                         response.append("Updated At: 
").append(alert.getGmtUpdate()).append("\n");
                     }
-                    
+
                     if (alert.getCommonLabels() != null && 
!alert.getCommonLabels().isEmpty()) {
                         response.append("Common Labels: 
").append(alert.getCommonLabels()).append("\n");
                     }
diff --git 
a/hertzbeat-ai/src/main/java/org/apache/hertzbeat/ai/tools/impl/MonitorToolsImpl.java
 
b/hertzbeat-ai/src/main/java/org/apache/hertzbeat/ai/tools/impl/MonitorToolsImpl.java
index 7495cf83eb..b89eaf11d4 100644
--- 
a/hertzbeat-ai/src/main/java/org/apache/hertzbeat/ai/tools/impl/MonitorToolsImpl.java
+++ 
b/hertzbeat-ai/src/main/java/org/apache/hertzbeat/ai/tools/impl/MonitorToolsImpl.java
@@ -32,7 +32,7 @@ import org.springframework.ai.tool.annotation.ToolParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.apache.hertzbeat.common.entity.manager.Monitor;
 import org.apache.hertzbeat.common.entity.manager.Param;
-import org.apache.hertzbeat.common.entity.manager.ParamDefine;
+import org.apache.hertzbeat.manager.pojo.dto.ParamDefineInfo;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -280,7 +280,9 @@ public class MonitorToolsImpl implements MonitorTools {
 
             // Validate that all required parameters for this monitor type are 
provided
             try {
-                MonitorDto monitorDto = 
MonitorDto.builder().monitor(monitor).params(paramList).build();
+                MonitorDto monitorDto = new MonitorDto();
+                monitorDto.setMonitor(monitor);
+                monitorDto.setParams(paramList);
                 monitorService.validate(monitorDto, false);
             } catch (IllegalArgumentException argumentException) {
                 if (argumentException.getMessage().contains("required")) {
@@ -456,7 +458,7 @@ public class MonitorToolsImpl implements MonitorTools {
             }
 
             // Get parameter definitions from app service
-            List<ParamDefine> paramDefines = 
appService.getAppParamDefines(app.toLowerCase().trim());
+            List<ParamDefineInfo> paramDefines = 
appService.getAppParamDefines(app.toLowerCase().trim());
 
             if (paramDefines == null || paramDefines.isEmpty()) {
                 return String.format("No parameter definitions found for 
monitor type '%s'. "
@@ -468,7 +470,7 @@ public class MonitorToolsImpl implements MonitorTools {
             response.append(String.format("Parameter Definitions for Monitor 
Type '%s' (Total: %d):\n\n",
                 app, paramDefines.size()));
 
-            for (ParamDefine paramDefine : paramDefines) {
+            for (ParamDefineInfo paramDefine : paramDefines) {
                 response.append("• Field: 
").append(paramDefine.getField()).append("\n");
 
                 // Add display name if available


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to