From 80a6d9236ade191a5de0975abe4de5a6e7e63915 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期四, 19 三月 2026 14:03:10 +0800
Subject: [PATCH] #AI.注释

---
 rsf-server/src/main/java/com/vincent/rsf/server/ai/tool/RsfWmsBaseTools.java |   80 +++++++++++++++++++++++----------------
 1 files changed, 47 insertions(+), 33 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/ai/tool/RsfWmsBaseTools.java b/rsf-server/src/main/java/com/vincent/rsf/server/ai/tool/RsfWmsBaseTools.java
index 0a8350d..1db90ba 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/ai/tool/RsfWmsBaseTools.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/ai/tool/RsfWmsBaseTools.java
@@ -27,18 +27,25 @@
     private final BasStationService basStationService;
     private final DictDataService dictDataService;
 
-    @Tool(name = "rsf_query_warehouses", description = "鎸変粨搴撶紪鐮佹垨鍚嶇О鏌ヨ浠撳簱鍩虹淇℃伅銆�")
+    /**
+     * 鏌ヨ浠撳簱鍩虹淇℃伅銆�
+     * 璇ュ伐鍏烽潰鍚戔�滄寜缂栫爜/鍚嶇О瀹氫綅浠撳簱鈥濈殑闂瓟鍦烘櫙锛屼笉璐熻矗鎻愪緵鍏ㄩ噺浠撳簱涓绘暟鎹鍑鸿兘鍔涖��
+     */
+    @Tool(name = "rsf_query_warehouses", description = "鍙鏌ヨ宸ュ叿銆傛寜浠撳簱缂栫爜鎴栧悕绉版煡璇粨搴撳熀纭�淇℃伅銆�")
     public List<Map<String, Object>> queryWarehouses(
             @ToolParam(description = "浠撳簱缂栫爜锛屽彲閫�") String code,
             @ToolParam(description = "浠撳簱鍚嶇О锛屽彲閫�") String name,
             @ToolParam(description = "杩斿洖鏉℃暟锛岄粯璁� 10锛屾渶澶� 50") Integer limit) {
+        String normalizedCode = BuiltinToolGovernanceSupport.sanitizeQueryText(code, "浠撳簱缂栫爜", 64);
+        String normalizedName = BuiltinToolGovernanceSupport.sanitizeQueryText(name, "浠撳簱鍚嶇О", 100);
+        BuiltinToolGovernanceSupport.requireAnyFilter("浠撳簱鏌ヨ鑷冲皯闇�瑕佹彁渚涗粨搴撶紪鐮佹垨鍚嶇О", normalizedCode, normalizedName);
         LambdaQueryWrapper<Warehouse> queryWrapper = new LambdaQueryWrapper<>();
-        int finalLimit = normalizeLimit(limit, 10, 50);
-        if (StringUtils.hasText(code)) {
-            queryWrapper.like(Warehouse::getCode, code);
+        int finalLimit = BuiltinToolGovernanceSupport.normalizeLimit(limit, 10, 50);
+        if (StringUtils.hasText(normalizedCode)) {
+            queryWrapper.like(Warehouse::getCode, normalizedCode);
         }
-        if (StringUtils.hasText(name)) {
-            queryWrapper.like(Warehouse::getName, name);
+        if (StringUtils.hasText(normalizedName)) {
+            queryWrapper.like(Warehouse::getName, normalizedName);
         }
         queryWrapper.orderByAsc(Warehouse::getCode).last("LIMIT " + finalLimit);
         List<Warehouse> warehouses = warehouseService.list(queryWrapper);
@@ -58,22 +65,31 @@
         return result;
     }
 
-    @Tool(name = "rsf_query_bas_stations", description = "鎸夌珯鐐圭紪鍙枫�佺珯鐐瑰悕绉版垨浣跨敤鐘舵�佹煡璇㈠熀纭�绔欑偣銆�")
+    /**
+     * 鏌ヨ鍩虹绔欑偣淇℃伅銆�
+     * 鏌ヨ鏉′欢鍏佽鎸夌珯鐐瑰悕绉般�佺紪鍙锋垨浣跨敤鐘舵�佺粍鍚堣繃婊わ紝杩斿洖鍊煎彧淇濈暀 AI 瀵硅瘽闇�瑕佺殑瀛楁銆�
+     */
+    @Tool(name = "rsf_query_bas_stations", description = "鍙鏌ヨ宸ュ叿銆傛寜绔欑偣缂栧彿銆佺珯鐐瑰悕绉版垨浣跨敤鐘舵�佹煡璇㈠熀纭�绔欑偣銆�")
     public List<Map<String, Object>> queryBasStations(
-            @ToolParam(description = "绔欑偣缂栧彿锛屽彲閫�") String stationName,
-            @ToolParam(description = "绔欑偣鍚嶇О锛屽彲閫�") String stationId,
+            @ToolParam(description = "绔欑偣鍚嶇О锛屽彲閫�") String stationName,
+            @ToolParam(description = "绔欑偣缂栧彿锛屽彲閫�") String stationId,
             @ToolParam(description = "浣跨敤鐘舵�侊紝鍙��") String useStatus,
             @ToolParam(description = "杩斿洖鏉℃暟锛岄粯璁� 10锛屾渶澶� 50") Integer limit) {
+        String normalizedStationName = BuiltinToolGovernanceSupport.sanitizeQueryText(stationName, "绔欑偣鍚嶇О", 100);
+        String normalizedStationId = BuiltinToolGovernanceSupport.sanitizeQueryText(stationId, "绔欑偣缂栧彿", 64);
+        String normalizedUseStatus = BuiltinToolGovernanceSupport.sanitizeQueryText(useStatus, "浣跨敤鐘舵��", 32);
+        BuiltinToolGovernanceSupport.requireAnyFilter("鍩虹绔欑偣鏌ヨ鑷冲皯闇�瑕佹彁渚涚珯鐐瑰悕绉般�佺珯鐐圭紪鍙锋垨浣跨敤鐘舵��",
+                normalizedStationName, normalizedStationId, normalizedUseStatus);
         LambdaQueryWrapper<BasStation> queryWrapper = new LambdaQueryWrapper<>();
-        int finalLimit = normalizeLimit(limit, 10, 50);
-        if (StringUtils.hasText(stationName)) {
-            queryWrapper.like(BasStation::getStationName, stationName);
+        int finalLimit = BuiltinToolGovernanceSupport.normalizeLimit(limit, 10, 50);
+        if (StringUtils.hasText(normalizedStationName)) {
+            queryWrapper.like(BasStation::getStationName, normalizedStationName);
         }
-        if (StringUtils.hasText(stationId)) {
-            queryWrapper.like(BasStation::getStationId, stationId);
+        if (StringUtils.hasText(normalizedStationId)) {
+            queryWrapper.like(BasStation::getStationId, normalizedStationId);
         }
-        if (StringUtils.hasText(useStatus)) {
-            queryWrapper.eq(BasStation::getUseStatus, useStatus);
+        if (StringUtils.hasText(normalizedUseStatus)) {
+            queryWrapper.eq(BasStation::getUseStatus, normalizedUseStatus);
         }
         queryWrapper.orderByAsc(BasStation::getStationName).last("LIMIT " + finalLimit);
         List<BasStation> stations = basStationService.list(queryWrapper);
@@ -98,23 +114,30 @@
         return result;
     }
 
-    @Tool(name = "rsf_query_dict_data", description = "鏍规嵁瀛楀吀绫诲瀷缂栫爜鏌ヨ瀛楀吀鏁版嵁锛屽彲鎸夊�兼垨鏍囩杩涗竴姝ヨ繃婊ゃ��")
+    /**
+     * 鏌ヨ瀛楀吀鏁版嵁銆�
+     * 瀛楀吀绫诲瀷缂栫爜鏄己鍒舵潯浠讹紝鐢ㄦ潵纭繚妯″瀷涓嶄細瓒婅繃涓氬姟杈圭晫鐩存帴閬嶅巻鏁村紶瀛楀吀琛ㄣ��
+     */
+    @Tool(name = "rsf_query_dict_data", description = "鍙鏌ヨ宸ュ叿銆傛牴鎹瓧鍏哥被鍨嬬紪鐮佹煡璇㈠瓧鍏告暟鎹紝鍙寜鍊兼垨鏍囩杩涗竴姝ヨ繃婊ゃ��")
     public List<Map<String, Object>> queryDictData(
             @ToolParam(required = true, description = "瀛楀吀绫诲瀷缂栫爜") String dictTypeCode,
             @ToolParam(description = "瀛楀吀鍊硷紝鍙��") String value,
             @ToolParam(description = "瀛楀吀鏍囩锛屽彲閫�") String label,
             @ToolParam(description = "杩斿洖鏉℃暟锛岄粯璁� 20锛屾渶澶� 100") Integer limit) {
-        if (!StringUtils.hasText(dictTypeCode)) {
+        String normalizedDictTypeCode = BuiltinToolGovernanceSupport.sanitizeQueryText(dictTypeCode, "瀛楀吀绫诲瀷缂栫爜", 64);
+        String normalizedValue = BuiltinToolGovernanceSupport.sanitizeQueryText(value, "瀛楀吀鍊�", 64);
+        String normalizedLabel = BuiltinToolGovernanceSupport.sanitizeQueryText(label, "瀛楀吀鏍囩", 100);
+        if (!StringUtils.hasText(normalizedDictTypeCode)) {
             throw new CoolException("瀛楀吀绫诲瀷缂栫爜涓嶈兘涓虹┖");
         }
-        int finalLimit = normalizeLimit(limit, 20, 100);
+        int finalLimit = BuiltinToolGovernanceSupport.normalizeLimit(limit, 20, 100);
         LambdaQueryWrapper<DictData> queryWrapper = new LambdaQueryWrapper<DictData>()
-                .eq(DictData::getDictTypeCode, dictTypeCode);
-        if (StringUtils.hasText(value)) {
-            queryWrapper.like(DictData::getValue, value);
+                .eq(DictData::getDictTypeCode, normalizedDictTypeCode);
+        if (StringUtils.hasText(normalizedValue)) {
+            queryWrapper.like(DictData::getValue, normalizedValue);
         }
-        if (StringUtils.hasText(label)) {
-            queryWrapper.like(DictData::getLabel, label);
+        if (StringUtils.hasText(normalizedLabel)) {
+            queryWrapper.like(DictData::getLabel, normalizedLabel);
         }
         queryWrapper.orderByAsc(DictData::getSort).last("LIMIT " + finalLimit);
         List<DictData> dictDataList = dictDataService.list(queryWrapper);
@@ -135,13 +158,4 @@
         return result;
     }
 
-    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