diff --git a/src/main/java/xuan/controller/TaLuoController.java b/src/main/java/xuan/controller/TaLuoController.java index 4e93bc0..34954b1 100644 --- a/src/main/java/xuan/controller/TaLuoController.java +++ b/src/main/java/xuan/controller/TaLuoController.java @@ -1,15 +1,12 @@ 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", "创造力、技能、意志力、自信", "欺骗、操纵、缺乏计划", "代表运用技能实现目标"), @@ -145,16 +142,13 @@ 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", interpretation); - data.put("aiAnalysis", aiAnalysis); + data.put("interpretation", generateInterpretation(selectedCards, spreadType, request.getQuestion())); + data.put("aiAnalysis", generateAiAnalysis(selectedCards, spreadType, request.getQuestion())); data.put("timestamp", new Date()); result.put("success", true); @@ -276,32 +270,59 @@ public class TaLuoController { return interpretation.toString(); } - private String buildAiPrompt(List> cards, String spreadType, String question) { - StringBuilder prompt = new StringBuilder(); - prompt.append("你是一位专业的塔罗牌占卜师,请根据以下牌面和用户的问题,提供详细的塔罗牌解读分析。\n\n"); + private String generateAiAnalysis(List> cards, String spreadType, String question) { + StringBuilder analysis = new StringBuilder(); + + analysis.append("## 塔罗牌深度解读\n\n"); if (question != null && !question.isEmpty()) { - prompt.append("用户的问题:").append(question).append("\n\n"); + analysis.append("**您的问题:**").append(question).append("\n\n"); } - prompt.append("牌面信息:\n"); + analysis.append("### 牌面分析\n\n"); + for (Map card : cards) { String name = (String) card.get("name"); boolean isReversed = (Boolean) card.get("isReversed"); - String positionMeaning = (String) card.get("positionMeaning"); + String position = (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"); + analysis.append("**").append(position).append(" - ").append(name).append("**"); + analysis.append(isReversed ? "(逆位)\n\n" : "(正位)\n\n"); + analysis.append(meaning).append("\n\n"); } - prompt.append("请提供详细的塔罗牌解读分析,包括:\n"); - prompt.append("1. 每张牌的详细解读\n"); - prompt.append("2. 牌面之间的关联分析\n"); - prompt.append("3. 综合建议和指引\n"); + analysis.append("### 综合解读\n\n"); - return prompt.toString(); + if ("single".equals(spreadType)) { + Map card = cards.get(0); + String name = (String) card.get("name"); + boolean isReversed = (Boolean) card.get("isReversed"); + + analysis.append("这张").append(name).append("为您揭示了当前的能量状态。"); + if (isReversed) { + analysis.append("逆位的出现提示您需要关注内在的阻碍和挑战,建议您停下来反思,寻找内在的平衡。"); + } else { + analysis.append("正位的出现表示能量流动顺畅,是采取行动的好时机。"); + } + } else if ("three".equals(spreadType)) { + analysis.append("三张牌阵为您展示了时间的流动:\n\n"); + analysis.append("- **过去**:影响了现在的因素\n"); + analysis.append("- **现在**:当前的状态和挑战\n"); + analysis.append("- **未来**:可能的发展方向\n\n"); + analysis.append("请结合三张牌的含义,理解事情的发展脉络,做出明智的选择。"); + } else if ("celtic".equals(spreadType)) { + analysis.append("凯尔特十字牌阵为您提供了全面的视角:\n\n"); + analysis.append("- **核心区域(1-6)**:揭示问题的核心和内在动力\n"); + analysis.append("- **延伸区域(7-10)**:展示外部环境和未来走向\n\n"); + analysis.append("请仔细体会每张牌的含义,它们共同为您描绘出完整的图景。"); + } + + analysis.append("\n### 建议\n\n"); + analysis.append("塔罗牌是一面镜子,反映您内心的智慧和直觉。请信任自己的判断,"); + analysis.append("将牌面的启示与实际情况结合,做出最适合自己的决定。"); + + return analysis.toString(); } @GetMapping("/cards")