增加文件分类逻辑

增加未脱敏字段传入
This commit is contained in:
jie.lu
2025-08-11 09:57:51 +08:00
parent 16a209775f
commit 871df8fd8c

View File

@@ -61,6 +61,9 @@ public class ClaimVerificationServiceImpl implements ClaimVerificationService {
@Value("${dify.claimVerification.verificationToken}")
private String verificationToken;
@Value("${dify.claimVerification.fileToken}")
private String fileClassifyToken;
@Value("${rocketmq.producer.claimVerification}")
private String topic;
@@ -186,8 +189,52 @@ public class ClaimVerificationServiceImpl implements ClaimVerificationService {
}
} else if (claimVerificationFileAnalysisDTO.getBusinessType().equals(BusinessTypeEnum.CLAIM_VERIFICATION_CLASSIFY_APP.getCode())) {
//文件分类
List<String> fileObsPath = claimVerificationFileAnalysisDTO.getFileObsPath();
List<HashMap<String, String>> fileIds = new ArrayList<>();
log.info("文件分类文件ID:{}", fileObsPath);
//上传所有文件到dify
uploadFileToObs(fileObsPath, fileIds);
//根据业务线标识和文件配置分类查询配置
List<AiAnalyticBusinessConfig> aiAnalyticBusinessConfigs = aiAnalyticBusinessConfigMapper.selectList(
Wrappers.<AiAnalyticBusinessConfig>lambdaQuery()
.eq(AiAnalyticBusinessConfig::getBusinessLine, BusinessTypeEnum.CLAIM_VERIFICATION.getCode())
.eq(AiAnalyticBusinessConfig::getFileConfigCategory, claimVerificationFileAnalysisDTO.getFileType())
.eq(AiAnalyticBusinessConfig::getIsDeleted, 0)
.eq(AiAnalyticBusinessConfig::getConfigVersion, 1)
);
//组装文件分析workflow入参
JSONArray files = new JSONArray();
for (HashMap<String, String> fileToDifyDTO : fileIds) {
JSONObject object = new JSONObject();
object.put(ClaimVerificationConstant.UPLOAD_FILE_ID, fileToDifyDTO.get(ClaimVerificationConstant.ID));
object.put(ClaimVerificationConstant.TYPE, fileToDifyDTO.get(ClaimVerificationConstant.TYPE));
object.put(ClaimVerificationConstant.TRANSFER_METHOD, ClaimVerificationConstant.LOCAL_FILE);
files.add(object);
}
//构建入参
JSONObject fileToDifyDTO = buildFileToDifyParameter(files, claimVerificationFileAnalysisDTO, aiAnalyticBusinessConfigs);
//根据aiAnalysisRequestId更新请求日志表的difyRequest字段
syncUpdateDiFyRequest(claimVerificationFileAnalysisDTO.toString(), aiAnalysisRequestId);
syncUpdateDiFyRequest(fileToDifyDTO.toString(), aiAnalysisRequestId);
DiFyReq diFyReq = new DiFyReq();
diFyReq.setUser(BusinessTypeEnum.CLAIM_VERIFICATION.getCode());
diFyReq.setFlowId(fileClassifyToken);
diFyReq.setInputs(fileToDifyDTO);
//调用dify 工作流
diFyObject = (JSONObject) diFyService.getDiFyObject(diFyReq);
//处理结果并推送MQ
if (diFyObject == null) {
log.error(" 售后索赔检核文件分类dify返回结果为空");
saveException("售后索赔检核文件分类dify返回结果为空", aiAnalysisRequestId, null);
} else {
//解析dify返回结果
JSONObject data = analyzeParameters(diFyObject, claimVerificationFileAnalysisDTO, aiAnalysisRequestId);
//返回结果推送到Newbie的MQ
rocketMQTemplate.syncSend(topic, data);
log.info("索赔检核文件分类发送回调MQ完成: {}", data);
}
//异步更新请求日志表的difyResponse字段
syncUpdateDiFyResponse(diFyObject, aiAnalysisRequestId);
} else {
saveException("售后索赔检核业务类型错误", aiAnalysisRequestId, null);
}
@@ -247,6 +294,11 @@ public class ClaimVerificationServiceImpl implements ClaimVerificationService {
runMaskingRuleInput.setOldStr(audit.toString());
String corpusChat = dataMaskingRuleService.runMaskingRule(runMaskingRuleInput);
JSONObject parsedAudit = JSON.parseObject(corpusChat);
parsedAudit.put("diagnosticUndesensitized", claimVerificationFileAnalysisDTO.getDiagnosticReport() == null ? " " :claimVerificationFileAnalysisDTO.getDiagnosticReport().toString());
parsedAudit.put("preCheckUndesensitized", claimVerificationFileAnalysisDTO.getPreCheckReport() == null ? " " :claimVerificationFileAnalysisDTO.getPreCheckReport().toString());
parsedAudit.put("dtcUndesensitized", claimVerificationFileAnalysisDTO.getDtcReport() == null ? " " :claimVerificationFileAnalysisDTO.getDtcReport().toString());
parsedAudit.put("warrantyUndesensitized", claimVerificationFileAnalysisDTO.getWarrantyReport() == null ? " " :claimVerificationFileAnalysisDTO.getWarrantyReport().toString());
return parsedAudit;
}