mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-12 04:16:51 +08:00
[DAT] 修改update方法调试
This commit is contained in:
@@ -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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user