Commit 9abdedb3 authored by 陈立彬's avatar 陈立彬

1.ai问答增加助手ID参数 2.修复重复答题

parent 0b9e293f
package cn.breeze.elleai.application.dto.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@Data
public class ExamineCloseRequestDto implements Serializable {
@Schema(description = "对练ID")
@JsonProperty("examaine_id")
private Integer examineId;
@Schema(description = "考试流水号")
@JsonProperty("business_no")
private String businessNo;
}
......@@ -16,4 +16,8 @@ public class UserQaMobileRequestDto implements Serializable {
@Schema(description = "提问内容")
@JsonProperty("content")
private String content;
@Schema(description = "助手ID")
@JsonProperty("assistant_id")
private Integer assistantId;
}
......@@ -328,10 +328,10 @@ public class AppChatCompletionService {
Integer recordId = chatCompletionService.saveUserQaSession(saveModel);
// 保存问答详情
chatCompletionService.saveUserQaRecord(recordId, 0, request.getContent());
chatCompletionService.saveUserQaRecord(recordId, 0, request.getContent(), request.getAssistantId());
// 问一下AI
AiChatComplateResultDto complateResultDto = ask4Knowledge(sessionId, userPrincipal.getUserId(), request.getContent());
AiChatComplateResultDto complateResultDto = ask4Knowledge(sessionId, userPrincipal.getUserId(), request.getContent(), request.getAssistantId());
if(Objects.nonNull(complateResultDto)) {
String replyContent = complateResultDto.getContent();
......@@ -344,7 +344,7 @@ public class AppChatCompletionService {
}
// 保存AI问答详情
chatCompletionService.saveUserQaRecord(recordId, 1, replyContent);
chatCompletionService.saveUserQaRecord(recordId, 1, replyContent, request.getAssistantId());
result.setChatCompletionId(recordId);
result.setReplyContent(replyContent);
......@@ -374,9 +374,10 @@ public class AppChatCompletionService {
}
public AiChatComplateResultDto ask4Knowledge(String sessionId, String userId, String question) {
public AiChatComplateResultDto ask4Knowledge(String sessionId, String userId, String question, Integer assistantId) {
Map<String, String> inputs = new HashMap<>();
inputs.put("context", question);
inputs.put("assistant_id", String.valueOf(assistantId));
JSONObject param = new JSONObject();
param.put("inputs", inputs);
param.put("query", question);
......
package cn.breeze.elleai.application.service;
import cn.breeze.elleai.application.dto.PageResult;
import cn.breeze.elleai.application.dto.inner.AiSingleEvaluateResultDto;
import cn.breeze.elleai.application.dto.inner.ExamineBusinessCacheDto;
import cn.breeze.elleai.application.dto.request.*;
import cn.breeze.elleai.application.dto.response.*;
......@@ -31,7 +30,7 @@ import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import static java.util.stream.Collectors.*;
import static java.util.stream.Collectors.toMap;
/**
......@@ -1146,11 +1145,8 @@ public class AppExamineService {
throw new InternalException(-1, "获取不到对练信息");
}
// 获取题目信息
ExamineQaDto examineQaDto = qaDetail(questionId);
// 获取数据库考试信息
Integer recordId = null;
Integer recordId;
ExamineRecordResponseModel examineRecord = examineService.examineRecordDetail(businessNo);
if(Objects.isNull(examineRecord)) {
// 第一次答题,保存考试信息
......@@ -1168,34 +1164,36 @@ public class AppExamineService {
recordId = saveModel.getId();
} else {
recordId = examineRecord.getId();
}
// 获取有无答题记录
Integer detailRecordId;
ExamineRecordDetailResponseModel examineRecordDetail = examineService.getExamineRecordDetail(businessCache.getRecordId(), questionId);
if(Objects.isNull(examineRecordDetail)) {
// 更新答题数量
ExamineRecordSaveModel saveModel = new ExamineRecordSaveModel();
saveModel.setId(recordId);
saveModel.setAnsweredNum(examineRecord.getAnsweredNum() + 1);
examineService.saveExamineRecord(saveModel);
}
// 保存单题答题信息
ExamineRecordDetailSaveModel detailSaveModel = new ExamineRecordDetailSaveModel();
detailSaveModel.setRecordId(recordId);
detailSaveModel.setQaId(questionId);
detailSaveModel.setCreateTime(new Date());
detailSaveModel.setAnswer(answer);
// AI 点评
// AiSingleEvaluateResultDto evaluateResultDto = extensionService.run4SingleEvaluate(businessNo, userId, examineQaDto.getQuestion(), examineQaDto.getAnswer(), answer);
// if(Objects.nonNull(evaluateResultDto)) {
// detailSaveModel.setScore(evaluateResultDto.getScore());
// detailSaveModel.setEvaluation(evaluateResultDto.getEvaluation());
// }
examineService.saveExamineRecordDetail(detailSaveModel);
// 保存单题答题信息
ExamineRecordDetailSaveModel detailSaveModel = new ExamineRecordDetailSaveModel();
detailSaveModel.setRecordId(recordId);
detailSaveModel.setQaId(questionId);
detailSaveModel.setCreateTime(new Date());
detailSaveModel.setAnswer(answer);
examineService.saveExamineRecordDetail(detailSaveModel);
detailRecordId = detailSaveModel.getId();
} else {
detailRecordId = examineRecordDetail.getId();
}
// 定时任务
ExamineEvaluateJobResponseModel evaluateJob = commonService.getEvaluateJob(0, detailSaveModel.getId());
ExamineEvaluateJobResponseModel evaluateJob = commonService.getEvaluateJob(0, detailRecordId);
if(Objects.isNull(evaluateJob)) {
ExamineEvaluateJobSaveModel model = new ExamineEvaluateJobSaveModel();
model.setBusinessId(detailSaveModel.getId());
model.setBusinessId(detailRecordId);
model.setBusinessNo(businessNo);
model.setType(0);
model.setStatus(0);
......
......@@ -149,7 +149,7 @@ public class ExamineMobileController {
@Schema(description = "对练ID") @RequestParam("examaine_id") Integer examineId,
@Schema(description = "考试流水号") @RequestParam("business_no") String businessNo) {
examineService.exitExamine(userPrincipal, examineId, businessNo);
// examineService.exitExamine(userPrincipal, examineId, businessNo);
return ApiResponse.ok("SUCCESS");
}
......
......@@ -25,7 +25,7 @@ public interface ChatCompletionService {
Integer saveUserQaSession(UserChatCompletionSaveModel dto);
void saveUserQaRecord(Integer chatCompletionId, Integer type, String content);
void saveUserQaRecord(Integer chatCompletionId, Integer type, String content, Integer assistantId);
/***************************************** AI助手 *****************************************/
Page<QaAssistantResponseModel> qaAssistantPaginQuery(QaAssistantRequestModel request);
......
......@@ -139,11 +139,12 @@ public class ChatCompletionServiceImpl implements ChatCompletionService{
}
@Override
public void saveUserQaRecord(Integer chatCompletionId, Integer type, String content) {
public void saveUserQaRecord(Integer chatCompletionId, Integer type, String content, Integer assistantId) {
UserChatCompletionHistoryEntity entity = new UserChatCompletionHistoryEntity();
entity.setChatCompletionId(chatCompletionId);
entity.setType(type);
entity.setContent(content);
entity.setAssistantId(assistantId);
entity.setCreateTime(new Date());
chatCompletionHistoryMapper.insertOrUpdateSelective(entity);
}
......
......@@ -104,6 +104,9 @@ public interface ExamineService {
void saveExamineRecordDetail(ExamineRecordDetailSaveModel dto);
ExamineRecordDetailResponseModel getExamineRecordDetail(Integer recordId, Integer qaId);
ExamineRecordDetailResponseModel singleExamineQaDetail(Integer id);
long countUnfinishedExamineRecord(Integer examineId);
......
......@@ -525,6 +525,14 @@ public class ExamineServiceImpl implements ExamineService {
dto.setId(entity.getId());
}
@Override
public ExamineRecordDetailResponseModel getExamineRecordDetail(Integer recordId, Integer qaId) {
QueryWrapper queryWrapper = QueryWrapper.create()
.where(USER_EXAMINE_DETAIL_RECORD_ENTITY.RECORD_ID.eq(recordId))
.and(USER_EXAMINE_DETAIL_RECORD_ENTITY.QA_ID.eq(qaId));
return userExamineDetailRecordMapper.selectOneByQueryAs(queryWrapper, ExamineRecordDetailResponseModel.class);
}
@Override
public ExamineRecordDetailResponseModel singleExamineQaDetail(Integer id) {
QueryWrapper queryWrapper = QueryWrapper.create()
......
......@@ -41,6 +41,11 @@ public class UserChatCompletionHistoryEntity implements Serializable {
*/
private Integer type;
/**
* 问答助手ID
*/
private Integer assistantId;
/**
* 内容
*/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment