diff --git a/ai-analytic-center-api/pom.xml b/ai-analytic-center-api/pom.xml index 6ac34ab..26e1e34 100644 --- a/ai-analytic-center-api/pom.xml +++ b/ai-analytic-center-api/pom.xml @@ -19,7 +19,10 @@ org.springframework.cloud spring-cloud-starter-openfeign - + + org.springframework.retry + spring-retry + com.alibaba.cloud diff --git a/ai-analytic-center-api/src/main/java/com/volvo/ai/analytic/center/feign/DiFyFeign.java b/ai-analytic-center-api/src/main/java/com/volvo/ai/analytic/center/feign/DiFyFeign.java index 46595e2..1cadd7f 100644 --- a/ai-analytic-center-api/src/main/java/com/volvo/ai/analytic/center/feign/DiFyFeign.java +++ b/ai-analytic-center-api/src/main/java/com/volvo/ai/analytic/center/feign/DiFyFeign.java @@ -3,6 +3,8 @@ package com.volvo.ai.analytic.center.feign; import com.alibaba.fastjson.JSONObject; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; +import org.springframework.retry.annotation.Backoff; +import org.springframework.retry.annotation.Retryable; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -16,6 +18,12 @@ public interface DiFyFeign { , produces = MediaType.APPLICATION_JSON_VALUE) JSONObject runWorkflows(@RequestHeader(value = "Authorization") String authorization, @RequestBody Map map); + @Retryable(maxAttempts = 1, backoff = @Backoff(delay = 1000)) + @PostMapping(value = "v1/workflows/run" + , consumes = MediaType.APPLICATION_JSON_VALUE + , produces = MediaType.APPLICATION_JSON_VALUE) + JSONObject runWorkflowsRetry(@RequestHeader(value = "Authorization") String authorization, @RequestBody Map map); + @PostMapping(value = "/v1/files/upload" , consumes = MediaType.MULTIPART_FORM_DATA_VALUE) diff --git a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/DiFyService.java b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/DiFyService.java index 7159e60..ead8f53 100644 --- a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/DiFyService.java +++ b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/DiFyService.java @@ -8,6 +8,8 @@ public interface DiFyService { public Object getDiFyObject(DiFyReq diFyReq); + public Object getDiFyObjectRetry(DiFyReq diFyReq); + public JSONObject executeDifyFlow(DiFyReq diFyReq, String businessType, String businessData, String aiAnalysisRequestId); public JSONObject executeDifyFlow(DiFyReq diFyReq); diff --git a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/ClaimVerificationServiceImpl.java b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/ClaimVerificationServiceImpl.java index 98a8333..953e2e2 100644 --- a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/ClaimVerificationServiceImpl.java +++ b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/ClaimVerificationServiceImpl.java @@ -163,7 +163,7 @@ public class ClaimVerificationServiceImpl implements ClaimVerificationService { diFyReq.setFlowId(verificationToken); diFyReq.setInputs(parsedAudit); //调用dify 工作流 - diFyObject = (JSONObject) diFyService.getDiFyObject(diFyReq); + diFyObject = (JSONObject) diFyService.getDiFyObjectRetry(diFyReq); //处理结果并推送MQ if (diFyObject == null) { log.error("售后索赔检核审计报告dify返回结果为空"); diff --git a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/DiFyServiceImpl.java b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/DiFyServiceImpl.java index 024fccc..f112d2f 100644 --- a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/DiFyServiceImpl.java +++ b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/DiFyServiceImpl.java @@ -48,6 +48,23 @@ public class DiFyServiceImpl implements DiFyService{ return ""; } + @Override + public Object getDiFyObjectRetry(DiFyReq diFyReq) { + Map map = new HashMap<>(); + map.put("inputs",diFyReq.getInputs()); + map.put("response_mode","blocking"); + map.put("user",diFyReq.getUser()); + log.info("请求DiFy入参-Retry:{}",JSON.toJSONString(map)); + JSONObject difyResult = diFyFeign.runWorkflowsRetry("Bearer "+diFyReq.getFlowId(),map); + log.info("请求DiFy响应结果:{}",difyResult.toJSONString()); + JSONObject data = difyResult.getJSONObject("data"); + if (data != null && "succeeded".equals(data.get("status"))){ + JSONObject outputs = data.getJSONObject("outputs"); + return outputs; + } + return ""; + } + @Override public JSONObject executeDifyFlow(DiFyReq diFyReq, String businessType, String businessData, String oldAiAnalysisRequestId) { String aiAnalysisRequestId = StringUtils.isEmpty(oldAiAnalysisRequestId)? AiAnalysisUtils.getAiAnalysisRequestId(businessType):oldAiAnalysisRequestId;