diff --git a/src/main/java/com/company/agentfoundation/assistant/api/AssistantApiController.java b/src/main/java/com/company/agentfoundation/assistant/api/AssistantApiController.java index 8a5a7c1..499a152 100644 --- a/src/main/java/com/company/agentfoundation/assistant/api/AssistantApiController.java +++ b/src/main/java/com/company/agentfoundation/assistant/api/AssistantApiController.java @@ -45,7 +45,7 @@ public class AssistantApiController { this.fileStore = fileStore; } - @PostMapping("/general/query") + @PostMapping({"/general/query", "/general/query/", "/general/query/general"}) public AssistantQueryResponse generalQuery(@RequestBody AssistantQueryRequest request) { String query = request == null ? "" : request.normalizedQuery(); if (query.isEmpty()) return AssistantQueryResponse.failure("query不能为空"); @@ -57,7 +57,11 @@ public class AssistantApiController { } } - @PostMapping("/sports-venue/query") + @PostMapping({ + "/sports-venue/query", + "/sports-venue/query/", + "/sports-venue/query/sports-venue" + }) public AssistantQueryResponse sportsVenueQuery( @RequestBody AssistantQueryRequest request, HttpServletRequest httpRequest diff --git a/src/test/java/com/company/agentfoundation/assistant/api/AssistantApiControllerTest.java b/src/test/java/com/company/agentfoundation/assistant/api/AssistantApiControllerTest.java index ec0c6d4..ece8ef4 100644 --- a/src/test/java/com/company/agentfoundation/assistant/api/AssistantApiControllerTest.java +++ b/src/test/java/com/company/agentfoundation/assistant/api/AssistantApiControllerTest.java @@ -92,6 +92,43 @@ class AssistantApiControllerTest { verify(semantic).dispatchWithAttachments("YiNianYiQingJing", "查看今日客资日报"); } + @Test + void sportsVenueApiSupportsWecomAppendedToolNamePath() throws Exception { + SemanticDispatchService semantic = mock(SemanticDispatchService.class); + when(semantic.dispatchWithAttachments("YiNianYiQingJing", "客资日报")) + .thenReturn(new SemanticDispatchResult("客资日报结果", List.of())); + MockMvc mvc = mvc( + mock(CozeWorkflowService.class), + semantic, + new AssistantFileStore()); + + mvc.perform(post("/api/assistant/sports-venue/query/sports-venue") + .header("userid", "YiNianYiQingJing") + .contentType(MediaType.APPLICATION_JSON) + .content("{\"query\":\"客资日报\"}")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.success").value(true)) + .andExpect(jsonPath("$.content").value("客资日报结果")); + } + + @Test + void sportsVenueApiSupportsWecomTrailingSlashPath() throws Exception { + SemanticDispatchService semantic = mock(SemanticDispatchService.class); + when(semantic.dispatchWithAttachments("YiNianYiQingJing", "客资日报")) + .thenReturn(new SemanticDispatchResult("客资日报结果", List.of())); + MockMvc mvc = mvc( + mock(CozeWorkflowService.class), + semantic, + new AssistantFileStore()); + + mvc.perform(post("/api/assistant/sports-venue/query/") + .header("userid", "YiNianYiQingJing") + .contentType(MediaType.APPLICATION_JSON) + .content("{\"query\":\"客资日报\"}")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.success").value(true)); + } + @Test void sportsVenueApiRejectsRequestWhenWecomContextHasNoUserId() throws Exception { MockMvc mvc = mvc(