fix(aihr): keep interview session id in finish response
This commit is contained in:
+15
-1
@@ -96,7 +96,21 @@ public class AihrInterviewService {
|
||||
ScoreResult score = scoreWithModel(session).orElseGet(() -> localScore(session));
|
||||
String time = LocalDateTime.now().format(TIME_FORMAT);
|
||||
List<QuestionRecordResponse> questions = questionRecords(session);
|
||||
RecordResponse record = new RecordResponse(time, session.candidate().name(), session.candidate().position(), score.total(), score.result(), score.summary(), questions);
|
||||
RecordResponse record = new RecordResponse(
|
||||
sessionKey,
|
||||
time,
|
||||
session.candidate().name(),
|
||||
session.candidate().position(),
|
||||
score.total(),
|
||||
null,
|
||||
score.total(),
|
||||
"待复核",
|
||||
"",
|
||||
"",
|
||||
score.result(),
|
||||
score.summary(),
|
||||
questions
|
||||
);
|
||||
saveResult(sessionKey, session, score);
|
||||
return new FinishResponse(
|
||||
score.total(),
|
||||
|
||||
+26
@@ -3,8 +3,10 @@ package org.dromara.aihr.service;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.dromara.aihr.domain.AihrInterviewDto.CandidateLinkRequest;
|
||||
import org.dromara.aihr.domain.AihrInterviewDto.CandidateLinkResponse;
|
||||
import org.dromara.aihr.domain.AihrInterviewDto.FinishRequest;
|
||||
import org.dromara.aihr.domain.AihrInterviewDto.RecordResponse;
|
||||
import org.dromara.aihr.domain.AihrInterviewDto.ReviewRequest;
|
||||
import org.dromara.aihr.domain.AihrInterviewDto.StartRequest;
|
||||
import org.junit.jupiter.api.Tag;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
@@ -18,6 +20,7 @@ import static org.junit.jupiter.api.Assertions.assertSame;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.ArgumentMatchers.anyDouble;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.mock;
|
||||
@@ -26,6 +29,9 @@ import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
class AihrInterviewServiceTest {
|
||||
|
||||
@Test
|
||||
@@ -148,4 +154,24 @@ class AihrInterviewServiceTest {
|
||||
assertEquals("人工复核分必须是0到100之间的整数", error.getMessage());
|
||||
verify(jdbcTemplate, never()).update(anyString(), eq(101), eq("hr-operator"), eq("超出范围"), eq("000000"), eq("iv-1"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@Tag("dev")
|
||||
void finishResponseRetainsSessionIdForHumanReview() {
|
||||
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-1", "候选人", "customer-service", "mobile"));
|
||||
var finished = service.finish(new FinishRequest(
|
||||
started.sessionId(),
|
||||
Map.of("q1", "先安抚情绪并确认事实", "q2", "说明费用和整改安排", "q3", "同步责任人和反馈时间")
|
||||
));
|
||||
RecordResponse record = finished.records().get(0);
|
||||
|
||||
assertEquals(started.sessionId(), record.sessionId());
|
||||
assertEquals("待复核", record.reviewStatus());
|
||||
assertEquals(record.score(), record.finalScore());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user