fix(aihr): require complete interview answers
This commit is contained in:
+2
-2
@@ -110,8 +110,8 @@ public class AihrInterviewService {
|
||||
}
|
||||
});
|
||||
}
|
||||
if (session.questions().stream().noneMatch(question -> !isBlank(session.answers().get(question.questionId())))) {
|
||||
throw new IllegalArgumentException("请先提交至少一条有效面试回答");
|
||||
if (session.questions().stream().anyMatch(question -> isBlank(session.answers().get(question.questionId())))) {
|
||||
throw new IllegalArgumentException("请先完成全部面试回答");
|
||||
}
|
||||
ScoreResult score = scoreWithModel(session).orElseGet(() -> localScore(session));
|
||||
String time = LocalDateTime.now().format(TIME_FORMAT);
|
||||
|
||||
+18
-1
@@ -199,7 +199,24 @@ class AihrInterviewServiceTest {
|
||||
new FinishRequest(started.sessionId(), Map.of())
|
||||
));
|
||||
|
||||
assertEquals("请先提交至少一条有效面试回答", error.getMessage());
|
||||
assertEquals("请先完成全部面试回答", error.getMessage());
|
||||
verify(jdbcTemplate, never()).update(anyString(), org.mockito.ArgumentMatchers.<Object[]>any());
|
||||
}
|
||||
|
||||
@Test
|
||||
@Tag("dev")
|
||||
void interviewFinishRequiresAllRealAnswers() {
|
||||
JdbcTemplate jdbcTemplate = mock(JdbcTemplate.class);
|
||||
AihrModelSeedService modelService = mock(AihrModelSeedService.class);
|
||||
when(modelService.tryChat(anyString(), anyString(), anyDouble())).thenReturn(Optional.empty());
|
||||
AihrInterviewService service = new AihrInterviewService(new ObjectMapper(), modelService, jdbcTemplate);
|
||||
var started = service.start(new StartRequest("candidate-partial", "候选人", "customer-service", "mobile"));
|
||||
|
||||
IllegalArgumentException error = assertThrows(IllegalArgumentException.class, () -> service.finish(
|
||||
new FinishRequest(started.sessionId(), Map.of("q1", "先确认诉求并安抚情绪"))
|
||||
));
|
||||
|
||||
assertEquals("请先完成全部面试回答", error.getMessage());
|
||||
verify(jdbcTemplate, never()).update(anyString(), org.mockito.ArgumentMatchers.<Object[]>any());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user