From dc3f9cc91759823ce59486f19b138be4b296a0f1 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 28 四月 2026 09:43:28 +0800
Subject: [PATCH] #

---
 src/test/java/com/zy/ai/service/impl/AutoTuneSnapshotServiceImplTest.java |   49 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 49 insertions(+), 0 deletions(-)

diff --git a/src/test/java/com/zy/ai/service/impl/AutoTuneSnapshotServiceImplTest.java b/src/test/java/com/zy/ai/service/impl/AutoTuneSnapshotServiceImplTest.java
index 6619623..52fab9a 100644
--- a/src/test/java/com/zy/ai/service/impl/AutoTuneSnapshotServiceImplTest.java
+++ b/src/test/java/com/zy/ai/service/impl/AutoTuneSnapshotServiceImplTest.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.zy.ai.domain.autotune.AutoTuneRuleSnapshotItem;
 import com.zy.asrs.entity.BasDevp;
 import com.zy.asrs.entity.BasStation;
 import com.zy.asrs.entity.WrkMast;
@@ -16,6 +17,7 @@
 
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.List;
 import java.util.Map;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -62,6 +64,34 @@
         assertNull(result.get("101"));
         assertEquals(0, result.get("102"));
         assertEquals(3, result.get("103"));
+    }
+
+    @Test
+    void buildRuleSnapshotExposesStepRangeCooldownAndDynamicMaxSource() {
+        List<AutoTuneRuleSnapshotItem> result = service.buildRuleSnapshot();
+
+        AutoTuneRuleSnapshotItem stationOutTaskRule = findRule(result, "station", "outTaskLimit");
+        assertEquals(0, stationOutTaskRule.getMinValue());
+        assertNull(stationOutTaskRule.getMaxValue());
+        assertEquals(3, stationOutTaskRule.getMaxStep());
+        assertEquals(10, stationOutTaskRule.getCooldownMinutes());
+        assertEquals(Boolean.TRUE, stationOutTaskRule.getDynamicMaxValue());
+        assertEquals("currentParameterSnapshot.stationOutBufferCapacities[targetId]",
+                stationOutTaskRule.getDynamicMaxSource());
+        assertEquals("鍗曟璋冩暣骞呭害涓嶈兘瓒呰繃 maxStep锛涘澶ф椂涓嶅緱瓒呰繃瀵瑰簲绔欑偣 outBufferCapacity銆�",
+                stationOutTaskRule.getNote());
+
+        AutoTuneRuleSnapshotItem crnMaxOutRule = findRule(result, "crn", "maxOutTask");
+        assertEquals(3, crnMaxOutRule.getMaxStep());
+        assertNull(crnMaxOutRule.getDynamicMaxSource());
+        assertEquals("鍗曟璋冩暣骞呭害涓嶈兘瓒呰繃 maxStep銆�", crnMaxOutRule.getNote());
+
+        AutoTuneRuleSnapshotItem crnMaxInRule = findRule(result, "crn", "maxInTask");
+        assertEquals(3, crnMaxInRule.getMaxStep());
+
+        assertRuleMaxStep(result, "sys_config", "crnOutBatchRunningLimit", 3);
+        assertRuleMaxStep(result, "dual_crn", "maxOutTask", 3);
+        assertRuleMaxStep(result, "dual_crn", "maxInTask", 3);
     }
 
     @Test
@@ -154,4 +184,23 @@
         stationObjModel.setStationId(stationId);
         return stationObjModel;
     }
+
+    private AutoTuneRuleSnapshotItem findRule(List<AutoTuneRuleSnapshotItem> rules,
+                                              String targetType,
+                                              String targetKey) {
+        for (AutoTuneRuleSnapshotItem rule : rules) {
+            if (targetType.equals(rule.getTargetType()) && targetKey.equals(rule.getTargetKey())) {
+                return rule;
+            }
+        }
+        throw new AssertionError("rule not found: " + targetType + "/" + targetKey);
+    }
+
+    private void assertRuleMaxStep(List<AutoTuneRuleSnapshotItem> rules,
+                                   String targetType,
+                                   String targetKey,
+                                   int expectedMaxStep) {
+        AutoTuneRuleSnapshotItem rule = findRule(rules, targetType, targetKey);
+        assertEquals(expectedMaxStep, rule.getMaxStep());
+    }
 }

--
Gitblit v1.9.1