[DAT] 修改update方法调试

This commit is contained in:
liu.zixi
2025-10-21 10:35:50 +08:00
parent 1edb36622f
commit e704930bca

View File

@@ -414,112 +414,114 @@ public class CaseKnowledgeServiceImpl implements ICaseKnowledgeService {
FieldFilters.eq("requestUrl", CaseAiConstants.CASE_DOC_UPLOAD_INTERFACE_NAME)); FieldFilters.eq("requestUrl", CaseAiConstants.CASE_DOC_UPLOAD_INTERFACE_NAME));
if (logList.isEmpty()) { if (logList.isEmpty()) {
log.error("删除案例文档失败未找到相关的日志记录caseId: {}", caseId); log.info("删除案例文档失败未找到相关的日志记录caseId: {}", caseId);
saveCaseDocumentLog(caseId, cases.getTitle(), CaseDocumentLogOptTypeEnum.UPDATE.getCode(), CaseAiConstants.CASE_DOC_DELETE_INTERFACE_NAME, log.info("直接进行上传操作caseId: {}", caseId);
"", "删除案例文档失败,未找到相关的日志记录", // saveCaseDocumentLog(caseId, cases.getTitle(), CaseDocumentLogOptTypeEnum.UPDATE.getCode(), CaseAiConstants.CASE_DOC_DELETE_INTERFACE_NAME,
CaseDocumentLogRunStatusEnum.COMPLETED.getCode(), CaseDocumentLogOptStatusEnum.FAILED.getCode(), CaseDocumentLogCaseStatusEnum.FAILED.getCode(), null); // "", "删除案例文档失败,未找到相关的日志记录",
return false; // CaseDocumentLogRunStatusEnum.COMPLETED.getCode(), CaseDocumentLogOptStatusEnum.FAILED.getCode(), CaseDocumentLogCaseStatusEnum.FAILED.getCode(), null);
} // return false;
} else {
CaseDocumentLog latestLog = logList.get(0);
String deleteTaskId = latestLog.getTaskId();
if (StringUtil.isBlank(deleteTaskId)) {
log.error("删除案例文档失败日志记录中taskId为空caseId: {}", caseId);
saveCaseDocumentLog(caseId, cases.getTitle(), CaseDocumentLogOptTypeEnum.UPDATE.getCode(), CaseAiConstants.CASE_DOC_DELETE_INTERFACE_NAME,
"kId=" + caseAiProperties.getCaseKnowledgeId() +
"&taskIds=", "删除案例文档失败日志记录中taskId为空",
CaseDocumentLogRunStatusEnum.COMPLETED.getCode(), CaseDocumentLogOptStatusEnum.FAILED.getCode(), CaseDocumentLogCaseStatusEnum.FAILED.getCode(), null);
return false;
}
// 构建请求参数
String params = "kId=" + caseAiProperties.getCaseKnowledgeId() +
"&taskIds=" + deleteTaskId;
CaseDocumentLog latestLog = logList.get(0); // 3. 获取access_token
String deleteTaskId = latestLog.getTaskId(); String accessToken = aiAccessTokenService.getAccessToken();
if (StringUtil.isBlank(deleteTaskId)) { if (StringUtil.isBlank(accessToken)) {
log.error("删除案例文档失败,日志记录中taskId为空caseId: {}", caseId); log.error("删除案例文档失败,获取access_token失败");
saveCaseDocumentLog(caseId, cases.getTitle(), CaseDocumentLogOptTypeEnum.UPDATE.getCode(), CaseAiConstants.CASE_DOC_DELETE_INTERFACE_NAME, saveCaseDocumentLog(caseId, cases.getTitle(), CaseDocumentLogOptTypeEnum.UPDATE.getCode(), CaseAiConstants.CASE_DOC_DELETE_INTERFACE_NAME,
"kId=" + caseAiProperties.getCaseKnowledgeId() + params, "删除案例文档失败获取access_token失败",
"&taskIds=", "删除案例文档失败日志记录中taskId为空", CaseDocumentLogRunStatusEnum.COMPLETED.getCode(), CaseDocumentLogOptStatusEnum.FAILED.getCode(), CaseDocumentLogCaseStatusEnum.FAILED.getCode(), null);
CaseDocumentLogRunStatusEnum.COMPLETED.getCode(), CaseDocumentLogOptStatusEnum.FAILED.getCode(), CaseDocumentLogCaseStatusEnum.FAILED.getCode(), null); return false;
return false; }
}
// 构建请求参数
String params = "kId=" + caseAiProperties.getCaseKnowledgeId() +
"&taskIds=" + deleteTaskId;
// 3. 获取access_token // 4. 重试逻辑最多3次机会
String accessToken = aiAccessTokenService.getAccessToken(); int deleteMaxRetries = 3;
if (StringUtil.isBlank(accessToken)) { for (int attempt = 1; attempt <= deleteMaxRetries; attempt++) {
log.error("删除案例文档失败获取access_token失败"); log.info("删除案例文档第{}次尝试caseId: {}, taskId: {}", attempt, caseId, deleteTaskId);
saveCaseDocumentLog(caseId, cases.getTitle(), CaseDocumentLogOptTypeEnum.UPDATE.getCode(), CaseAiConstants.CASE_DOC_DELETE_INTERFACE_NAME,
params, "删除案例文档失败获取access_token失败",
CaseDocumentLogRunStatusEnum.COMPLETED.getCode(), CaseDocumentLogOptStatusEnum.FAILED.getCode(), CaseDocumentLogCaseStatusEnum.FAILED.getCode(), null);
return false;
}
// 4. 重试逻辑最多3次机会 try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
int deleteMaxRetries = 3; HttpDelete httpDelete = new HttpDelete(deleteUrl + "?" + params);
for (int attempt = 1; attempt <= deleteMaxRetries; attempt++) { httpDelete.setHeader("X-AI-ApiCode", caseAiProperties.getAiApiCode());
log.info("删除案例文档第{}次尝试caseId: {}, taskId: {}", attempt, caseId, deleteTaskId); httpDelete.setHeader("access_token", accessToken);
httpDelete.setHeader("Content-Type", "application/x-www-form-urlencoded");
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
HttpDelete httpDelete = new HttpDelete(deleteUrl + "?" + params);
httpDelete.setHeader("X-AI-ApiCode", caseAiProperties.getAiApiCode());
httpDelete.setHeader("access_token", accessToken);
httpDelete.setHeader("Content-Type", "application/x-www-form-urlencoded");
// StringEntity entity = new StringEntity(params, StandardCharsets.UTF_8); // StringEntity entity = new StringEntity(params, StandardCharsets.UTF_8);
// entity.setContentType("application/x-www-form-urlencoded"); // entity.setContentType("application/x-www-form-urlencoded");
// httpDelete.setEntity(entity); // httpDelete.setEntity(entity);
try (CloseableHttpResponse response = httpClient.execute(httpDelete)) { try (CloseableHttpResponse response = httpClient.execute(httpDelete)) {
int statusCode = response.getStatusLine().getStatusCode(); int statusCode = response.getStatusLine().getStatusCode();
String responseBody = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8); String responseBody = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
if (statusCode == 200) { if (statusCode == 200) {
JSONObject result = JSON.parseObject(responseBody); JSONObject result = JSON.parseObject(responseBody);
if (result.getBooleanValue("success")) { if (result.getBooleanValue("success")) {
// 接口调用成功,检查业务处理结果 // 接口调用成功,检查业务处理结果
JSONObject data = result.getJSONObject("data"); JSONObject data = result.getJSONObject("data");
Boolean deleteSuccess = data.getBoolean(deleteTaskId); Boolean deleteSuccess = data.getBoolean(deleteTaskId);
int optStatus = CaseDocumentLogOptStatusEnum.SUCCESS.getCode(); int optStatus = CaseDocumentLogOptStatusEnum.SUCCESS.getCode();
int caseStatus = (deleteSuccess != null && deleteSuccess) ? int caseStatus = (deleteSuccess != null && deleteSuccess) ?
CaseDocumentLogCaseStatusEnum.SUCCESS.getCode() : CaseDocumentLogCaseStatusEnum.FAILED.getCode(); CaseDocumentLogCaseStatusEnum.SUCCESS.getCode() : CaseDocumentLogCaseStatusEnum.FAILED.getCode();
saveCaseDocumentLog(caseId, cases.getTitle(), CaseDocumentLogOptTypeEnum.UPDATE.getCode(), CaseAiConstants.CASE_DOC_DELETE_INTERFACE_NAME, saveCaseDocumentLog(caseId, cases.getTitle(), CaseDocumentLogOptTypeEnum.UPDATE.getCode(), CaseAiConstants.CASE_DOC_DELETE_INTERFACE_NAME,
params, responseBody, params, responseBody,
CaseDocumentLogRunStatusEnum.COMPLETED.getCode(), optStatus, caseStatus, null); CaseDocumentLogRunStatusEnum.COMPLETED.getCode(), optStatus, caseStatus, null);
if (deleteSuccess != null && deleteSuccess) { if (deleteSuccess != null && deleteSuccess) {
log.info("删除案例文档成功caseId: {}, taskId: {}, 尝试次数: {}", caseId, deleteTaskId, attempt); log.info("删除案例文档成功caseId: {}, taskId: {}, 尝试次数: {}", caseId, deleteTaskId, attempt);
break; // 删除成功,跳出重试循环
} else {
// 业务处理失败,不重试
log.error("删除案例文档业务处理失败不重试caseId: {}, taskId: {}", caseId, deleteTaskId);
return false;
}
} else { } else {
// 业务处理失败,不重试 // 业务处理失败,不重试
log.error("删除案例文档业务处理失败,不重试,caseId: {}, taskId: {}", caseId, deleteTaskId); log.error("删除案例文档业务处理失败,不重试,response: {}", responseBody);
saveCaseDocumentLog(caseId, cases.getTitle(), CaseDocumentLogOptTypeEnum.UPDATE.getCode(), CaseAiConstants.CASE_DOC_DELETE_INTERFACE_NAME,
params, responseBody,
CaseDocumentLogRunStatusEnum.COMPLETED.getCode(), CaseDocumentLogOptStatusEnum.SUCCESS.getCode(), CaseDocumentLogCaseStatusEnum.FAILED.getCode(), null);
return false; return false;
} }
} else { } else {
// 业务处理失败,不重试 // 接口调用失败
log.error("删除案例文档业务处理失败不重试response: {}", responseBody); log.error("删除案例文档接口调用失败,第{}次尝试status: {}, response: {}", attempt, statusCode, responseBody);
saveCaseDocumentLog(caseId, cases.getTitle(), CaseDocumentLogOptTypeEnum.UPDATE.getCode(), CaseAiConstants.CASE_DOC_DELETE_INTERFACE_NAME, saveCaseDocumentLog(caseId, cases.getTitle(), CaseDocumentLogOptTypeEnum.UPDATE.getCode(), CaseAiConstants.CASE_DOC_DELETE_INTERFACE_NAME,
params, responseBody, params, responseBody,
CaseDocumentLogRunStatusEnum.COMPLETED.getCode(), CaseDocumentLogOptStatusEnum.SUCCESS.getCode(), CaseDocumentLogCaseStatusEnum.FAILED.getCode(), null); CaseDocumentLogRunStatusEnum.COMPLETED.getCode(), CaseDocumentLogOptStatusEnum.FAILED.getCode(), CaseDocumentLogCaseStatusEnum.FAILED.getCode(), null);
return false; if (attempt == deleteMaxRetries) {
// 最后一次尝试仍然失败
return false;
}
// 继续下一次重试
} }
} else {
// 接口调用失败
log.error("删除案例文档接口调用失败,第{}次尝试status: {}, response: {}", attempt, statusCode, responseBody);
saveCaseDocumentLog(caseId, cases.getTitle(), CaseDocumentLogOptTypeEnum.UPDATE.getCode(), CaseAiConstants.CASE_DOC_DELETE_INTERFACE_NAME,
params, responseBody,
CaseDocumentLogRunStatusEnum.COMPLETED.getCode(), CaseDocumentLogOptStatusEnum.FAILED.getCode(), CaseDocumentLogCaseStatusEnum.FAILED.getCode(), null);
if (attempt == deleteMaxRetries) {
// 最后一次尝试仍然失败
return false;
}
// 继续下一次重试
} }
} catch (Exception e) {
// 接口调用异常
log.error("删除案例文档接口调用异常,第{}次尝试", attempt, e);
saveCaseDocumentLog(caseId, cases.getTitle(), CaseDocumentLogOptTypeEnum.UPDATE.getCode(), CaseAiConstants.CASE_DOC_DELETE_INTERFACE_NAME,
params, "接口调用异常: " + e.getMessage(),
CaseDocumentLogRunStatusEnum.COMPLETED.getCode(), CaseDocumentLogOptStatusEnum.FAILED.getCode(), CaseDocumentLogCaseStatusEnum.FAILED.getCode(), null);
if (attempt == deleteMaxRetries) {
// 最后一次尝试仍然异常
log.error("删除案例文档最终失败,已重试{}次", deleteMaxRetries);
return false;
}
// 继续下一次重试
} }
} catch (Exception e) {
// 接口调用异常
log.error("删除案例文档接口调用异常,第{}次尝试", attempt, e);
saveCaseDocumentLog(caseId, cases.getTitle(), CaseDocumentLogOptTypeEnum.UPDATE.getCode(), CaseAiConstants.CASE_DOC_DELETE_INTERFACE_NAME,
params, "接口调用异常: " + e.getMessage(),
CaseDocumentLogRunStatusEnum.COMPLETED.getCode(), CaseDocumentLogOptStatusEnum.FAILED.getCode(), CaseDocumentLogCaseStatusEnum.FAILED.getCode(), null);
if (attempt == deleteMaxRetries) {
// 最后一次尝试仍然异常
log.error("删除案例文档最终失败,已重试{}次", deleteMaxRetries);
return false;
}
// 继续下一次重试
} }
} }
@@ -576,6 +578,16 @@ public class CaseKnowledgeServiceImpl implements ICaseKnowledgeService {
} }
String uploadUrl = caseAiProperties.getBaseUrl() + "/apigateway/knowledge/v1/file/upload"; String uploadUrl = caseAiProperties.getBaseUrl() + "/apigateway/knowledge/v1/file/upload";
// 3. 获取access_token
String accessToken = aiAccessTokenService.getAccessToken();
if (StringUtil.isBlank(accessToken)) {
log.error("上传案例文档失败获取access_token失败");
saveCaseDocumentLog(caseId, cases.getTitle(), CaseDocumentLogOptTypeEnum.UPDATE.getCode(), CaseAiConstants.CASE_DOC_UPLOAD_INTERFACE_NAME,
requestBody.toJSONString(), "上传案例文档失败获取access_token失败",
CaseDocumentLogRunStatusEnum.COMPLETED.getCode(), CaseDocumentLogOptStatusEnum.FAILED.getCode(), CaseDocumentLogCaseStatusEnum.FAILED.getCode(), null);
return false;
}
for (int attempt = 1; attempt <= uploadMaxRetries; attempt++) { for (int attempt = 1; attempt <= uploadMaxRetries; attempt++) {
log.info("上传案例文档第{}次尝试caseId: {}", attempt, caseId); log.info("上传案例文档第{}次尝试caseId: {}", attempt, caseId);