From 06602ee7fbcbb43c078d8ebb0029399c79424307 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 27 四月 2026 18:15:03 +0800
Subject: [PATCH] fix: audit auto tune agent runs

---
 src/test/java/com/zy/ai/service/AutoTuneCoordinatorServiceImplTest.java |   24 +++++++++++++++++++++++-
 1 files changed, 23 insertions(+), 1 deletions(-)

diff --git a/src/test/java/com/zy/ai/service/AutoTuneCoordinatorServiceImplTest.java b/src/test/java/com/zy/ai/service/AutoTuneCoordinatorServiceImplTest.java
index 95977a7..d066a5e 100644
--- a/src/test/java/com/zy/ai/service/AutoTuneCoordinatorServiceImplTest.java
+++ b/src/test/java/com/zy/ai/service/AutoTuneCoordinatorServiceImplTest.java
@@ -6,12 +6,14 @@
 import com.zy.ai.domain.autotune.AutoTuneApplyResult;
 import com.zy.ai.domain.autotune.AutoTuneChangeCommand;
 import com.zy.ai.domain.autotune.AutoTuneSnapshot;
+import com.zy.ai.domain.autotune.AutoTuneJobStatus;
 import com.zy.ai.domain.autotune.AutoTuneTriggerType;
 import com.zy.ai.entity.AiAutoTuneChange;
 import com.zy.ai.entity.AiAutoTuneJob;
 import com.zy.ai.entity.AiPromptTemplate;
 import com.zy.ai.entity.ChatCompletionRequest;
 import com.zy.ai.entity.ChatCompletionResponse;
+import com.zy.ai.enums.AiPromptScene;
 import com.zy.ai.mcp.service.SpringAiMcpToolManager;
 import com.zy.ai.mcp.tool.AutoTuneMcpTools;
 import com.zy.ai.service.impl.AutoTuneAgentServiceImpl;
@@ -426,6 +428,8 @@
     void manualTriggerRunsAgentWithRunningLockAndDoesNotWriteSchedulerGuard() {
         AutoTuneAgentService.AutoTuneAgentResult agentResult = successfulAgentResult();
         agentResult.setTriggerType(AutoTuneTriggerType.MANUAL.getCode());
+        when(configService.getConfigValue("aiAutoTuneIntervalMinutes", "10")).thenReturn("10");
+        when(wrkMastService.count(any(Wrapper.class))).thenReturn(1L);
         when(redisUtil.trySetStringIfAbsent(anyString(), anyString(), anyLong())).thenReturn(true);
         when(autoTuneAgentService.runAutoTune(AutoTuneTriggerType.MANUAL.getCode())).thenReturn(agentResult);
 
@@ -435,13 +439,31 @@
         assertTrue(result.getTriggered());
         assertSame(agentResult, result.getAgentResult());
         verify(autoTuneAgentService).runAutoTune(AutoTuneTriggerType.MANUAL.getCode());
-        verify(wrkMastService, never()).count(any(Wrapper.class));
         verify(redisUtil, never()).set(eq(RedisKeyType.AI_AUTO_TUNE_LAST_TRIGGER_GUARD.key), any(), anyLong());
         verify(redisUtil).compareAndDelete(anyString(), anyString());
 
         ArgumentCaptor<OperateLog> operateLogCaptor = ArgumentCaptor.forClass(OperateLog.class);
         verify(operateLogService).save(operateLogCaptor.capture());
         assertEquals("ai_auto_tune_manual_trigger", operateLogCaptor.getValue().getAction());
+
+        ArgumentCaptor<AiAutoTuneJob> jobCaptor = ArgumentCaptor.forClass(AiAutoTuneJob.class);
+        verify(aiAutoTuneJobService).save(jobCaptor.capture());
+        AiAutoTuneJob auditJob = jobCaptor.getValue();
+        assertEquals(AutoTuneTriggerType.MANUAL.getCode(), auditJob.getTriggerType());
+        assertEquals(AutoTuneJobStatus.SUCCESS.getCode(), auditJob.getStatus());
+        assertNotNull(auditJob.getStartTime());
+        assertNotNull(auditJob.getFinishTime());
+        assertEquals(1, auditJob.getHasActiveTasks());
+        assertEquals(AiPromptScene.AUTO_TUNE_DISPATCH.getCode(), auditJob.getPromptSceneCode());
+        assertEquals("no changes needed", auditJob.getSummary());
+        assertEquals(10, auditJob.getIntervalBefore());
+        assertEquals(10, auditJob.getIntervalAfter());
+        assertEquals(0, auditJob.getSuccessCount());
+        assertEquals(0, auditJob.getRejectCount());
+        assertEquals(1, auditJob.getLlmCallCount());
+        assertEquals(10, auditJob.getPromptTokens());
+        assertEquals(5, auditJob.getCompletionTokens());
+        assertEquals(15, auditJob.getTotalTokens());
     }
 
     @Test

--
Gitblit v1.9.1