diff --git a/src/main/java/xuan/controller/TaLuoController.java b/src/main/java/xuan/controller/TaLuoController.java index 643a471..4e93bc0 100644 --- a/src/main/java/xuan/controller/TaLuoController.java +++ b/src/main/java/xuan/controller/TaLuoController.java @@ -1,12 +1,15 @@ package xuan.controller; import org.springframework.web.bind.annotation.*; +import xuan.service.HunYuanAiService; import java.util.*; @RestController @RequestMapping("/api/taluo") public class TaLuoController { + private final HunYuanAiService aiService = new HunYuanAiService(); + private static final List> MAJOR_ARCANA = Arrays.asList( createCard(0, "愚者", "The Fool", "新的开始、冒险、天真、自由", "鲁莽、冲动、不负责任", "代表新的旅程和无限可能"), createCard(1, "魔术师", "The Magician", "创造力、技能、意志力、自信", "欺骗、操纵、缺乏计划", "代表运用技能实现目标"), @@ -142,12 +145,16 @@ public class TaLuoController { selectedCards.add(card); } + String interpretation = generateInterpretation(selectedCards, spreadType, request.getQuestion()); + String aiAnalysis = aiService.chat(buildAiPrompt(selectedCards, spreadType, request.getQuestion())); + Map data = new HashMap<>(); data.put("spreadType", spreadType); data.put("spreadName", getSpreadName(spreadType)); data.put("question", request.getQuestion()); data.put("cards", selectedCards); - data.put("interpretation", generateInterpretation(selectedCards, spreadType, request.getQuestion())); + data.put("interpretation", interpretation); + data.put("aiAnalysis", aiAnalysis); data.put("timestamp", new Date()); result.put("success", true); @@ -269,6 +276,34 @@ public class TaLuoController { return interpretation.toString(); } + private String buildAiPrompt(List> cards, String spreadType, String question) { + StringBuilder prompt = new StringBuilder(); + prompt.append("你是一位专业的塔罗牌占卜师,请根据以下牌面和用户的问题,提供详细的塔罗牌解读分析。\n\n"); + + if (question != null && !question.isEmpty()) { + prompt.append("用户的问题:").append(question).append("\n\n"); + } + + prompt.append("牌面信息:\n"); + for (Map card : cards) { + String name = (String) card.get("name"); + boolean isReversed = (Boolean) card.get("isReversed"); + String positionMeaning = (String) card.get("positionMeaning"); + String meaning = isReversed ? (String) card.get("reversedMeaning") : (String) card.get("uprightMeaning"); + + prompt.append("【").append(positionMeaning).append("】"); + prompt.append(name).append(isReversed ? "(逆位)" : "(正位)").append("\n"); + prompt.append("牌义:").append(meaning).append("\n\n"); + } + + prompt.append("请提供详细的塔罗牌解读分析,包括:\n"); + prompt.append("1. 每张牌的详细解读\n"); + prompt.append("2. 牌面之间的关联分析\n"); + prompt.append("3. 综合建议和指引\n"); + + return prompt.toString(); + } + @GetMapping("/cards") public Map getAllCards() { Map result = new HashMap<>();