From 885811a6911ca97b50750233bff239f9a2b97239 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=AD=90=E9=BB=98?= <925456043@qq.com> Date: Wed, 26 Aug 2026 18:12:56 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=81=BF=E5=85=8D=E7=A9=BA=E5=BC=95?= =?UTF-8?q?=E7=94=A8=E9=9B=86=E5=90=88=E8=A7=A6=E5=8F=91=E6=97=A0=E6=95=88?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Agent 与 Skill 引用查询在空 ID 集合时直接返回 - 补充不调用 listByIds 的回归测试 --- .../impl/AgentSkillReferenceProvider.java | 3 +++ .../impl/AgentSkillReferenceProviderTest.java | 16 ++++++++++++++++ .../impl/SkillToolReferenceProviderImpl.java | 3 +++ .../impl/SkillToolReferenceProviderImplTest.java | 1 + 4 files changed, 23 insertions(+) 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()); } /**