From ffbf67765d2ae447d62333eed85100a15685d781 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期四, 19 三月 2026 12:27:59 +0800
Subject: [PATCH] #AI.内置工具治理

---
 rsf-server/src/main/java/com/vincent/rsf/server/ai/tool/RsfWmsTaskTools.java |   39 +++++++++++++++++++--------------------
 1 files changed, 19 insertions(+), 20 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/ai/tool/RsfWmsTaskTools.java b/rsf-server/src/main/java/com/vincent/rsf/server/ai/tool/RsfWmsTaskTools.java
index ba6d622..0aecbf7 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/ai/tool/RsfWmsTaskTools.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/ai/tool/RsfWmsTaskTools.java
@@ -21,7 +21,7 @@
 
     private final TaskService taskService;
 
-    @Tool(name = "rsf_query_task_list", description = "鎸変换鍔″彿銆佺姸鎬併�佷换鍔$被鍨嬨�佹簮绔欑偣銆佺洰鏍囩珯鐐圭瓑鏉′欢鏌ヨ浠诲姟鍒楄〃銆�")
+    @Tool(name = "rsf_query_task_list", description = "鍙鏌ヨ宸ュ叿銆傛寜浠诲姟鍙枫�佺姸鎬併�佷换鍔$被鍨嬨�佹簮绔欑偣銆佺洰鏍囩珯鐐圭瓑鏉′欢鏌ヨ浠诲姟鍒楄〃銆�")
     public List<Map<String, Object>> queryTaskList(
             @ToolParam(description = "浠诲姟鍙凤紝鍙ā绯婃煡璇�") String taskCode,
             @ToolParam(description = "浠诲姟鐘舵�侊紝鍙��") Integer taskStatus,
@@ -29,10 +29,17 @@
             @ToolParam(description = "婧愮珯鐐癸紝鍙��") String orgSite,
             @ToolParam(description = "鐩爣绔欑偣锛屽彲閫�") String targSite,
             @ToolParam(description = "杩斿洖鏉℃暟锛岄粯璁� 10锛屾渶澶� 50") Integer limit) {
+        String normalizedTaskCode = BuiltinToolGovernanceSupport.sanitizeQueryText(taskCode, "浠诲姟鍙�", 64);
+        String normalizedOrgSite = BuiltinToolGovernanceSupport.sanitizeQueryText(orgSite, "婧愮珯鐐�", 64);
+        String normalizedTargSite = BuiltinToolGovernanceSupport.sanitizeQueryText(targSite, "鐩爣绔欑偣", 64);
+        BuiltinToolGovernanceSupport.requireAnyFilter("浠诲姟鍒楄〃鏌ヨ鑷冲皯闇�瑕佹彁渚涗竴涓繃婊ゆ潯浠�",
+                normalizedTaskCode, normalizedOrgSite, normalizedTargSite,
+                taskStatus == null ? null : String.valueOf(taskStatus),
+                taskType == null ? null : String.valueOf(taskType));
         LambdaQueryWrapper<Task> queryWrapper = new LambdaQueryWrapper<>();
-        int finalLimit = normalizeLimit(limit, 10, 50);
-        if (StringUtils.hasText(taskCode)) {
-            queryWrapper.like(Task::getTaskCode, taskCode);
+        int finalLimit = BuiltinToolGovernanceSupport.normalizeLimit(limit, 10, 50);
+        if (StringUtils.hasText(normalizedTaskCode)) {
+            queryWrapper.like(Task::getTaskCode, normalizedTaskCode);
         }
         if (taskStatus != null) {
             queryWrapper.eq(Task::getTaskStatus, taskStatus);
@@ -40,11 +47,11 @@
         if (taskType != null) {
             queryWrapper.eq(Task::getTaskType, taskType);
         }
-        if (StringUtils.hasText(orgSite)) {
-            queryWrapper.eq(Task::getOrgSite, orgSite);
+        if (StringUtils.hasText(normalizedOrgSite)) {
+            queryWrapper.eq(Task::getOrgSite, normalizedOrgSite);
         }
-        if (StringUtils.hasText(targSite)) {
-            queryWrapper.eq(Task::getTargSite, targSite);
+        if (StringUtils.hasText(normalizedTargSite)) {
+            queryWrapper.eq(Task::getTargSite, normalizedTargSite);
         }
         queryWrapper.orderByDesc(Task::getCreateTime).last("LIMIT " + finalLimit);
         List<Task> tasks = taskService.list(queryWrapper);
@@ -55,18 +62,19 @@
         return result;
     }
 
-    @Tool(name = "rsf_query_task_detail", description = "鏍规嵁浠诲姟 ID 鎴栦换鍔″彿鏌ヨ浠诲姟璇︽儏銆�")
+    @Tool(name = "rsf_query_task_detail", description = "鍙鏌ヨ宸ュ叿銆傛牴鎹换鍔� ID 鎴栦换鍔″彿鏌ヨ浠诲姟璇︽儏銆�")
     public Map<String, Object> queryTaskDetail(
             @ToolParam(description = "浠诲姟 ID") Long taskId,
             @ToolParam(description = "浠诲姟鍙�") String taskCode) {
-        if (taskId == null && !StringUtils.hasText(taskCode)) {
+        String normalizedTaskCode = BuiltinToolGovernanceSupport.sanitizeQueryText(taskCode, "浠诲姟鍙�", 64);
+        if (taskId == null && !StringUtils.hasText(normalizedTaskCode)) {
             throw new CoolException("浠诲姟 ID 鍜屼换鍔″彿鑷冲皯闇�瑕佹彁渚涗竴涓�");
         }
         Task task;
         if (taskId != null) {
             task = taskService.getById(taskId);
         } else {
-            task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskCode, taskCode));
+            task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskCode, normalizedTaskCode));
         }
         if (task == null) {
             throw new CoolException("鏈煡璇㈠埌浠诲姟");
@@ -111,13 +119,4 @@
         return item;
     }
 
-    private int normalizeLimit(Integer limit, int defaultValue, int maxValue) {
-        if (limit == null) {
-            return defaultValue;
-        }
-        if (limit < 1 || limit > maxValue) {
-            throw new CoolException("limit 蹇呴』鍦� 1 鍒� " + maxValue + " 涔嬮棿");
-        }
-        return limit;
-    }
 }

--
Gitblit v1.9.1