mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-07 09:56:47 +08:00
AI调用日志 重试功能补完
This commit is contained in:
@@ -11,6 +11,7 @@ import com.xboe.module.boecase.dao.CaseDocumentLogDao;
|
||||
import com.xboe.module.boecase.dto.CaseDocumentLogQueryDto;
|
||||
import com.xboe.module.boecase.entity.CaseDocumentLog;
|
||||
import com.xboe.module.boecase.service.ICaseDocumentLogService;
|
||||
import com.xboe.module.boecase.service.ICaseKnowledgeService;
|
||||
import com.xboe.module.boecase.vo.CaseDocumentLogVo;
|
||||
import com.xboe.enums.CaseDocumentLogOptTypeEnum;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -35,6 +36,9 @@ public class CaseDocumentLogServiceImpl implements ICaseDocumentLogService {
|
||||
@Resource
|
||||
private CaseDocumentLogDao caseDocumentLogDao;
|
||||
|
||||
@Resource
|
||||
private ICaseKnowledgeService caseKnowledgeService;
|
||||
|
||||
@Override
|
||||
public PageList<CaseDocumentLogVo> pageQuery(int pageIndex, int pageSize, CaseDocumentLogQueryDto queryDto) {
|
||||
// 构建查询条件
|
||||
@@ -43,6 +47,13 @@ public class CaseDocumentLogServiceImpl implements ICaseDocumentLogService {
|
||||
// 删除标识过滤
|
||||
filters.add(FieldFilters.eq("deleted", false));
|
||||
|
||||
// 接口调用状态
|
||||
if (queryDto.getOptStatus() != null) {
|
||||
filters.add(FieldFilters.eq("optStatus", queryDto.getOptStatus()));
|
||||
} else {
|
||||
filters.add(FieldFilters.ge("optStatus", 1));
|
||||
}
|
||||
|
||||
// 案例标题模糊查询
|
||||
if (StringUtil.isNotBlank(queryDto.getCaseTitle())) {
|
||||
filters.add(FieldFilters.like("caseTitle", LikeMatchMode.ANYWHERE, queryDto.getCaseTitle()));
|
||||
@@ -61,11 +72,6 @@ public class CaseDocumentLogServiceImpl implements ICaseDocumentLogService {
|
||||
filters.add(FieldFilters.le("optTime", queryDto.getOptTimeEnd()));
|
||||
}
|
||||
|
||||
// 接口调用状态
|
||||
if (queryDto.getOptStatus() != null) {
|
||||
filters.add(FieldFilters.eq("optStatus", queryDto.getOptStatus()));
|
||||
}
|
||||
|
||||
// 业务处理状态
|
||||
if (queryDto.getCaseStatus() != null) {
|
||||
filters.add(FieldFilters.eq("caseStatus", queryDto.getCaseStatus()));
|
||||
@@ -100,6 +106,13 @@ public class CaseDocumentLogServiceImpl implements ICaseDocumentLogService {
|
||||
// 删除标识过滤
|
||||
filters.add(FieldFilters.eq("deleted", false));
|
||||
|
||||
// 接口调用状态
|
||||
if (queryDto.getOptStatus() != null) {
|
||||
filters.add(FieldFilters.eq("optStatus", queryDto.getOptStatus()));
|
||||
} else {
|
||||
filters.add(FieldFilters.ge("optStatus", 1));
|
||||
}
|
||||
|
||||
// 案例标题模糊查询
|
||||
if (StringUtil.isNotBlank(queryDto.getCaseTitle())) {
|
||||
filters.add(FieldFilters.like("caseTitle", LikeMatchMode.ANYWHERE, queryDto.getCaseTitle()));
|
||||
@@ -118,11 +131,6 @@ public class CaseDocumentLogServiceImpl implements ICaseDocumentLogService {
|
||||
filters.add(FieldFilters.le("optTime", queryDto.getOptTimeEnd()));
|
||||
}
|
||||
|
||||
// 接口调用状态
|
||||
if (queryDto.getOptStatus() != null) {
|
||||
filters.add(FieldFilters.eq("optStatus", queryDto.getOptStatus()));
|
||||
}
|
||||
|
||||
// 业务处理状态
|
||||
if (queryDto.getCaseStatus() != null) {
|
||||
filters.add(FieldFilters.eq("caseStatus", queryDto.getCaseStatus()));
|
||||
@@ -144,7 +152,7 @@ public class CaseDocumentLogServiceImpl implements ICaseDocumentLogService {
|
||||
deletedCount++;
|
||||
}
|
||||
|
||||
log.info("清空日志操作完成,共删除{}\u6761记录", deletedCount);
|
||||
log.info("清空日志操作完成,共删除{}条记录", deletedCount);
|
||||
return deletedCount;
|
||||
}
|
||||
|
||||
@@ -165,59 +173,50 @@ public class CaseDocumentLogServiceImpl implements ICaseDocumentLogService {
|
||||
log.info("开始重试AI调用,原始日志ID: {}, 案例标题: {}, 操作类型: {}",
|
||||
logId, originalLog.getCaseTitle(), originalLog.getOptType());
|
||||
|
||||
// 2. 创建新的日志记录
|
||||
CaseDocumentLog newLog = new CaseDocumentLog();
|
||||
newLog.setId(IDGenerator.generate());
|
||||
newLog.setTaskId(originalLog.getTaskId());
|
||||
newLog.setCaseId(originalLog.getCaseId());
|
||||
newLog.setCaseTitle(originalLog.getCaseTitle());
|
||||
newLog.setOptType(originalLog.getOptType());
|
||||
newLog.setRequestUrl(originalLog.getRequestUrl());
|
||||
newLog.setRequestBody(originalLog.getRequestBody());
|
||||
newLog.setOptTime(LocalDateTime.now());
|
||||
|
||||
// 3. 执行AI调用重试逻辑
|
||||
// 2. 执行AI调用重试逻辑
|
||||
boolean retrySuccess = false;
|
||||
long startTime = System.currentTimeMillis();
|
||||
|
||||
try {
|
||||
// TODO: 在这里实现具体的AI调用重试逻辑
|
||||
// 模拟执行结果(实际开发时需要替换为真实的AI调用逻辑)
|
||||
log.info("正在执行AI调用重试...");
|
||||
// 根据操作类型调用对应的接口方法
|
||||
String optType = originalLog.getOptType();
|
||||
String caseId = originalLog.getCaseId();
|
||||
|
||||
// 这里应该有真实的AI调用逻辑
|
||||
// 例如:
|
||||
// String response = aiService.callAI(originalLog.getRequestBody());
|
||||
// newLog.setResponseBody(response);
|
||||
if (StringUtil.isBlank(caseId)) {
|
||||
throw new IllegalArgumentException("案例ID不能为空");
|
||||
}
|
||||
|
||||
// 模拟成功的响应
|
||||
newLog.setResponseBody("{\"success\": true, \"message\": \"重试成功\"}");
|
||||
newLog.setOptStatus(1); // 1-调用成功
|
||||
newLog.setCaseStatus(1); // 1-处理成功
|
||||
retrySuccess = true;
|
||||
log.info("正在执行AI调用重试,操作类型: {}, caseId: {}", optType, caseId);
|
||||
|
||||
log.info("AI调用重试成功");
|
||||
// 根据操作类型执行对应的方法(这些方法内部会自动创建日志记录)
|
||||
if (CaseDocumentLogOptTypeEnum.CREATE.getCode().equals(optType)) {
|
||||
// 上传案例文档
|
||||
retrySuccess = caseKnowledgeService.uploadCaseDocument(caseId);
|
||||
log.info("执行上传案例文档重试,caseId: {}, 结果: {}", caseId, retrySuccess);
|
||||
|
||||
} else if (CaseDocumentLogOptTypeEnum.DELETE.getCode().equals(optType)) {
|
||||
// 删除案例文档
|
||||
retrySuccess = caseKnowledgeService.deleteCaseDocument(caseId);
|
||||
log.info("执行删除案例文档重试,caseId: {}, 结果: {}", caseId, retrySuccess);
|
||||
|
||||
} else if (CaseDocumentLogOptTypeEnum.UPDATE.getCode().equals(optType)) {
|
||||
// 更新案例文档
|
||||
retrySuccess = caseKnowledgeService.updateCaseDocument(caseId);
|
||||
log.info("执行更新案例文档重试,caseId: {}, 结果: {}", caseId, retrySuccess);
|
||||
|
||||
} else {
|
||||
throw new IllegalArgumentException("不支持的操作类型: " + optType);
|
||||
}
|
||||
|
||||
if (retrySuccess) {
|
||||
log.info("AI调用重试成功,操作类型: {}, caseId: {}", optType, caseId);
|
||||
} else {
|
||||
log.warn("AI调用重试失败,操作类型: {}, caseId: {}", optType, caseId);
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("AI调用重试失败", e);
|
||||
newLog.setResponseBody("{\"success\": false, \"error\": \"" + e.getMessage() + "\"}");
|
||||
newLog.setOptStatus(2); // 2-调用失败
|
||||
newLog.setCaseStatus(2); // 2-处理失败
|
||||
log.error("AI调用重试异常,操作类型: {}, caseId: {}",
|
||||
originalLog.getOptType(), originalLog.getCaseId(), e);
|
||||
retrySuccess = false;
|
||||
} finally {
|
||||
// 4. 记录执行时间
|
||||
long endTime = System.currentTimeMillis();
|
||||
newLog.setExecuteDuration(endTime - startTime);
|
||||
|
||||
// 5. 保存新的日志记录
|
||||
try {
|
||||
caseDocumentLogDao.save(newLog);
|
||||
log.info("重试日志记录保存成功,新日志ID: {}, 执行状态: {}",
|
||||
newLog.getId(), retrySuccess ? "成功" : "失败");
|
||||
} catch (Exception e) {
|
||||
log.error("保存重试日志记录失败", e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return retrySuccess;
|
||||
|
||||
@@ -34,7 +34,7 @@ public class CaseDocumentLogVo {
|
||||
/**
|
||||
* 调用时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private LocalDateTime optTime;
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user