diff --git a/backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/agent/AihrAgentOrchestrator.java b/backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/agent/AihrAgentOrchestrator.java index 79fd13d3..186f1e7e 100644 --- a/backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/agent/AihrAgentOrchestrator.java +++ b/backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/agent/AihrAgentOrchestrator.java @@ -177,6 +177,9 @@ public class AihrAgentOrchestrator { if (request == null || request.question() == null || request.question().isBlank()) { throw new ServiceException("问题不能为空", 400); } + if (request.question().trim().length() > 1000) { + throw new ServiceException("问题长度必须为 1-1000 字", 400); + } } private static boolean needsKnowledge(String question) { diff --git a/backend/ruoyi-modules/ruoyi-aihr/src/test/java/org/dromara/aihr/agent/AihrAgentOrchestratorTest.java b/backend/ruoyi-modules/ruoyi-aihr/src/test/java/org/dromara/aihr/agent/AihrAgentOrchestratorTest.java index 630fceda..28761963 100644 --- a/backend/ruoyi-modules/ruoyi-aihr/src/test/java/org/dromara/aihr/agent/AihrAgentOrchestratorTest.java +++ b/backend/ruoyi-modules/ruoyi-aihr/src/test/java/org/dromara/aihr/agent/AihrAgentOrchestratorTest.java @@ -21,6 +21,7 @@ import static org.dromara.aihr.agent.AihrAgentDto.Intent.KNOWLEDGE_QA; import static org.dromara.aihr.agent.AihrAgentDto.Intent.LIVE_MY_WORK; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; @Tag("dev") @@ -104,6 +105,20 @@ class AihrAgentOrchestratorTest { assertEquals("opaque-draft", result.actionDraft().draftId()); } + @Test + void questionLongerThanKnowledgeBoundaryIsRejectedBeforePlanning() { + var query = new CapturingQueryService(response("unused", null, false)); + + var error = assertThrows( + org.dromara.common.core.exception.ServiceException.class, + () -> orchestrator(query).handle(request("A".repeat(1001))) + ); + + assertEquals(400, error.getCode()); + assertTrue(error.getMessage().contains("1-1000")); + assertEquals(0, query.callCount); + } + private static AihrAgentOrchestrator orchestrator(CapturingQueryService query) { return orchestrator(query, null); }