Просмотр исходного кода

feat: AiGateway generateInnateReading 真实HTTP实现

Xiaogang Liao 2 месяцев назад
Родитель
Сommit
a1cb6d0288
1 измененных файлов с 25 добавлено и 2 удалено
  1. 25 2
      cfc-backend/src/main/java/com/etotem/cfc/service/AiGateway.java

+ 25 - 2
cfc-backend/src/main/java/com/etotem/cfc/service/AiGateway.java

@@ -227,10 +227,33 @@ public class AiGateway {
     }
     }
 
 
     /**
     /**
-     * 先天画像 AI 解读(stub,任务8完善为真实HTTP调用)
+     * 先天画像 AI 解读:调用 LangGraph innate_portrait_graph
+     * @param portrait 先天画像数据
+     * @return 含 "reading" 字段的 Map;失败返回 null(调用方降级模板)
      */
      */
     public Map<String, Object> generateInnateReading(Object portrait) {
     public Map<String, Object> generateInnateReading(Object portrait) {
-        return null;
+        if (!enabled || isCircuitOpen()) return null;
+        try {
+            ObjectNode body = objectMapper.createObjectNode();
+            body.set("portrait", objectMapper.valueToTree(portrait));
+
+            HttpEntity<String> entity = new HttpEntity<>(body.toString(), createJsonHeaders());
+            String url = baseUrl + "/api/v1/innate/reading";
+
+            ResponseEntity<String> response = restTemplate.postForEntity(url, entity, String.class);
+            if (response.getStatusCode().is2xxSuccessful() && response.getBody() != null) {
+                JsonNode root = objectMapper.readTree(response.getBody());
+                Map<String, Object> result = new LinkedHashMap<>();
+                result.put("reading", root.has("reading") ? root.get("reading").asText() : "");
+                consecutiveFailures.set(0);
+                return result;
+            }
+            return null;
+        } catch (Exception e) {
+            log.warn("AiGateway generateInnateReading 调用失败: {}", e.getMessage());
+            recordFailure();
+            return null;
+        }
     }
     }
 
 
     private List<Map<String, Object>> parseTasks(JsonNode tasksNode) {
     private List<Map<String, Object>> parseTasks(JsonNode tasksNode) {