diff --git a/easyflow-modules/easyflow-module-agent/src/main/java/tech/easyflow/agent/service/impl/AgentSkillReferenceProvider.java b/easyflow-modules/easyflow-module-agent/src/main/java/tech/easyflow/agent/service/impl/AgentSkillReferenceProvider.java index 3aef7912..b630290b 100644 --- a/easyflow-modules/easyflow-module-agent/src/main/java/tech/easyflow/agent/service/impl/AgentSkillReferenceProvider.java +++ b/easyflow-modules/easyflow-module-agent/src/main/java/tech/easyflow/agent/service/impl/AgentSkillReferenceProvider.java @@ -51,6 +51,9 @@ public class AgentSkillReferenceProvider implements SkillReferenceProvider { ids.add(agent.getId()); } } + if (ids.isEmpty()) { + return List.of(); + } List result = new ArrayList<>(); for (Agent agent : agentService.listByIds(ids)) { result.add("智能体“" + (agent.getName() == null ? "未命名智能体" : agent.getName()) + "”"); diff --git a/easyflow-modules/easyflow-module-agent/src/test/java/tech/easyflow/agent/service/impl/AgentSkillReferenceProviderTest.java b/easyflow-modules/easyflow-module-agent/src/test/java/tech/easyflow/agent/service/impl/AgentSkillReferenceProviderTest.java index 9eae9d89..ac4964ca 100644 --- a/easyflow-modules/easyflow-module-agent/src/test/java/tech/easyflow/agent/service/impl/AgentSkillReferenceProviderTest.java +++ b/easyflow-modules/easyflow-module-agent/src/test/java/tech/easyflow/agent/service/impl/AgentSkillReferenceProviderTest.java @@ -50,6 +50,22 @@ public class AgentSkillReferenceProviderTest { "智能体“线上引用智能体”"), references); } + /** + * 没有 Agent 引用 Skill 时不应执行空主键集合查询。 + */ + @Test + public void shouldSkipEntityQueryWhenSkillHasNoReferences() { + AgentService agentService = Mockito.mock(AgentService.class); + AgentSkillBindingService bindingService = Mockito.mock(AgentSkillBindingService.class); + Mockito.when(bindingService.list(Mockito.any(QueryWrapper.class))).thenReturn(List.of()); + Mockito.when(agentService.list(Mockito.any(QueryWrapper.class))).thenReturn(List.of()); + AgentSkillReferenceProvider provider = new AgentSkillReferenceProvider( + agentService, bindingService); + + Assert.assertTrue(provider.listReferences(BigInteger.TEN).isEmpty()); + Mockito.verify(agentService, Mockito.never()).listByIds(Mockito.anyCollection()); + } + /** * 创建 Agent 摘要。 * diff --git a/easyflow-modules/easyflow-module-skill/src/main/java/tech/easyflow/skill/service/impl/SkillToolReferenceProviderImpl.java b/easyflow-modules/easyflow-module-skill/src/main/java/tech/easyflow/skill/service/impl/SkillToolReferenceProviderImpl.java index ec89b0a3..bc576215 100644 --- a/easyflow-modules/easyflow-module-skill/src/main/java/tech/easyflow/skill/service/impl/SkillToolReferenceProviderImpl.java +++ b/easyflow-modules/easyflow-module-skill/src/main/java/tech/easyflow/skill/service/impl/SkillToolReferenceProviderImpl.java @@ -69,6 +69,9 @@ public class SkillToolReferenceProviderImpl implements SkillToolReferenceProvide ids.add(skill.getId()); } } + if (ids.isEmpty()) { + return List.of(); + } List result = new ArrayList<>(); for (Skill skill : skillService.listByIds(ids)) { OfflineImpactBindingVo item = new OfflineImpactBindingVo(); diff --git a/easyflow-modules/easyflow-module-skill/src/test/java/tech/easyflow/skill/service/impl/SkillToolReferenceProviderImplTest.java b/easyflow-modules/easyflow-module-skill/src/test/java/tech/easyflow/skill/service/impl/SkillToolReferenceProviderImplTest.java index 1d2056ae..a11de125 100644 --- a/easyflow-modules/easyflow-module-skill/src/test/java/tech/easyflow/skill/service/impl/SkillToolReferenceProviderImplTest.java +++ b/easyflow-modules/easyflow-module-skill/src/test/java/tech/easyflow/skill/service/impl/SkillToolReferenceProviderImplTest.java @@ -73,6 +73,7 @@ public class SkillToolReferenceProviderImplTest { skillService, bindingService); Assert.assertTrue(provider.listSkillsByMcpId(BigInteger.TEN).isEmpty()); + Mockito.verify(skillService, Mockito.never()).listByIds(Mockito.anyCollection()); } /**