Procházet zdrojové kódy

打标结果反馈接口更新

2643616413 před 1 dnem
rodič
revize
059022a0ac

+ 7 - 24
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/controller/FastApiController.java

@@ -56,44 +56,27 @@ public class FastApiController {
         }
     }
 
-    @ApiOperationType("AI打标反馈")
+    @ApiOperationType("AI 打标反馈")
     @PostMapping("/feedback")
-    public Result<AiTaggingResponseVo> feedback(
-            @RequestParam(required = false) String userId,
-            @RequestParam(required = false) String userNm,
-            @RequestParam(required = true) String feedback,
-            @RequestParam(required = false) String contractNo,
-            @RequestParam(required = false) String userOrg,
-            @RequestParam(required = false) String userEndpoint,
-            @RequestParam(required = true) String businessAttr) {
+    public Result<AiTaggingResponseVo> feedback(@RequestBody AiTaggingFeedbackRequestDto request) {
         try {
-            log.info("收到AI打标反馈请求: userId={}, businessAttr={}, feedback={}", userId, businessAttr, feedback);
+            log.info("收到 AI 打标反馈请求:userId={}, businessAttr={}, feedback={}",
+                    request.getUserId(), request.getBusinessAttr(), request.getFeedback());
 
-            AiTaggingFeedbackRequestDto request = new AiTaggingFeedbackRequestDto();
-
-            // 设置用户信息 - 优先使用登录信息,否则使用默认值
+            // 如果未设置用户信息,使用登录信息
             String currentUserId = AuthContextUtil.getCurrentUser();
             String currentUserName = AuthContextUtil.getCurrentUserName();
 
             if (currentUserId != null && currentUserName != null) {
                 request.setUserId(currentUserId);
                 request.setUserNm(currentUserName);
-            } else {
-                request.setUserId(userId != null ? userId : "无登录测试ID");
-                request.setUserNm(userNm != null ? userNm : "无登录测试");
             }
 
-            request.setFeedback(feedback);
-            request.setContractNo(contractNo);
-            request.setUserOrg(userOrg);
-            request.setUserEndpoint(userEndpoint);
-            request.setBusinessAttr(businessAttr);
-
             AiTaggingResponseVo response = fastApiService.feedback(request);
             return Result.success(response);
         } catch (Exception e) {
-            log.error("AI打标反馈接口调用失败", e);
-            return Result.error("500", "AI打标反馈接口调用失败: " + e.getMessage());
+            log.error("AI 打标反馈接口调用失败", e);
+            return Result.error("500", "AI 打标反馈接口调用失败:" + e.getMessage());
         }
     }
 }

+ 11 - 3
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/dto/fastapidto/AiTaggingFeedbackRequestDto.java

@@ -1,5 +1,6 @@
 package cn.com.yusys.yusp.domain.dto.fastapidto;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -7,29 +8,36 @@ import lombok.Data;
 import javax.validation.constraints.NotBlank;
 
 @Data
-@ApiModel("AI打标反馈请求")
+@ApiModel("AI 打标反馈请求")
 public class AiTaggingFeedbackRequestDto {
 
-    @ApiModelProperty(value = "用户ID", required = false)
+    @JsonProperty("user_id")
+    @ApiModelProperty(value = "用户 ID", required = false)
     private String userId;
 
+    @JsonProperty("user_nm")
     @ApiModelProperty(value = "用户姓名", required = false)
     private String userNm;
 
     @NotBlank(message = "反馈结果不能为空")
-    @ApiModelProperty(value = "反馈结果(agree/reject)", required = true)
+    @JsonProperty("feedback")
+    @ApiModelProperty(value = "反馈结果 (agree/reject)", required = true)
     private String feedback;
 
+    @JsonProperty("contract_no")
     @ApiModelProperty(value = "合同编号", required = false)
     private String contractNo;
 
+    @JsonProperty("user_org")
     @ApiModelProperty(value = "用户机构", required = false)
     private String userOrg;
 
+    @JsonProperty("user_endpoint")
     @ApiModelProperty(value = "用户终端", required = false)
     private String userEndpoint;
 
     @NotBlank(message = "业务属性不能为空")
+    @JsonProperty("business_attr")
     @ApiModelProperty(value = "业务属性", required = true)
     private String businessAttr;
 }

+ 79 - 38
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/service/impl/FastApiServiceImpl.java

@@ -87,52 +87,93 @@ public class FastApiServiceImpl implements FastApiService {
     }
 
 
-    @Override
-    public AiTaggingResponseVo feedback(AiTaggingFeedbackRequestDto request) {
-        StringBuilder urlBuilder = new StringBuilder(fastApiConfig.getUrl()).append(FEEDBACK_PATH);
-
-        // 构造 GET 请求参数
-        boolean hasParams = false;
+//    @Override
+//    public AiTaggingResponseVo feedback(AiTaggingFeedbackRequestDto request) {
+//        StringBuilder urlBuilder = new StringBuilder(fastApiConfig.getUrl()).append(FEEDBACK_PATH);
+//
+//        // 构造 GET 请求参数
+//        boolean hasParams = false;
+//
+//        if (request.getUserId() != null && !request.getUserId().isEmpty()) {
+//            urlBuilder.append(hasParams ? "&" : "?").append("user_id=").append(encodeParam(request.getUserId()));
+//            hasParams = true;
+//        }
+//
+//        if (request.getUserNm() != null && !request.getUserNm().isEmpty()) {
+//            urlBuilder.append(hasParams ? "&" : "?").append("user_nm=").append(encodeParam(request.getUserNm()));
+//            hasParams = true;
+//        }
+//
+//        // feedback 是必填参数
+//        urlBuilder.append(hasParams ? "&" : "?").append("feedback=").append(encodeParam(request.getFeedback()));
+//        hasParams = true;
+//
+//        if (request.getContractNo() != null && !request.getContractNo().isEmpty()) {
+//            urlBuilder.append(hasParams ? "&" : "?").append("contract_no=").append(encodeParam(request.getContractNo()));
+//            hasParams = true;
+//        }
+//
+//        if (request.getUserOrg() != null && !request.getUserOrg().isEmpty()) {
+//            urlBuilder.append(hasParams ? "&" : "?").append("user_org=").append(encodeParam(request.getUserOrg()));
+//            hasParams = true;
+//        }
+//
+//        if (request.getUserEndpoint() != null && !request.getUserEndpoint().isEmpty()) {
+//            urlBuilder.append(hasParams ? "&" : "?").append("user_endpoint=").append(encodeParam(request.getUserEndpoint()));
+//            hasParams = true;
+//        }
+//
+//        // business_attr 是必填参数
+//        urlBuilder.append(hasParams ? "&" : "?").append("business_attr=").append(encodeParam(request.getBusinessAttr()));
+//
+//        String url = urlBuilder.toString();
+//        log.info("调用 AI 打标反馈接口:{}", url);
+//
+//        try (CloseableHttpClient httpClient = createHttpClient()) {
+//            HttpGet httpGet = new HttpGet(url);
+//
+//            try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
+//                String responseBody = EntityUtils.toString(response.getEntity(), "UTF-8");
+//                log.info("AI 打标反馈接口响应:{}", responseBody);
+//
+//                return JSON.parseObject(responseBody, AiTaggingResponseVo.class);
+//            }
+//        } catch (Exception e) {
+//            log.error("调用 AI 打标反馈接口失败", e);
+//            AiTaggingResponseVo errorResponse = new AiTaggingResponseVo();
+//            errorResponse.setCode("500");
+//            errorResponse.setMessage("调用 AI 打标反馈接口失败:" + e.getMessage());
+//            return errorResponse;
+//        }
+//    }
 
-        if (request.getUserId() != null && !request.getUserId().isEmpty()) {
-            urlBuilder.append(hasParams ? "&" : "?").append("user_id=").append(encodeParam(request.getUserId()));
-            hasParams = true;
-        }
-
-        if (request.getUserNm() != null && !request.getUserNm().isEmpty()) {
-            urlBuilder.append(hasParams ? "&" : "?").append("user_nm=").append(encodeParam(request.getUserNm()));
-            hasParams = true;
-        }
 
-        // feedback 是必填参数
-        urlBuilder.append(hasParams ? "&" : "?").append("feedback=").append(encodeParam(request.getFeedback()));
-        hasParams = true;
-
-        if (request.getContractNo() != null && !request.getContractNo().isEmpty()) {
-            urlBuilder.append(hasParams ? "&" : "?").append("contract_no=").append(encodeParam(request.getContractNo()));
-            hasParams = true;
-        }
+    @Override
+    public AiTaggingResponseVo feedback(AiTaggingFeedbackRequestDto request) {
+        String url = fastApiConfig.getUrl() + FEEDBACK_PATH;
 
-        if (request.getUserOrg() != null && !request.getUserOrg().isEmpty()) {
-            urlBuilder.append(hasParams ? "&" : "?").append("user_org=").append(encodeParam(request.getUserOrg()));
-            hasParams = true;
-        }
+        log.info("调用 AI 打标反馈接口:{}", url);
 
-        if (request.getUserEndpoint() != null && !request.getUserEndpoint().isEmpty()) {
-            urlBuilder.append(hasParams ? "&" : "?").append("user_endpoint=").append(encodeParam(request.getUserEndpoint()));
-            hasParams = true;
-        }
+        try (CloseableHttpClient httpClient = createHttpClient()) {
+            HttpPost httpPost = new HttpPost(url);
+            httpPost.setHeader("Content-Type", "application/json");
 
-        // business_attr 是必填参数
-        urlBuilder.append(hasParams ? "&" : "?").append("business_attr=").append(encodeParam(request.getBusinessAttr()));
+            // 手动构造符合 FastAPI 要求的 JSON 请求体(使用下划线格式)
+            com.alibaba.fastjson.JSONObject jsonBody = new com.alibaba.fastjson.JSONObject();
+            jsonBody.put("user_id", request.getUserId());
+            jsonBody.put("user_nm", request.getUserNm());
+            jsonBody.put("feedback", request.getFeedback());
+            jsonBody.put("contract_no", request.getContractNo());
+            jsonBody.put("user_org", request.getUserOrg());
+            jsonBody.put("user_endpoint", request.getUserEndpoint());
+            jsonBody.put("business_attr", request.getBusinessAttr());
 
-        String url = urlBuilder.toString();
-        log.info("调用 AI 打标反馈接口:{}", url);
+            String requestBody = jsonBody.toJSONString();
+            log.info("请求体:{}", requestBody);
 
-        try (CloseableHttpClient httpClient = createHttpClient()) {
-            HttpGet httpGet = new HttpGet(url);
+            httpPost.setEntity(new StringEntity(requestBody, "UTF-8"));
 
-            try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
+            try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
                 String responseBody = EntityUtils.toString(response.getEntity(), "UTF-8");
                 log.info("AI 打标反馈接口响应:{}", responseBody);