diff --git a/app.json b/app.json
index 08b036c..dd75728 100644
--- a/app.json
+++ b/app.json
@@ -5,7 +5,8 @@
"pages/knowledge/index",
"pages/knowledge/list",
"pages/knowledge/article",
- "pages/webview/index"
+ "pages/webview/index",
+ "pages/privacy/privacy"
],
"window": {
"navigationBarTitleText": "我的第一个小程序"
diff --git a/pages/home/home.js b/pages/home/home.js
index 9db7097..8735b40 100644
--- a/pages/home/home.js
+++ b/pages/home/home.js
@@ -2,6 +2,16 @@ const { getPoints, checkDailyReward, canWatchAd, getTodayAdCount, rewardFromAd,
const { getDailyAdvice } = require('../../utils/dailyAdvice');
const { getDailyArticle, getCategories } = require('../../utils/knowledgeData');
+/**
+ * 🔧 开发模式配置
+ *
+ * DEV_MODE = true: 使用模拟广告(开发测试)
+ * DEV_MODE = false: 使用真实广告(正式上线)
+ *
+ * ⚠️ 上线前务必改为 false!
+ */
+const DEV_MODE = true; // 👈 开发时设为 true,上线前改为 false
+
Page({
data: {
currentPoints: 0,
@@ -21,6 +31,94 @@ Page({
onLoad: function () {
// 加载每日内容
this.loadDailyContent();
+
+ // 初始化激励视频广告
+ this.initRewardedAd();
+ },
+
+ /**
+ * 初始化激励视频广告
+ * ⚠️ 需要在微信公众平台开通流量主并获取广告位ID
+ */
+ initRewardedAd: function () {
+ // 🔧 开发模式:跳过真实广告初始化
+ if (DEV_MODE) {
+ console.log('[广告系统] 🔧 开发模式:使用模拟广告');
+ return;
+ }
+
+ // 检查是否支持激励视频广告
+ if (!wx.createRewardedVideoAd) {
+ console.warn('[广告系统] 当前微信版本不支持激励视频广告');
+ return;
+ }
+
+ try {
+ // 创建激励视频广告实例
+ // ⚠️ TODO: 替换为你的真实广告位ID
+ this.rewardedAd = wx.createRewardedVideoAd({
+ adUnitId: 'adunit-xxxxxxxxxxxxxxxx' // 请替换为你的广告位ID
+ });
+
+ // 监听广告关闭事件
+ this.rewardedAd.onClose((res) => {
+ console.log('[广告系统] 广告关闭回调:', res);
+
+ // 用户看完广告(isEnded = true 表示正常播放结束)
+ if (res && res.isEnded) {
+ console.log('[广告系统] 用户完整观看广告');
+ this.handleAdReward();
+ } else {
+ // 用户中途关闭广告
+ console.log('[广告系统] 用户未看完广告');
+ wx.showToast({
+ title: '未看完广告,无法获得积分',
+ icon: 'none',
+ duration: 2000
+ });
+ }
+ });
+
+ // 监听广告加载错误
+ this.rewardedAd.onError((err) => {
+ console.error('[广告系统] 广告加载失败:', err);
+ });
+
+ console.log('[广告系统] 激励视频广告初始化成功');
+ } catch (error) {
+ console.error('[广告系统] 初始化失败:', error);
+ }
+ },
+
+ /**
+ * 处理广告奖励
+ */
+ handleAdReward: function () {
+ const result = rewardFromAd();
+
+ if (result.success) {
+ // 刷新积分显示
+ this.setData({
+ currentPoints: getPoints()
+ });
+
+ // 显示奖励提示
+ const message = `${result.message}!今日还可观看 ${result.remainingCount} 次`;
+ wx.showToast({
+ title: message,
+ icon: 'success',
+ duration: 2500
+ });
+
+ console.log('[广告系统] 奖励发放成功:', result);
+ } else {
+ // 显示失败提示(通常是次数用完)
+ wx.showToast({
+ title: result.message,
+ icon: 'none',
+ duration: 2000
+ });
+ }
},
onShow: function () {
@@ -140,6 +238,13 @@ Page({
}, 300);
},
+ // 跳转到隐私政策
+ goToPrivacy: function () {
+ wx.navigateTo({
+ url: '/pages/privacy/privacy'
+ });
+ },
+
// 显示积分说明
showPointsInfo: function () {
try {
@@ -185,29 +290,68 @@ Page({
}
},
- // 观看广告获取积分(模拟)
+ // 观看广告获取积分(支持开发模式)
watchAdForPoints: function () {
- const result = rewardFromAd();
-
- if (result.success) {
- // 刷新积分显示
- this.setData({
- currentPoints: getPoints()
- });
-
- // 显示奖励提示
+ // 检查是否还有观看次数
+ if (!canWatchAd()) {
wx.showToast({
- title: result.message,
- icon: 'success',
- duration: 2000
- });
- } else {
- // 显示失败提示
- wx.showToast({
- title: result.message,
+ title: '今日广告次数已用完',
icon: 'none',
duration: 2000
});
+ return;
}
+
+ // 🔧 开发模式:模拟广告播放
+ if (DEV_MODE) {
+ console.log('[广告系统] 🔧 开发模式:模拟广告播放中...');
+
+ wx.showLoading({
+ title: '广告播放中...',
+ mask: true
+ });
+
+ // 模拟广告播放时长(1.5秒)
+ setTimeout(() => {
+ wx.hideLoading();
+ console.log('[广告系统] 🔧 开发模式:模拟广告播放完成');
+ this.handleAdReward();
+ }, 1500);
+
+ return;
+ }
+
+ // 生产模式:播放真实广告
+ // 检查广告实例是否存在
+ if (!this.rewardedAd) {
+ wx.showToast({
+ title: '广告功能暂不可用',
+ icon: 'none',
+ duration: 2000
+ });
+ console.warn('[广告系统] 广告实例不存在');
+ return;
+ }
+
+ // 显示广告
+ this.rewardedAd.show()
+ .catch((err) => {
+ console.log('[广告系统] 广告未加载,尝试重新加载:', err);
+
+ // 广告可能未加载,先加载再显示
+ this.rewardedAd.load()
+ .then(() => {
+ console.log('[广告系统] 广告加载成功,开始播放');
+ return this.rewardedAd.show();
+ })
+ .catch((loadErr) => {
+ console.error('[广告系统] 广告加载失败:', loadErr);
+ wx.showToast({
+ title: '广告加载失败,请稍后再试',
+ icon: 'none',
+ duration: 2000
+ });
+ });
+ });
}
});
diff --git a/pages/home/home.wxml b/pages/home/home.wxml
index a5ca5ff..c694de8 100644
--- a/pages/home/home.wxml
+++ b/pages/home/home.wxml
@@ -41,6 +41,10 @@
🎯
积分说明
+
+ 🔒
+ 隐私政策
+
diff --git a/pages/index/index.js b/pages/index/index.js
index e9991f6..4f7eafb 100644
--- a/pages/index/index.js
+++ b/pages/index/index.js
@@ -1,3 +1,8 @@
+// ===== 积分系统开关 =====
+// 上架时设置为 true, 测试时设置为 false
+const ENABLE_POINTS = false;
+// =========================
+
// AI 配置 (建议后续迁移至后端以保证 API Key 安全)
const DEEPSEEK_API_KEY = 'sk-f659b4c3aa954baaa6cbdbd5cae0b7d1'; // 请在此处替换您的 API Key
const DEEPSEEK_BASE_URL = 'https://api.deepseek.com/chat/completions';
@@ -153,7 +158,7 @@ const TAROT_PROMPT_ENHANCED = `📏 解读稳定规则(高优先级执行)
]
}`;
-// --- 牌阵定义 ---
+// 牌阵配置 - 包含所有可用牌阵
const SPREADS = [
{
"id": "one_card_guidance",
@@ -161,43 +166,68 @@ const SPREADS = [
"cardCount": 1,
"cost": 1,
"positions": ["当下的指引"],
- "description": "为你此刻的状态提供一个温和而清晰的方向提示。",
+ "description": "为你此刻的状态提供一个温和而清晰的方向提示",
+ "tags": ["综合"],
"aiSchema": ["core_theme", "current_state", "action_advice"]
},
{
"id": "three_time_flow",
- "name": "过去 · 现在 · 未来",
+ "name": "过去·现在·未来",
"cardCount": 3,
"cost": 3,
"positions": ["过去", "现在", "未来"],
- "description": "帮助你理解事情的发展过程与可能走向。",
+ "description": "帮助你理解事情的发展过程与可能走向",
+ "tags": ["综合", "决策"],
"aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
},
{
"id": "three_problem_solution",
- "name": "问题 · 阻碍 · 建议",
+ "name": "问题·阻碍·建议",
"cardCount": 3,
"cost": 3,
"positions": ["问题核心", "当前阻碍", "行动建议"],
- "description": "聚焦关键问题,找出当下最可行的应对方式。",
+ "description": "聚焦关键问题,找出当下最可行的应对方式",
+ "tags": ["决策"],
"aiSchema": ["core_theme", "current_state", "action_advice"]
},
+ {
+ "id": "love_spark",
+ "name": "爱情火花",
+ "cardCount": 3,
+ "cost": 3,
+ "positions": ["你的感受", "对方的感受", "关系潜力"],
+ "description": "探索彼此的真实感受与这段关系的可能性",
+ "tags": ["爱情"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
{
"id": "two_choice_decision",
"name": "二选一抉择",
"cardCount": 4,
"cost": 4,
"positions": ["选择A的发展", "选择A的结果", "选择B的发展", "选择B的结果"],
- "description": "对比两种选择的潜在走向,辅助理性决策。",
+ "description": "对比两种选择的潜在走向,辅助理性决策",
+ "tags": ["决策"],
"aiSchema": ["core_theme", "potential_influence", "action_advice"]
},
+ {
+ "id": "relationship_healing",
+ "name": "关系修复",
+ "cardCount": 4,
+ "cost": 4,
+ "positions": ["问题根源", "你的责任", "对方的责任", "修复方向"],
+ "description": "深入理解关系裂痕,找到和解与修复的路径",
+ "tags": ["爱情"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
{
"id": "five_situation_analysis",
"name": "现状分析",
"cardCount": 5,
"cost": 5,
"positions": ["现状", "内在因素", "外在影响", "行动方向", "可能结果"],
- "description": "从内外层面拆解局势,明确下一步行动。",
+ "description": "从内外层面拆解局势,明确下一步行动",
+ "tags": ["事业", "综合"],
"aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
},
{
@@ -206,7 +236,28 @@ const SPREADS = [
"cardCount": 5,
"cost": 5,
"positions": ["你的位置", "对方的位置", "关系现状", "隐藏影响", "未来趋势"],
- "description": "理解一段关系中的互动模式与发展方向。",
+ "description": "理解一段关系中的互动模式与发展方向",
+ "tags": ["爱情"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "destiny_connection",
+ "name": "缘分探索",
+ "cardCount": 5,
+ "cost": 5,
+ "positions": ["前世因缘", "今生相遇", "情感纽带", "考验挑战", "缘分走向"],
+ "description": "探索两人之间的灵性连接与命运安排",
+ "tags": ["爱情"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "career_breakthrough",
+ "name": "职场突破",
+ "cardCount": 5,
+ "cost": 5,
+ "positions": ["当前困境", "优势资源", "潜在机会", "需要克服", "突破方向"],
+ "description": "识别职场瓶颈,找到突破与晋升的关键",
+ "tags": ["事业"],
"aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
},
{
@@ -215,7 +266,8 @@ const SPREADS = [
"cardCount": 5,
"cost": 5,
"positions": ["远古根源", "过去影响", "当下状态", "近期发展", "未来趋势"],
- "description": "追溯事件的时间线,看清发展脉络。",
+ "description": "追溯事件的时间线,看清发展脉络",
+ "tags": ["综合"],
"aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
},
{
@@ -224,7 +276,28 @@ const SPREADS = [
"cardCount": 5,
"cost": 5,
"positions": ["问题本质", "过去原因", "未来发展", "外部资源", "最佳行动"],
- "description": "多角度剖析问题,找到解决之道。",
+ "description": "多角度剖析问题,找到解决之道",
+ "tags": ["决策"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "career_planning",
+ "name": "事业规划",
+ "cardCount": 6,
+ "cost": 6,
+ "positions": ["当前位置", "核心优势", "发展方向", "潜在障碍", "贵人助力", "长期目标"],
+ "description": "全面规划职业发展路径,明确长期目标",
+ "tags": ["事业"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "wealth_analysis",
+ "name": "财运分析",
+ "cardCount": 6,
+ "cost": 6,
+ "positions": ["财务现状", "收入来源", "支出模式", "投资机会", "财务风险", "财富增长"],
+ "description": "深入分析财务状况,找到财富增长的路径",
+ "tags": ["事业"],
"aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
},
{
@@ -233,7 +306,8 @@ const SPREADS = [
"cardCount": 7,
"cost": 7,
"positions": ["当前能量", "内在阻碍", "潜在天赋", "灵性课题", "指导建议", "未来机遇", "最高指引"],
- "description": "深入探索内在世界,获得灵性层面的启发。",
+ "description": "深入探索内在世界,获得灵性层面的启发",
+ "tags": ["深度"],
"aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
},
{
@@ -242,7 +316,8 @@ const SPREADS = [
"cardCount": 7,
"cost": 7,
"positions": ["过去", "现在", "未来", "你的态度", "他人影响", "障碍", "最终结果"],
- "description": "全面了解情况的来龙去脉与未来走向。",
+ "description": "全面了解情况的来龙去脉与未来走向",
+ "tags": ["综合"],
"aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
},
{
@@ -251,7 +326,8 @@ const SPREADS = [
"cardCount": 10,
"cost": 10,
"positions": ["现状", "挑战", "根基", "过去", "可能性", "近期未来", "你的态度", "外部影响", "希望与恐惧", "最终结果"],
- "description": "最经典的综合牌阵,深度解析生命议题。",
+ "description": "最经典的综合牌阵,深度解析生命议题",
+ "tags": ["深度"],
"aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
},
{
@@ -260,11 +336,379 @@ const SPREADS = [
"cardCount": 10,
"cost": 10,
"positions": ["王冠", "智慧", "理解", "慈悲", "严厉", "美丽", "胜利", "荣耀", "基础", "王国"],
- "description": "基于卡巴拉生命之树的深度灵性探索。",
+ "description": "基于卡巴拉生命之树的深度灵性探索",
+ "tags": ["深度"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ // 新增爱情牌阵
+ {
+ "id": "lover_pyramid",
+ "name": "恋人金字塔",
+ "cardCount": 4,
+ "cost": 4,
+ "positions": ["核心关系", "你的状态", "对方状态", "未来发展"],
+ "description": "适合恋人关系 & 互动解析",
+ "tags": ["爱情"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "new_love",
+ "name": "新爱牌阵",
+ "cardCount": 3,
+ "cost": 3,
+ "positions": ["当前状态", "遇见契机", "发展方向"],
+ "description": "适合新的感情 & 遇见新欢,为单身的你或刚分手的你带来新爱提示",
+ "tags": ["爱情"],
+ "aiSchema": ["core_theme", "current_state", "action_advice"]
+ },
+ {
+ "id": "relationship_basic",
+ "name": "人际关系牌阵",
+ "cardCount": 3,
+ "cost": 3,
+ "positions": ["你的想法", "对方想法", "关系走向"],
+ "description": "适合梳理关系 & 拉近距离,回溯结识初衷,梳理人际关系,拉近彼此距离",
+ "tags": ["爱情"],
+ "aiSchema": ["core_theme", "current_state", "action_advice"]
+ },
+ {
+ "id": "love_tree_spread",
+ "name": "爱情树牌阵",
+ "cardCount": 5,
+ "cost": 5,
+ "positions": ["核心问题", "过去影响", "现在状况", "未来趋势", "最终结果"],
+ "description": "适合深度求爱 & 寻找症结,解析前因后果,回溯爱情过往,探究本源核心",
+ "tags": ["爱情"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "love_cross_spread",
+ "name": "爱情大十字",
+ "cardCount": 5,
+ "cost": 5,
+ "positions": ["你的状态", "对方状态", "过去影响", "现在情况", "未来发展"],
+ "description": "适合解析两性关系 & 爱情状况,基于洞悉彼此关系中的情感状况并分析结果",
+ "tags": ["爱情"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "mr_right",
+ "name": "真命天子牌阵",
+ "cardCount": 5,
+ "cost": 5,
+ "positions": ["内心期待", "现实阻碍", "理想对象", "行动建议", "遇见时机"],
+ "description": "单身探索有缘人 & 合适对象,探索内心的想法,改善外在的行为,遇到适合的人",
+ "tags": ["爱情"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "search_lover",
+ "name": "寻找对象牌阵",
+ "cardCount": 5,
+ "cost": 5,
+ "positions": ["当前状态", "优势特质", "改进方向", "寻找方式", "目标确定"],
+ "description": "适合寻找意中人 & 有缘人,睁全宫中人的愿景,帮助自己确定目标",
+ "tags": ["爱情"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "inspiration_correspondence",
+ "name": "灵感对应牌阵",
+ "cardCount": 6,
+ "cost": 6,
+ "positions": ["情感现状", "内心需求", "对方感受", "互动方式", "发展建议", "最终走向"],
+ "description": "适合情感困惑 & 人际关系,增长解析指缘联接或情感互动,帮您交融状态",
+ "tags": ["爱情"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "gypsy_spread",
+ "name": "吉普赛牌阵",
+ "cardCount": 5,
+ "cost": 5,
+ "positions": ["你的想法", "对方想法", "过去经历", "现在状况", "未来发展"],
+ "description": "适合情侣分析 & 关系延展,探索彼此内心想法,找到合适的相处方式",
+ "tags": ["爱情"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "venus_spread",
+ "name": "维纳斯牌阵",
+ "cardCount": 8,
+ "cost": 8,
+ "positions": ["你的状态", "对方状态", "关系开始", "当前情况", "核心问题", "最终结果", "外部影响", "内在感受"],
+ "description": "适合爱情发展 & 判断走向,全面的爱情解析牌阵,深入分析两性关系",
+ "tags": ["爱情"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "lover_tree",
+ "name": "恋人之树牌阵",
+ "cardCount": 7,
+ "cost": 7,
+ "positions": ["你的行为", "对方行为", "你的想法", "对方想法", "你的感受", "对方感受", "关系走向"],
+ "description": "适合探究对方心理 & 行为模式,对比情侣间的行为差异,进而根据事实做出判断",
+ "tags": ["爱情"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "marriage_spread",
+ "name": "婚姻牌阵",
+ "cardCount": 7,
+ "cost": 7,
+ "positions": ["婚姻基础", "你的期望", "对方期望", "核心问题", "外部影响", "内在感受", "未来走向"],
+ "description": "适合婚姻状况 & 内在剖析,针对婚姻状况和期望进行解析,通过细致分析把握婚姻走向",
+ "tags": ["爱情"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ // 新增事业牌阵
+ {
+ "id": "golden_triangle",
+ "name": "金三角牌阵",
+ "cardCount": 3,
+ "cost": 3,
+ "positions": ["问题核心", "左侧因素", "右侧因素"],
+ "description": "适合财富探索 & 问题解析,清楚审视整个问题的来龙去脉,进而做出正确决策",
+ "tags": ["事业", "财富"],
+ "aiSchema": ["core_theme", "current_state", "action_advice"]
+ },
+ {
+ "id": "success_star",
+ "name": "成功之星牌阵",
+ "cardCount": 3,
+ "cost": 3,
+ "positions": ["当前位置", "行动方向", "成功目标"],
+ "description": "适合走位辨路 & 累积行动,锁定目标破除阻碍,告诉星光,心有明月再出发",
+ "tags": ["事业"],
+ "aiSchema": ["core_theme", "current_state", "action_advice"]
+ },
+ {
+ "id": "career_pyramid",
+ "name": "事业金字塔",
+ "cardCount": 4,
+ "cost": 4,
+ "positions": ["核心优势", "需要改进", "外部机会", "未来发展"],
+ "description": "适合解析财富运势 & 提升财商,明晰自我的优缺点,帮助自己除弊趋利在事业中获得优势",
+ "tags": ["事业"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "wealth_tree",
+ "name": "财富之树牌阵",
+ "cardCount": 5,
+ "cost": 5,
+ "positions": ["财务基础", "收入来源", "支出状况", "当前状态", "未来趋势"],
+ "description": "适合事业发展 & 状态评估,通过对财富的梳理,健全适合自己的财务模式",
+ "tags": ["事业", "财富"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "x_opportunity",
+ "name": "X时机牌阵",
+ "cardCount": 5,
+ "cost": 5,
+ "positions": ["当前时机", "有利因素", "不利因素", "行动建议", "结果预测"],
+ "description": "适合时机捕捉 & 临场决策,以事物处理时机为主线轴,牵挂问题解决的成功概率",
+ "tags": ["事业", "决策"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "job_interview",
+ "name": "面试求职牌阵",
+ "cardCount": 5,
+ "cost": 5,
+ "positions": ["自我状态", "优势展现", "需要注意", "面试官印象", "录用可能"],
+ "description": "适合解析应聘面试 & 求职状况,洞察对方需求与自我留言,有效提高面试成功率",
+ "tags": ["事业"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "work_problems",
+ "name": "工作问题牌阵",
+ "cardCount": 6,
+ "cost": 6,
+ "positions": ["问题核心", "上级态度", "同事关系", "个人能力", "外部环境", "解决方案"],
+ "description": "适合聚焦目标 & 优化路径,当你明确自己的目标,全世界都会为你让路",
+ "tags": ["事业"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "turbulent_finances",
+ "name": "财富波浪牌阵",
+ "cardCount": 6,
+ "cost": 6,
+ "positions": ["财务起点", "第一波动", "稳定期", "第二波动", "调整期", "未来趋势"],
+ "description": "适合借力打力 & 多空对比,追问本质,结合正反两方面的分析,做出理智判断",
+ "tags": ["事业", "财富"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "desired_job",
+ "name": "期望的工作",
+ "cardCount": 6,
+ "cost": 6,
+ "positions": ["理想工作", "个人优势", "需要提升", "寻找方向", "关键因素", "实现可能"],
+ "description": "适合评估工作前景 & 关联因素,剖析工作前景,理清相关因素,给出明确的思路",
+ "tags": ["事业"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ // 新增决策牌阵
+ {
+ "id": "two_options",
+ "name": "二个选择牌阵",
+ "cardCount": 3,
+ "cost": 3,
+ "positions": ["选项A", "选项B", "建议方向"],
+ "description": "适合评测选项 & 做出抉择,在两难的处境中给出建议,选出适合自己的抉择",
+ "tags": ["决策"],
+ "aiSchema": ["core_theme", "current_state", "action_advice"]
+ },
+ {
+ "id": "three_options",
+ "name": "三个选择牌阵",
+ "cardCount": 3,
+ "cost": 3,
+ "positions": ["当前状况", "参考方向一", "参考方向二"],
+ "description": "提供参考方向 & 行动指向,遇到3个选择时,给你提供参考的方向",
+ "tags": ["决策"],
+ "aiSchema": ["core_theme", "current_state", "action_advice"]
+ },
+ {
+ "id": "daily_tree",
+ "name": "每日树牌阵",
+ "cardCount": 4,
+ "cost": 4,
+ "positions": ["今日核心", "需要注意", "有利因素", "行动建议"],
+ "description": "适长当日难题 & 当日解决,天天没烦恼,解决每天遇到的问题",
+ "tags": ["综合"],
+ "aiSchema": ["core_theme", "current_state", "action_advice"]
+ },
+ {
+ "id": "weigh_two",
+ "name": "二选一牌阵",
+ "cardCount": 5,
+ "cost": 5,
+ "positions": ["当前状况", "选项A优势", "选项B优势", "选项A劣势", "选项B劣势"],
+ "description": "主要用于抉择 & 判断,二选一,适用于二种情况选择其中一种",
+ "tags": ["决策"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "comparing_choices",
+ "name": "比较选择牌阵",
+ "cardCount": 6,
+ "cost": 6,
+ "positions": ["选项A现状", "选项A发展", "选项A结果", "选项B现状", "选项B发展", "选项B结果"],
+ "description": "适合判断情势 & 决定方向,多层面聚焦两个方向,更多的线索更多的细节",
+ "tags": ["决策"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "weigh_three",
+ "name": "三选一牌阵",
+ "cardCount": 7,
+ "cost": 7,
+ "positions": ["当前状况", "选项A优势", "选项B优势", "选项A劣势", "选项C优势", "选项C劣势", "选项B劣势"],
+ "description": "适合事情抉择 & 选择评估,对利弊关系进行分析判断,权衡利弊,做出最终的选择",
+ "tags": ["决策"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ // 新增深度探索牌阵
+ {
+ "id": "mind_body_spirit",
+ "name": "身心灵牌阵",
+ "cardCount": 4,
+ "cost": 4,
+ "positions": ["身体", "心智", "灵性", "整体状态"],
+ "description": "适合自我探索 & 了解自己,透彻审视自我,更直切明了自身成长路径",
+ "tags": ["成长", "综合"],
+ "aiSchema": ["core_theme", "current_state", "action_advice"]
+ },
+ {
+ "id": "four_elements",
+ "name": "四元素牌阵",
+ "cardCount": 4,
+ "cost": 4,
+ "positions": ["感性", "理性", "物质", "行动"],
+ "description": "适合问题探索 & 多方解析,从感性、理性、物质、行动四方面分析,进而接近实质",
+ "tags": ["探索", "综合"],
+ "aiSchema": ["core_theme", "current_state", "action_advice"]
+ },
+ {
+ "id": "self_discovery",
+ "name": "自我探索牌阵",
+ "cardCount": 4,
+ "cost": 4,
+ "positions": ["核心自我", "潜能", "优势", "需要提升"],
+ "description": "适合认识自我 & 提升潜能,开发自身潜力,提高对自己的认识",
+ "tags": ["探索", "成长"],
+ "aiSchema": ["core_theme", "current_state", "action_advice"]
+ },
+ {
+ "id": "know_yourself",
+ "name": "认识你自己",
+ "cardCount": 5,
+ "cost": 5,
+ "positions": ["核心自我", "思想", "行为", "情感", "环境影响"],
+ "description": "适合自我剖析 & 境况认知,人无时无刻不受环境的影响,在各种关系的交织中成长",
+ "tags": ["成长", "综合"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "your_breakthrough",
+ "name": "你的突破牌阵",
+ "cardCount": 5,
+ "cost": 5,
+ "positions": ["当前困境", "阻碍因素", "突破点", "行动方向", "预期结果"],
+ "description": "适合打破僵环 & 突破自我,识别固定模式,突破往复循环",
+ "tags": ["成长"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "elemental_cross",
+ "name": "元素十字牌阵",
+ "cardCount": 6,
+ "cost": 6,
+ "positions": ["核心问题", "火元素", "水元素", "风元素", "土元素", "解决方案"],
+ "description": "主要用于带入问题 & 解决问题,根据现实情况全面运用四元素能提升自己",
+ "tags": ["探索", "综合"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "wheel_spread",
+ "name": "车轮牌阵",
+ "cardCount": 7,
+ "cost": 7,
+ "positions": ["中心", "过去", "现在", "未来", "机会", "挑战", "结果"],
+ "description": "适合专注自我 & 探寻改变,有时走出循环照顾的舒适圈,有所改变时,才能成长",
+ "tags": ["成长"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "seven_planets",
+ "name": "七行星牌阵",
+ "cardCount": 7,
+ "cost": 7,
+ "positions": ["核心", "月亮", "水星", "金星", "太阳", "火星", "木星"],
+ "description": "适合审视目前状态 & 了解自己,综合分析当下状况,全面的了解自己",
+ "tags": ["成长", "综合"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "dream_mirror",
+ "name": "梦镜牌阵",
+ "cardCount": 7,
+ "cost": 7,
+ "positions": ["梦境表象", "潜意识", "情感", "符号", "启示", "行动", "整合"],
+ "description": "适合分析梦境 & 获得启迪,梦像一面镜子,解读梦境,是理解自己的渠道",
+ "tags": ["探索"],
"aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
}
];
+
+
+
Page({
data: {
todayDate: '', // 用于存储今天的日期
@@ -281,6 +725,11 @@ Page({
cardBackImage: '/images/beimian.png',
spreads: SPREADS,
+ // 牌阵筛选状态
+ activeTag: '全部',
+ filteredSpreads: SPREADS,
+ spreadTags: ['全部', '综合', '爱情', '事业', '决策', '深度', '成长', '探索'],
+
// 动画数据
deckAnimation: {},
cardAnimation: {},
@@ -482,7 +931,72 @@ Page({
],
// 合并大牌和小牌
allCards: [],
- aiResult: null
+ aiResult: null,
+
+ // 塔罗低语 - 分类问题库
+ tarotWhispersBank: {
+ '爱情': [
+ { text: '我们的关系会如何发展?' },
+ { text: '这段感情值得继续吗?' },
+ { text: '对方对我是什么感觉?' },
+ { text: 'TA是我的灵魂伴侣吗?' },
+ { text: '我们之间的问题能解决吗?' },
+ { text: '这段关系的未来如何?' },
+ { text: '我该如何改善这段关系?' },
+ { text: '我们的缘分有多深?' }
+ ],
+ '事业': [
+ { text: '我是否应该换工作?' },
+ { text: '这个合作值得继续吗?' },
+ { text: '我的事业发展方向是什么?' },
+ { text: '现在适合创业吗?' },
+ { text: '我的职场瓶颈在哪里?' },
+ { text: '如何提升我的职场竞争力?' },
+ { text: '这个投资机会如何?' },
+ { text: '我的财运走势怎样?' }
+ ],
+ '决策': [
+ { text: '我应该选择A还是B?' },
+ { text: '现在是做这个决定的好时机吗?' },
+ { text: '这个选择会带来什么结果?' },
+ { text: '我该如何做出正确的决定?' },
+ { text: '这条路适合我吗?' },
+ { text: '我需要考虑哪些因素?' },
+ { text: '放弃还是坚持?' },
+ { text: '改变会带来什么?' }
+ ],
+ '综合': [
+ { text: '我现在的状态如何?' },
+ { text: '我需要关注什么?' },
+ { text: '未来会发生什么?' },
+ { text: '我的人生方向是什么?' },
+ { text: '如何突破当前困境?' },
+ { text: '我的优势是什么?' },
+ { text: '什么在阻碍我?' },
+ { text: '我该如何成长?' }
+ ],
+ '深度': [
+ { text: '我的灵性课题是什么?' },
+ { text: '我的人生使命是什么?' },
+ { text: '如何找到内心的平静?' },
+ { text: '我需要学习什么?' },
+ { text: '我的潜能在哪里?' },
+ { text: '如何实现灵性成长?' },
+ { text: '我的生命意义是什么?' },
+ { text: '宇宙想告诉我什么?' }
+ ]
+ },
+ tarotWhispers: [
+ { text: '我们的关系会如何发展?' },
+ { text: '这段感情值得继续吗?' },
+ { text: '我是否应该换工作?' },
+ { text: '这个合作值得继续吗?' },
+ { text: '我应该选择A还是B?' },
+ { text: '现在是做这个决定的好时机吗?' },
+ { text: '我现在的状态如何?' },
+ { text: '我需要关注什么?' }
+ ],
+ selectedWhisperIndex: -1
},
onLoad: function () {
@@ -506,23 +1020,46 @@ Page({
const id = e.currentTarget.dataset.id;
const spread = this.data.spreads.find(s => s.id === id);
- // 检查积分是否足够
- if (!hasEnough(spread.cost)) {
+ // 检查积分是否足够 (可通过ENABLE_POINTS开关控制)
+ if (ENABLE_POINTS && !hasEnough(spread.cost)) {
wx.showModal({
title: '积分不足',
- content: `当前牌阵需要 ${spread.cost} 积分,您的积分不足,请稍后再来`,
+ content: `当前牌阵需要 ${spread.cost} 积分,您的积分不足,请稍后再来`,
showCancel: false,
confirmText: '知道了'
});
return;
}
+ // 根据牌阵标签更新塔罗低语
+ const primaryTag = spread.tags[0]; // 使用第一个标签作为主分类
+ const whispers = this.data.tarotWhispersBank[primaryTag] || this.data.tarotWhispersBank['综合'];
+
this.setData({
selectedSpread: spread,
+ tarotWhispers: whispers,
+ selectedWhisperIndex: -1, // 重置选中状态
state: 'asking' // 先进入提问状态
});
},
+ // --- 牌阵标签筛选 ---
+ filterSpreads: function (e) {
+ const tag = e.currentTarget.dataset.tag;
+ let filtered = SPREADS;
+
+ if (tag !== '全部') {
+ filtered = SPREADS.filter(spread =>
+ spread.tags && spread.tags.includes(tag)
+ );
+ }
+
+ this.setData({
+ activeTag: tag,
+ filteredSpreads: filtered
+ });
+ },
+
// --- 1.5 确认问题并开始洗牌 ---
confirmQuestion: function () {
const question = this.data.question.trim();
@@ -606,6 +1143,24 @@ Page({
});
},
+ // 选择塔罗低语
+ selectWhisper: function (e) {
+ const index = e.currentTarget.dataset.index;
+ const question = e.currentTarget.dataset.question;
+ const quality = scoreQuestion(question);
+
+ // 震动反馈
+ wx.vibrateShort({
+ type: 'light'
+ });
+
+ this.setData({
+ question: question,
+ questionQuality: quality,
+ selectedWhisperIndex: index
+ });
+ },
+
// --- 2. 抽牌逻辑 ---
onCardTap: function (e) {
const index = e.currentTarget.dataset.index;
@@ -634,9 +1189,13 @@ Page({
return card;
});
- // 扣除积分(只扣一次)
- deductPoints(selectedSpread.cost);
- console.log(`[积分系统] 占卜消耗 ${selectedSpread.cost} 积分`);
+ // 扣除积分(只扣一次,可通过ENABLE_POINTS开关控制)
+ if (ENABLE_POINTS) {
+ deductPoints(selectedSpread.cost);
+ console.log(`[积分系统] 占卜消耗 ${selectedSpread.cost} 积分`);
+ } else {
+ console.log(`[积分系统] 测试模式,跳过积分扣除`);
+ }
this.setData({
drawnCards,
@@ -806,8 +1365,47 @@ ${cardMeanings}
// --- 导航优化:统一返回逻辑 ---
handleBack: function () {
- wx.navigateBack({
- delta: 1
- });
+ // 根据当前状态返回到上一个状态
+ const currentState = this.data.state;
+
+ if (currentState === 'asking') {
+ // 从提问页返回到牌阵选择页
+ this.setData({
+ state: 'spread_select',
+ question: '',
+ questionQuality: null,
+ selectedWhisperIndex: -1
+ });
+ } else if (currentState === 'shuffling' || currentState === 'drawing' || currentState === 'flipping') {
+ // 从洗牌/选牌/翻牌页返回到提问页
+ this.setData({
+ state: 'asking',
+ drawnCardIndices: [],
+ drawnCards: [],
+ revealedCount: 0
+ });
+ } else if (currentState === 'revealed') {
+ // 从解读页返回到牌阵选择页(重新开始)
+ this.setData({
+ state: 'spread_select',
+ question: '',
+ questionQuality: null,
+ selectedWhisperIndex: -1,
+ drawnCardIndices: [],
+ drawnCards: [],
+ revealedCount: 0,
+ aiResult: null
+ });
+ } else if (currentState === 'spread_select') {
+ // 从牌阵选择页返回到主页
+ wx.navigateBack({
+ delta: 1
+ });
+ } else {
+ // 其他状态直接返回主页
+ wx.navigateBack({
+ delta: 1
+ });
+ }
}
})
diff --git a/pages/index/index.wxml b/pages/index/index.wxml
index d1d90f5..ed73751 100644
--- a/pages/index/index.wxml
+++ b/pages/index/index.wxml
@@ -4,27 +4,63 @@
⇠
返回
-
+
-
- 选择你的牌阵
- 请根据你的困惑选择一个适合的牌阵
+
+
-
-
- {{item.name}}
- {{item.description}}
+
+
+
+
+
+ {{item}}
+
+
+
+
+
+
+
+
+
+
+ {{item.tags[0]}}
+
+
+
+ {{item.name}}
+
+
+ {{item.description}}
+
+
+
-
+
请输入你想询问的问题
心中默念问题,塔罗牌将为你指引方向
-
+
+
-
+
+
+
+
+
+
+ 塔罗为你低语…
+
+
+ {{item.text}}
+
+
+
+
+
@@ -125,12 +180,13 @@
+
- {{selectedSpread.positions[index]}}
+ {{selectedSpread.positions[index]}}(第{{index + 1}}张)
diff --git a/pages/index/index.wxss b/pages/index/index.wxss
index 435dbbf..c80b3d8 100644
--- a/pages/index/index.wxss
+++ b/pages/index/index.wxss
@@ -62,38 +62,130 @@ page {
letter-spacing: 1rpx;
}
-/* 1. 牌阵选择列表 */
-.spread-list {
- display: flex;
- flex-direction: column;
- gap: 30rpx;
+/* 1. 牌阵选择 - 卡片式V2 */
+
+/* 顶部标题区域 */
+.spread-header {
+ text-align: center;
+ padding: 60rpx 0 40rpx;
}
-.spread-item {
+.spread-title {
+ display: block;
+ font-size: 36rpx;
+ color: #c9a0dc;
+ font-weight: 500;
+ margin-bottom: 12rpx;
+ letter-spacing: 2rpx;
+}
+
+.spread-subtitle {
+ display: block;
+ font-size: 24rpx;
+ color: rgba(201, 160, 220, 0.7);
+ letter-spacing: 2rpx;
+ font-weight: 300;
+}
+
+/* 标签筛选条 */
+.tags-area {
+ padding: 0 30rpx 30rpx;
+}
+
+.tags-scroll {
+ white-space: nowrap;
+}
+
+.tag-item {
+ display: inline-block;
+ padding: 12rpx 28rpx;
+ margin-right: 16rpx;
background: rgba(255, 255, 255, 0.05);
- border: 1px solid rgba(201, 160, 220, 0.2);
- padding: 40rpx;
- border-radius: 20rpx;
+ border: 1px solid rgba(201, 160, 220, 0.3);
+ border-radius: 30rpx;
+ font-size: 26rpx;
+ color: rgba(201, 160, 220, 0.8);
transition: all 0.3s ease;
}
-.spread-hover {
- background: rgba(201, 160, 220, 0.1);
+.tag-item.active {
+ background: rgba(201, 160, 220, 0.2);
+ border-color: rgba(201, 160, 220, 0.6);
+ color: #ffffff;
+ transform: scale(1.05);
+}
+
+/* 两列卡片网格 */
+.spread-grid {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 20rpx;
+ padding: 0 30rpx 40rpx;
+}
+
+.spread-card {
+ background: rgba(255, 255, 255, 0.05);
+ border: 1px solid rgba(201, 160, 220, 0.3);
+ border-radius: 20rpx;
+ padding: 30rpx 24rpx;
+ position: relative;
+ box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.3);
+ transition: all 0.3s ease;
+ min-height: 240rpx;
+ display: flex;
+ flex-direction: column;
+}
+
+.spread-card:active {
transform: translateY(-4rpx);
+ box-shadow: 0 8rpx 30rpx rgba(201, 160, 220, 0.3);
border-color: rgba(201, 160, 220, 0.5);
}
-.spread-name {
- font-size: 34rpx;
- font-weight: 500;
+.card-badge {
+ position: absolute;
+ top: 12rpx;
+ right: 12rpx;
+ background: rgba(201, 160, 220, 0.3);
+ padding: 4rpx 12rpx;
+ border-radius: 8rpx;
+ font-size: 20rpx;
color: #c9a0dc;
- display: block;
- margin-bottom: 10rpx;
}
-.spread-desc {
- font-size: 24rpx;
- color: #6a6a7d;
+.card-name {
+ display: block;
+ font-size: 30rpx;
+ color: #ffffff;
+ font-weight: 500;
+ margin-bottom: 12rpx;
+ padding-right: 60rpx;
+}
+
+.card-desc {
+ display: block;
+ font-size: 22rpx;
+ color: rgba(255, 255, 255, 0.6);
+ line-height: 1.5;
+ margin-bottom: 20rpx;
+ flex: 1;
+}
+
+.card-footer {
+ display: flex;
+ justify-content: space-between;
+ font-size: 20rpx;
+ color: rgba(201, 160, 220, 0.7);
+ padding-top: 16rpx;
+ border-top: 1px solid rgba(255, 255, 255, 0.05);
+}
+
+.card-count {
+ opacity: 0.8;
+}
+
+.card-cost {
+ font-weight: 500;
}
/* 2. 洗牌仪式感 */
@@ -261,37 +353,762 @@ page {
}
/* 4. 翻牌结果展示 */
+.result-area {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: flex-start;
+ padding: 30rpx 20rpx;
+ overflow-y: auto;
+}
+
.spread-display {
display: flex;
flex-wrap: wrap;
justify-content: center;
- gap: 30rpx;
- padding: 40rpx 0;
+ align-items: flex-start;
+ gap: 12rpx;
+ padding: 20rpx 0;
+ margin: 0 auto;
}
-/* 牌阵特定布局 */
-.spread-display.three_time_flow,
-.spread-display.three_problem_solution,
-.spread-display.two_choice_decision {
- flex-direction: row;
+/* 牌阵专属布局 - 传统排列方式 */
+
+/* 1张牌 - 居中 */
+.spread-display.one_card_guidance {
+ max-width: 130rpx;
}
+/* 3张牌 - 横排 */
+.spread-display.three_time_flow,
+.spread-display.three_problem_solution,
+.spread-display.love_spark {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ gap: 15rpx;
+ max-width: 375rpx;
+}
+
+/* 4张牌 - 2x2网格 */
+.spread-display.two_choice_decision,
+.spread-display.relationship_healing {
+ display: grid;
+ grid-template-columns: repeat(2, 110rpx);
+ gap: 15rpx;
+ max-width: 245rpx;
+}
+
+/* 5张牌 - 十字形 (现状分析) */
+.spread-display.five_situation_analysis {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(3, auto);
+ gap: 15rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.five_situation_analysis .card-slot:nth-child(1) { grid-area: 2 / 2; }
+.spread-display.five_situation_analysis .card-slot:nth-child(2) { grid-area: 1 / 2; }
+.spread-display.five_situation_analysis .card-slot:nth-child(3) { grid-area: 3 / 2; }
+.spread-display.five_situation_analysis .card-slot:nth-child(4) { grid-area: 2 / 1; }
+.spread-display.five_situation_analysis .card-slot:nth-child(5) { grid-area: 2 / 3; }
+
+/* 5张牌 - 关系洞察 */
+.spread-display.relationship_spread {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(3, auto);
+ gap: 15rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.relationship_spread .card-slot:nth-child(1) { grid-area: 2 / 1; }
+.spread-display.relationship_spread .card-slot:nth-child(2) { grid-area: 2 / 3; }
+.spread-display.relationship_spread .card-slot:nth-child(3) { grid-area: 2 / 2; }
+.spread-display.relationship_spread .card-slot:nth-child(4) { grid-area: 1 / 2; }
+.spread-display.relationship_spread .card-slot:nth-child(5) { grid-area: 3 / 2; }
+
+/* 5张牌 - 缘分探索 */
+.spread-display.destiny_connection {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(3, auto);
+ gap: 15rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.destiny_connection .card-slot:nth-child(1) { grid-area: 1 / 2; }
+.spread-display.destiny_connection .card-slot:nth-child(2) { grid-area: 2 / 2; }
+.spread-display.destiny_connection .card-slot:nth-child(3) { grid-area: 2 / 1; }
+.spread-display.destiny_connection .card-slot:nth-child(4) { grid-area: 2 / 3; }
+.spread-display.destiny_connection .card-slot:nth-child(5) { grid-area: 3 / 2; }
+
+/* 5张牌 - 职场突破 */
+.spread-display.career_breakthrough {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(3, auto);
+ gap: 15rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.career_breakthrough .card-slot:nth-child(1) { grid-area: 2 / 2; }
+.spread-display.career_breakthrough .card-slot:nth-child(2) { grid-area: 1 / 2; }
+.spread-display.career_breakthrough .card-slot:nth-child(3) { grid-area: 2 / 3; }
+.spread-display.career_breakthrough .card-slot:nth-child(4) { grid-area: 3 / 2; }
+.spread-display.career_breakthrough .card-slot:nth-child(5) { grid-area: 2 / 1; }
+
+/* 5张牌 - 横排 */
+.spread-display.timeline_spread,
+.spread-display.diamond_spread {
+ display: grid;
+ grid-template-columns: repeat(5, 110rpx);
+ gap: 12rpx;
+ max-width: 600rpx;
+}
+
+/* 6张牌 - 2x3网格 */
+.spread-display.career_planning,
+.spread-display.wealth_analysis {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ gap: 15rpx;
+ max-width: 375rpx;
+}
+
+/* 7张牌 - 马蹄铁形 */
+.spread-display.horseshoe_spread {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(4, auto);
+ gap: 12rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.horseshoe_spread .card-slot:nth-child(1) { grid-area: 4 / 1; }
+.spread-display.horseshoe_spread .card-slot:nth-child(2) { grid-area: 3 / 1; }
+.spread-display.horseshoe_spread .card-slot:nth-child(3) { grid-area: 2 / 1; }
+.spread-display.horseshoe_spread .card-slot:nth-child(4) { grid-area: 1 / 2; }
+.spread-display.horseshoe_spread .card-slot:nth-child(5) { grid-area: 2 / 3; }
+.spread-display.horseshoe_spread .card-slot:nth-child(6) { grid-area: 3 / 3; }
+.spread-display.horseshoe_spread .card-slot:nth-child(7) { grid-area: 4 / 3; }
+
+/* 7张牌 - 灵性指引 */
+.spread-display.spiritual_guidance {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ gap: 15rpx;
+ max-width: 375rpx;
+}
+
+/* 10张牌 - 凯尔特十字 */
+.spread-display.celtic_cross {
+ display: grid;
+ grid-template-columns: repeat(6, 90rpx);
+ grid-template-rows: repeat(4, auto);
+ gap: 8rpx;
+ max-width: 580rpx;
+}
+
+.spread-display.celtic_cross .card-slot { width: 90rpx; }
+.spread-display.celtic_cross .flip-scene { width: 90rpx; height: 150rpx; }
+
+.spread-display.celtic_cross .card-slot:nth-child(1) { grid-area: 2 / 3; }
+.spread-display.celtic_cross .card-slot:nth-child(2) { grid-area: 2 / 3; transform: rotate(90deg); z-index: 1; }
+.spread-display.celtic_cross .card-slot:nth-child(3) { grid-area: 3 / 3; }
+.spread-display.celtic_cross .card-slot:nth-child(4) { grid-area: 2 / 2; }
+.spread-display.celtic_cross .card-slot:nth-child(5) { grid-area: 1 / 3; }
+.spread-display.celtic_cross .card-slot:nth-child(6) { grid-area: 2 / 4; }
+.spread-display.celtic_cross .card-slot:nth-child(7) { grid-area: 1 / 5; }
+.spread-display.celtic_cross .card-slot:nth-child(8) { grid-area: 2 / 5; }
+.spread-display.celtic_cross .card-slot:nth-child(9) { grid-area: 3 / 5; }
+.spread-display.celtic_cross .card-slot:nth-child(10) { grid-area: 4 / 5; }
+
+/* 10张牌 - 生命之树 */
+.spread-display.tree_of_life {
+ display: grid;
+ grid-template-columns: repeat(3, 90rpx);
+ grid-template-rows: repeat(5, auto);
+ gap: 10rpx;
+ max-width: 310rpx;
+}
+
+.spread-display.tree_of_life .card-slot { width: 90rpx; }
+.spread-display.tree_of_life .flip-scene { width: 90rpx; height: 150rpx; }
+
+.spread-display.tree_of_life .card-slot:nth-child(1) { grid-area: 1 / 2; }
+.spread-display.tree_of_life .card-slot:nth-child(2) { grid-area: 2 / 1; }
+.spread-display.tree_of_life .card-slot:nth-child(3) { grid-area: 2 / 3; }
+.spread-display.tree_of_life .card-slot:nth-child(4) { grid-area: 3 / 1; }
+.spread-display.tree_of_life .card-slot:nth-child(5) { grid-area: 3 / 3; }
+.spread-display.tree_of_life .card-slot:nth-child(6) { grid-area: 3 / 2; }
+.spread-display.tree_of_life .card-slot:nth-child(7) { grid-area: 4 / 1; }
+.spread-display.tree_of_life .card-slot:nth-child(8) { grid-area: 4 / 3; }
+.spread-display.tree_of_life .card-slot:nth-child(9) { grid-area: 4 / 2; }
+.spread-display.tree_of_life .card-slot:nth-child(10) { grid-area: 5 / 2; }
+
+/* 新增爱情牌阵布局 */
+
+/* 恋人金字塔 - 4张牌 */
+.spread-display.lover_pyramid {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(2, auto);
+ gap: 15rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.lover_pyramid .card-slot:nth-child(1) { grid-area: 2 / 2; }
+.spread-display.lover_pyramid .card-slot:nth-child(2) { grid-area: 2 / 1; }
+.spread-display.lover_pyramid .card-slot:nth-child(3) { grid-area: 2 / 3; }
+.spread-display.lover_pyramid .card-slot:nth-child(4) { grid-area: 1 / 2; }
+
+/* 新爱牌阵 - 3张牌对角线 */
+.spread-display.new_love {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(3, auto);
+ gap: 15rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.new_love .card-slot:nth-child(1) { grid-area: 1 / 1; }
+.spread-display.new_love .card-slot:nth-child(2) { grid-area: 2 / 2; }
+.spread-display.new_love .card-slot:nth-child(3) { grid-area: 3 / 3; }
+
+/* 人际关系牌阵 - 3张牌倒三角 */
+.spread-display.relationship_basic {
+ display: grid;
+ grid-template-columns: repeat(2, 110rpx);
+ grid-template-rows: repeat(2, auto);
+ gap: 15rpx;
+ max-width: 245rpx;
+}
+
+.spread-display.relationship_basic .card-slot:nth-child(1) { grid-area: 1 / 1; }
+.spread-display.relationship_basic .card-slot:nth-child(2) { grid-area: 1 / 2; }
+.spread-display.relationship_basic .card-slot:nth-child(3) { grid-area: 2 / 1 / 2 / 3; justify-self: center; }
+
+/* 爱情树牌阵 - 5张牌树形 */
+.spread-display.love_tree_spread {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(3, auto);
+ gap: 15rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.love_tree_spread .card-slot:nth-child(1) { grid-area: 2 / 2; }
+.spread-display.love_tree_spread .card-slot:nth-child(2) { grid-area: 1 / 1; }
+.spread-display.love_tree_spread .card-slot:nth-child(3) { grid-area: 1 / 2; }
+.spread-display.love_tree_spread .card-slot:nth-child(4) { grid-area: 1 / 3; }
+.spread-display.love_tree_spread .card-slot:nth-child(5) { grid-area: 3 / 2; }
+
+/* 爱情大十字 - 5张牌十字形 */
+.spread-display.love_cross_spread {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(3, auto);
+ gap: 15rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.love_cross_spread .card-slot:nth-child(1) { grid-area: 2 / 1; }
+.spread-display.love_cross_spread .card-slot:nth-child(2) { grid-area: 2 / 3; }
+.spread-display.love_cross_spread .card-slot:nth-child(3) { grid-area: 1 / 2; }
+.spread-display.love_cross_spread .card-slot:nth-child(4) { grid-area: 2 / 2; }
+.spread-display.love_cross_spread .card-slot:nth-child(5) { grid-area: 3 / 2; }
+
+/* 真命天子牌阵 - 5张牌菱形 */
+.spread-display.mr_right {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(3, auto);
+ gap: 15rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.mr_right .card-slot:nth-child(1) { grid-area: 3 / 1; }
+.spread-display.mr_right .card-slot:nth-child(2) { grid-area: 2 / 1; }
+.spread-display.mr_right .card-slot:nth-child(3) { grid-area: 1 / 2; }
+.spread-display.mr_right .card-slot:nth-child(4) { grid-area: 2 / 3; }
+.spread-display.mr_right .card-slot:nth-child(5) { grid-area: 3 / 3; }
+
+/* 寻找对象牌阵 - 5张牌X形 */
+.spread-display.search_lover {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(3, auto);
+ gap: 15rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.search_lover .card-slot:nth-child(1) { grid-area: 2 / 2; }
+.spread-display.search_lover .card-slot:nth-child(2) { grid-area: 1 / 1; }
+.spread-display.search_lover .card-slot:nth-child(3) { grid-area: 1 / 3; }
+.spread-display.search_lover .card-slot:nth-child(4) { grid-area: 3 / 1; }
+.spread-display.search_lover .card-slot:nth-child(5) { grid-area: 3 / 3; }
+
+/* 灵感对应牌阵 - 6张牌2x3网格 */
+.spread-display.inspiration_correspondence {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ gap: 15rpx;
+ max-width: 375rpx;
+}
+
+/* 吉普赛牌阵 - 5张牌十字形 */
+.spread-display.gypsy_spread {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(3, auto);
+ gap: 15rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.gypsy_spread .card-slot:nth-child(1) { grid-area: 1 / 2; }
+.spread-display.gypsy_spread .card-slot:nth-child(2) { grid-area: 3 / 2; }
+.spread-display.gypsy_spread .card-slot:nth-child(3) { grid-area: 2 / 1; }
+.spread-display.gypsy_spread .card-slot:nth-child(4) { grid-area: 2 / 2; }
+.spread-display.gypsy_spread .card-slot:nth-child(5) { grid-area: 2 / 3; }
+
+/* 维纳斯牌阵 - 8张牌复杂菱形 */
+.spread-display.venus_spread {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(4, auto);
+ gap: 12rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.venus_spread .card-slot:nth-child(1) { grid-area: 2 / 1; }
+.spread-display.venus_spread .card-slot:nth-child(2) { grid-area: 2 / 3; }
+.spread-display.venus_spread .card-slot:nth-child(3) { grid-area: 1 / 2; }
+.spread-display.venus_spread .card-slot:nth-child(4) { grid-area: 2 / 2; }
+.spread-display.venus_spread .card-slot:nth-child(5) { grid-area: 3 / 2; }
+.spread-display.venus_spread .card-slot:nth-child(6) { grid-area: 4 / 2; }
+.spread-display.venus_spread .card-slot:nth-child(7) { grid-area: 3 / 1; }
+.spread-display.venus_spread .card-slot:nth-child(8) { grid-area: 3 / 3; }
+
+/* 恋人之树牌阵 - 7张牌树形对称 */
+.spread-display.lover_tree {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(4, auto);
+ gap: 12rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.lover_tree .card-slot:nth-child(1) { grid-area: 1 / 1; }
+.spread-display.lover_tree .card-slot:nth-child(2) { grid-area: 1 / 3; }
+.spread-display.lover_tree .card-slot:nth-child(3) { grid-area: 2 / 1; }
+.spread-display.lover_tree .card-slot:nth-child(4) { grid-area: 2 / 3; }
+.spread-display.lover_tree .card-slot:nth-child(5) { grid-area: 3 / 1; }
+.spread-display.lover_tree .card-slot:nth-child(6) { grid-area: 3 / 3; }
+.spread-display.lover_tree .card-slot:nth-child(7) { grid-area: 4 / 2; }
+
+/* 婚姻牌阵 - 7张牌六芒星形 */
+.spread-display.marriage_spread {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(4, auto);
+ gap: 12rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.marriage_spread .card-slot:nth-child(1) { grid-area: 4 / 2; }
+.spread-display.marriage_spread .card-slot:nth-child(2) { grid-area: 3 / 1; }
+.spread-display.marriage_spread .card-slot:nth-child(3) { grid-area: 3 / 3; }
+.spread-display.marriage_spread .card-slot:nth-child(4) { grid-area: 2 / 2; }
+.spread-display.marriage_spread .card-slot:nth-child(5) { grid-area: 1 / 1; }
+.spread-display.marriage_spread .card-slot:nth-child(6) { grid-area: 1 / 3; }
+.spread-display.marriage_spread .card-slot:nth-child(7) { grid-area: 1 / 2; }
+
+/* 新增事业牌阵布局 */
+
+/* 金三角牌阵 - 3张牌金字塔形 */
+.spread-display.golden_triangle {
+ display: grid;
+ grid-template-columns: repeat(2, 110rpx);
+ grid-template-rows: repeat(2, auto);
+ gap: 15rpx;
+ max-width: 245rpx;
+}
+
+.spread-display.golden_triangle .card-slot:nth-child(1) { grid-area: 1 / 1 / 1 / 3; justify-self: center; }
+.spread-display.golden_triangle .card-slot:nth-child(2) { grid-area: 2 / 1; }
+.spread-display.golden_triangle .card-slot:nth-child(3) { grid-area: 2 / 2; }
+
+/* 成功之星牌阵 - 3张牌三角形 */
+.spread-display.success_star {
+ display: grid;
+ grid-template-columns: repeat(2, 110rpx);
+ grid-template-rows: repeat(2, auto);
+ gap: 15rpx;
+ max-width: 245rpx;
+}
+
+.spread-display.success_star .card-slot:nth-child(1) { grid-area: 1 / 1; }
+.spread-display.success_star .card-slot:nth-child(2) { grid-area: 2 / 1; }
+.spread-display.success_star .card-slot:nth-child(3) { grid-area: 1 / 2 / 3 / 3; align-self: center; }
+
+/* 事业金字塔 - 4张牌金字塔形 */
+.spread-display.career_pyramid {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(2, auto);
+ gap: 15rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.career_pyramid .card-slot:nth-child(1) { grid-area: 2 / 2; }
+.spread-display.career_pyramid .card-slot:nth-child(2) { grid-area: 2 / 1; }
+.spread-display.career_pyramid .card-slot:nth-child(3) { grid-area: 2 / 3; }
+.spread-display.career_pyramid .card-slot:nth-child(4) { grid-area: 1 / 2; }
+
+/* 财富之树牌阵 - 5张牌十字树形 */
+.spread-display.wealth_tree {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(3, auto);
+ gap: 15rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.wealth_tree .card-slot:nth-child(1) { grid-area: 3 / 2; }
+.spread-display.wealth_tree .card-slot:nth-child(2) { grid-area: 2 / 2; }
+.spread-display.wealth_tree .card-slot:nth-child(3) { grid-area: 2 / 3; }
+.spread-display.wealth_tree .card-slot:nth-child(4) { grid-area: 2 / 1; }
+.spread-display.wealth_tree .card-slot:nth-child(5) { grid-area: 1 / 2; }
+
+/* X时机牌阵 - 5张牌X形 */
+.spread-display.x_opportunity {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(3, auto);
+ gap: 15rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.x_opportunity .card-slot:nth-child(1) { grid-area: 2 / 2; }
+.spread-display.x_opportunity .card-slot:nth-child(2) { grid-area: 1 / 1; }
+.spread-display.x_opportunity .card-slot:nth-child(3) { grid-area: 1 / 3; }
+.spread-display.x_opportunity .card-slot:nth-child(4) { grid-area: 3 / 1; }
+.spread-display.x_opportunity .card-slot:nth-child(5) { grid-area: 3 / 3; }
+
+/* 面试求职牌阵 - 5张牌十字形 */
+.spread-display.job_interview {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(3, auto);
+ gap: 15rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.job_interview .card-slot:nth-child(1) { grid-area: 3 / 2; }
+.spread-display.job_interview .card-slot:nth-child(2) { grid-area: 2 / 1; }
+.spread-display.job_interview .card-slot:nth-child(3) { grid-area: 2 / 3; }
+.spread-display.job_interview .card-slot:nth-child(4) { grid-area: 2 / 2; }
+.spread-display.job_interview .card-slot:nth-child(5) { grid-area: 1 / 2; }
+
+/* 工作问题牌阵 - 6张牌六边形 */
+.spread-display.work_problems {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(3, auto);
+ gap: 12rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.work_problems .card-slot:nth-child(1) { grid-area: 2 / 2; }
+.spread-display.work_problems .card-slot:nth-child(2) { grid-area: 1 / 1; }
+.spread-display.work_problems .card-slot:nth-child(3) { grid-area: 2 / 1; }
+.spread-display.work_problems .card-slot:nth-child(4) { grid-area: 2 / 3; }
+.spread-display.work_problems .card-slot:nth-child(5) { grid-area: 1 / 3; }
+.spread-display.work_problems .card-slot:nth-child(6) { grid-area: 3 / 2; }
+
+/* 财富波浪牌阵 - 6张牌波浪形 */
+.spread-display.turbulent_finances {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(3, auto);
+ gap: 12rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.turbulent_finances .card-slot:nth-child(1) { grid-area: 3 / 1; }
+.spread-display.turbulent_finances .card-slot:nth-child(2) { grid-area: 2 / 1; }
+.spread-display.turbulent_finances .card-slot:nth-child(3) { grid-area: 2 / 2; }
+.spread-display.turbulent_finances .card-slot:nth-child(4) { grid-area: 2 / 3; }
+.spread-display.turbulent_finances .card-slot:nth-child(5) { grid-area: 3 / 3; }
+.spread-display.turbulent_finances .card-slot:nth-child(6) { grid-area: 1 / 2; }
+
+/* 期望的工作 - 6张牌对称形 */
+.spread-display.desired_job {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(3, auto);
+ gap: 12rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.desired_job .card-slot:nth-child(1) { grid-area: 1 / 2; }
+.spread-display.desired_job .card-slot:nth-child(2) { grid-area: 2 / 1; }
+.spread-display.desired_job .card-slot:nth-child(3) { grid-area: 2 / 3; }
+.spread-display.desired_job .card-slot:nth-child(4) { grid-area: 3 / 1; }
+.spread-display.desired_job .card-slot:nth-child(5) { grid-area: 3 / 2; }
+.spread-display.desired_job .card-slot:nth-child(6) { grid-area: 3 / 3; }
+
+/* 新增决策牌阵布局 */
+
+/* 二个选择牌阵 - 3张牌倒三角 */
+.spread-display.two_options {
+ display: grid;
+ grid-template-columns: repeat(2, 110rpx);
+ grid-template-rows: repeat(2, auto);
+ gap: 15rpx;
+ max-width: 245rpx;
+}
+
+.spread-display.two_options .card-slot:nth-child(1) { grid-area: 1 / 1; }
+.spread-display.two_options .card-slot:nth-child(2) { grid-area: 1 / 2; }
+.spread-display.two_options .card-slot:nth-child(3) { grid-area: 2 / 1 / 2 / 3; justify-self: center; }
+
+/* 三个选择牌阵 - 3张牌正三角 */
+.spread-display.three_options {
+ display: grid;
+ grid-template-columns: repeat(2, 110rpx);
+ grid-template-rows: repeat(2, auto);
+ gap: 15rpx;
+ max-width: 245rpx;
+}
+
+.spread-display.three_options .card-slot:nth-child(1) { grid-area: 1 / 1 / 1 / 3; justify-self: center; }
+.spread-display.three_options .card-slot:nth-child(2) { grid-area: 2 / 1; }
+.spread-display.three_options .card-slot:nth-child(3) { grid-area: 2 / 2; }
+
+/* 每日树牌阵 - 4张牌十字形 */
+.spread-display.daily_tree {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(3, auto);
+ gap: 15rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.daily_tree .card-slot:nth-child(1) { grid-area: 3 / 2; }
+.spread-display.daily_tree .card-slot:nth-child(2) { grid-area: 2 / 1; }
+.spread-display.daily_tree .card-slot:nth-child(3) { grid-area: 1 / 2; }
+.spread-display.daily_tree .card-slot:nth-child(4) { grid-area: 2 / 3; }
+
+/* 二选一牌阵 - 5张牌菱形 */
+.spread-display.weigh_two {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(3, auto);
+ gap: 15rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.weigh_two .card-slot:nth-child(1) { grid-area: 3 / 2; }
+.spread-display.weigh_two .card-slot:nth-child(2) { grid-area: 2 / 1; }
+.spread-display.weigh_two .card-slot:nth-child(3) { grid-area: 2 / 3; }
+.spread-display.weigh_two .card-slot:nth-child(4) { grid-area: 1 / 1; }
+.spread-display.weigh_two .card-slot:nth-child(5) { grid-area: 1 / 3; }
+
+/* 比较选择牌阵 - 6张牌3+3排列 */
+.spread-display.comparing_choices {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ gap: 12rpx;
+ max-width: 375rpx;
+}
+
+/* 三选一牌阵 - 7张牌复杂对称形 */
+.spread-display.weigh_three {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(3, auto);
+ gap: 12rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.weigh_three .card-slot:nth-child(1) { grid-area: 2 / 1; }
+.spread-display.weigh_three .card-slot:nth-child(2) { grid-area: 1 / 2; }
+.spread-display.weigh_three .card-slot:nth-child(3) { grid-area: 2 / 2; }
+.spread-display.weigh_three .card-slot:nth-child(4) { grid-area: 3 / 2; }
+.spread-display.weigh_three .card-slot:nth-child(5) { grid-area: 1 / 3; }
+.spread-display.weigh_three .card-slot:nth-child(6) { grid-area: 2 / 3; }
+.spread-display.weigh_three .card-slot:nth-child(7) { grid-area: 3 / 3; }
+
+/* 新增深度探索牌阵布局 */
+
+/* 身心灵牌阵 - 4张牌倒T形 */
+.spread-display.mind_body_spirit {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(2, auto);
+ gap: 15rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.mind_body_spirit .card-slot:nth-child(1) { grid-area: 2 / 1; }
+.spread-display.mind_body_spirit .card-slot:nth-child(2) { grid-area: 2 / 2; }
+.spread-display.mind_body_spirit .card-slot:nth-child(3) { grid-area: 2 / 3; }
+.spread-display.mind_body_spirit .card-slot:nth-child(4) { grid-area: 1 / 2; }
+
+/* 四元素牌阵 - 4张牌2x2方形 */
+.spread-display.four_elements {
+ display: grid;
+ grid-template-columns: repeat(2, 110rpx);
+ grid-template-rows: repeat(2, auto);
+ gap: 15rpx;
+ max-width: 245rpx;
+}
+
+.spread-display.four_elements .card-slot:nth-child(1) { grid-area: 1 / 1; }
+.spread-display.four_elements .card-slot:nth-child(2) { grid-area: 2 / 1; }
+.spread-display.four_elements .card-slot:nth-child(3) { grid-area: 2 / 2; }
+.spread-display.four_elements .card-slot:nth-child(4) { grid-area: 1 / 2; }
+
+/* 自我探索牌阵 - 4张牌箭头三角形 */
+.spread-display.self_discovery {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(3, auto);
+ gap: 15rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.self_discovery .card-slot:nth-child(1) { grid-area: 2 / 2; }
+.spread-display.self_discovery .card-slot:nth-child(2) { grid-area: 1 / 2; }
+.spread-display.self_discovery .card-slot:nth-child(3) { grid-area: 3 / 1; }
+.spread-display.self_discovery .card-slot:nth-child(4) { grid-area: 3 / 3; }
+
+/* 认识你自己 - 5张牌十字形 */
+.spread-display.know_yourself {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(3, auto);
+ gap: 15rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.know_yourself .card-slot:nth-child(1) { grid-area: 2 / 2; }
+.spread-display.know_yourself .card-slot:nth-child(2) { grid-area: 1 / 2; }
+.spread-display.know_yourself .card-slot:nth-child(3) { grid-area: 2 / 3; }
+.spread-display.know_yourself .card-slot:nth-child(4) { grid-area: 3 / 2; }
+.spread-display.know_yourself .card-slot:nth-child(5) { grid-area: 2 / 1; }
+
+/* 你的突破牌阵 - 5张牌五角形 */
+.spread-display.your_breakthrough {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(3, auto);
+ gap: 12rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.your_breakthrough .card-slot:nth-child(1) { grid-area: 2 / 1; }
+.spread-display.your_breakthrough .card-slot:nth-child(2) { grid-area: 2 / 3; }
+.spread-display.your_breakthrough .card-slot:nth-child(3) { grid-area: 1 / 2; }
+.spread-display.your_breakthrough .card-slot:nth-child(4) { grid-area: 3 / 1; }
+.spread-display.your_breakthrough .card-slot:nth-child(5) { grid-area: 3 / 3; }
+
+/* 元素十字牌阵 - 6张牌十字形 */
+.spread-display.elemental_cross {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(4, auto);
+ gap: 12rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.elemental_cross .card-slot:nth-child(1) { grid-area: 2 / 2; }
+.spread-display.elemental_cross .card-slot:nth-child(2) { grid-area: 2 / 3; }
+.spread-display.elemental_cross .card-slot:nth-child(3) { grid-area: 2 / 1; }
+.spread-display.elemental_cross .card-slot:nth-child(4) { grid-area: 1 / 2; }
+.spread-display.elemental_cross .card-slot:nth-child(5) { grid-area: 3 / 2; }
+.spread-display.elemental_cross .card-slot:nth-child(6) { grid-area: 4 / 2; }
+
+/* 车轮牌阵 - 7张牌圆形轮状 */
+.spread-display.wheel_spread {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(4, auto);
+ gap: 10rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.wheel_spread .card-slot:nth-child(1) { grid-area: 2 / 2; }
+.spread-display.wheel_spread .card-slot:nth-child(2) { grid-area: 1 / 1; }
+.spread-display.wheel_spread .card-slot:nth-child(3) { grid-area: 2 / 1; }
+.spread-display.wheel_spread .card-slot:nth-child(4) { grid-area: 3 / 1; }
+.spread-display.wheel_spread .card-slot:nth-child(5) { grid-area: 1 / 3; }
+.spread-display.wheel_spread .card-slot:nth-child(6) { grid-area: 2 / 3; }
+.spread-display.wheel_spread .card-slot:nth-child(7) { grid-area: 3 / 3; }
+
+/* 七行星牌阵 - 7张牌星形排列 */
+.spread-display.seven_planets {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(4, auto);
+ gap: 10rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.seven_planets .card-slot:nth-child(1) { grid-area: 4 / 1; }
+.spread-display.seven_planets .card-slot:nth-child(2) { grid-area: 3 / 1; }
+.spread-display.seven_planets .card-slot:nth-child(3) { grid-area: 2 / 1; }
+.spread-display.seven_planets .card-slot:nth-child(4) { grid-area: 1 / 2; }
+.spread-display.seven_planets .card-slot:nth-child(5) { grid-area: 2 / 3; }
+.spread-display.seven_planets .card-slot:nth-child(6) { grid-area: 3 / 3; }
+.spread-display.seven_planets .card-slot:nth-child(7) { grid-area: 4 / 3; }
+
+/* 梦镜牌阵 - 7张牌金字塔形 */
+.spread-display.dream_mirror {
+ display: grid;
+ grid-template-columns: repeat(3, 110rpx);
+ grid-template-rows: repeat(3, auto);
+ gap: 10rpx;
+ max-width: 375rpx;
+}
+
+.spread-display.dream_mirror .card-slot:nth-child(1) { grid-area: 2 / 1; }
+.spread-display.dream_mirror .card-slot:nth-child(2) { grid-area: 3 / 1; }
+.spread-display.dream_mirror .card-slot:nth-child(3) { grid-area: 2 / 2; }
+.spread-display.dream_mirror .card-slot:nth-child(4) { grid-area: 3 / 2; }
+.spread-display.dream_mirror .card-slot:nth-child(5) { grid-area: 2 / 3; }
+.spread-display.dream_mirror .card-slot:nth-child(6) { grid-area: 3 / 3; }
+.spread-display.dream_mirror .card-slot:nth-child(7) { grid-area: 1 / 2; }
+
+
+
+
+
.card-slot {
display: flex;
flex-direction: column;
align-items: center;
- width: 200rpx;
+ width: 110rpx;
+ margin-bottom: 8rpx;
}
.pos-name {
- font-size: 22rpx;
+ font-size: 20rpx;
color: #8a8a9d;
- margin-bottom: 20rpx;
+ margin-bottom: 8rpx;
+ text-align: center;
+ height: 40rpx;
+ display: flex;
+ align-items: center;
+ line-height: 1.2;
}
.flip-scene {
- width: 180rpx;
- height: 300rpx;
+ width: 110rpx;
+ height: 185rpx;
perspective: 1000rpx;
}
@@ -323,9 +1140,10 @@ page {
.card-image.reversed { transform: rotate(180deg); }
.card-name-sm {
- margin-top: 16rpx;
- font-size: 24rpx;
+ margin-top: 12rpx;
+ font-size: 18rpx;
color: #c9a0dc;
+ text-align: center;
}
/* 5. 深度解读区域 */
@@ -467,81 +1285,202 @@ page {
line-height: 1.8;
}
-/* 提问区域样式 */
+/* 提问区域 - 沉浸式仪式感版本 */
.asking-area {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
- padding: 60rpx 40rpx;
+ padding: 80rpx 40rpx 60rpx;
+ background: linear-gradient(180deg, #0f0f1b 0%, #1a1a2e 50%, #16213e 100%);
+ position: relative;
}
-.input-area {
- width: 100%;
- background: rgba(255, 255, 255, 0.05);
- border-radius: 20rpx;
- padding: 30rpx;
+/* 顶部引导语 */
+.asking-title {
+ font-size: 24rpx;
+ color: rgba(201, 160, 220, 0.6);
+ letter-spacing: 4rpx;
+ text-align: center;
margin-bottom: 60rpx;
- border: 1px solid rgba(201, 160, 220, 0.2);
+ font-weight: 300;
+}
+
+/* 中央塔罗卡片式输入区 */
+.input-card {
+ width: 100%;
+ background: rgba(201, 160, 220, 0.08);
+ backdrop-filter: blur(10px);
+ border: 2px solid rgba(201, 160, 220, 0.3);
+ border-radius: 40rpx;
+ padding: 40rpx;
+ margin-bottom: 50rpx;
position: relative;
+ box-shadow: 0 0 40rpx rgba(201, 160, 220, 0.2);
+ transition: all 0.4s ease;
+}
+
+.input-card:focus-within {
+ border-color: rgba(201, 160, 220, 0.6);
+ box-shadow: 0 0 60rpx rgba(201, 160, 220, 0.4);
+ background: rgba(201, 160, 220, 0.12);
}
.question-input {
width: 100%;
- height: 300rpx;
- font-size: 30rpx;
+ height: 280rpx;
+ font-size: 32rpx;
color: #ffffff;
line-height: 1.6;
+ background: transparent;
}
.placeholder-style {
- color: rgba(255, 255, 255, 0.3);
+ color: rgba(255, 255, 255, 0.25);
+ font-size: 28rpx;
}
.char-count {
position: absolute;
- bottom: 20rpx;
- right: 30rpx;
- font-size: 22rpx;
- color: #8a8a9d;
+ bottom: 30rpx;
+ right: 40rpx;
+ font-size: 20rpx;
+ color: rgba(138, 138, 157, 0.5);
}
-.start-btn {
- background: #c9a0dc;
- color: #1a1a2e;
- font-size: 32rpx;
- font-weight: 600;
- padding: 24rpx 100rpx;
- border-radius: 50rpx;
- box-shadow: 0 4rpx 20rpx rgba(201, 160, 220, 0.3);
- transition: all 0.3s ease;
-}
-
-.btn-hover {
- transform: scale(0.98);
- opacity: 0.9;
-}
-
-/* 质量评分指示器 */
+/* 质量评分指示器 - 精简版 */
.quality-indicator {
display: flex;
align-items: center;
justify-content: center;
- margin-top: 20rpx;
- padding: 16rpx 24rpx;
- background: linear-gradient(135deg, rgba(139, 233, 253, 0.1), rgba(80, 250, 123, 0.1));
- border-radius: 16rpx;
- border: 1px solid rgba(139, 233, 253, 0.3);
+ margin-top: 24rpx;
+ padding: 12rpx 20rpx;
+ background: rgba(139, 233, 253, 0.08);
+ border-radius: 20rpx;
+ border: 1px solid rgba(139, 233, 253, 0.2);
}
.quality-icon {
- font-size: 40rpx;
- margin-right: 12rpx;
+ font-size: 32rpx;
+ margin-right: 8rpx;
}
.quality-text {
- font-size: 28rpx;
+ font-size: 24rpx;
color: #8be9fd;
+ font-weight: 400;
+ opacity: 0.8;
+}
+
+/* 温和分割线 */
+.divider {
+ width: 200rpx;
+ height: 1px;
+ background: linear-gradient(90deg, transparent, rgba(201, 160, 220, 0.3), transparent);
+ margin: 30rpx 0 40rpx;
+}
+
+/* 塔罗低语区域 */
+.whispers-area {
+ width: 100%;
+ margin-bottom: 60rpx;
+}
+
+.whispers-title {
+ display: block;
+ font-size: 24rpx;
+ color: rgba(201, 160, 220, 0.7);
+ text-align: center;
+ margin-bottom: 30rpx;
+ letter-spacing: 3rpx;
+ font-weight: 300;
+}
+
+.whispers-scroll {
+ width: 100%;
+ white-space: nowrap;
+}
+
+/* 塔罗低语卡片 */
+.whisper-card {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ background: rgba(255, 255, 255, 0.05);
+ border: 1px solid rgba(201, 160, 220, 0.3);
+ border-radius: 20rpx;
+ padding: 28rpx 32rpx;
+ margin-right: 20rpx;
+ min-width: 260rpx;
+ max-width: 340rpx;
+ box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.3);
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
+ position: relative;
+ overflow: hidden;
+}
+
+.whisper-card::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: radial-gradient(circle at center, rgba(201, 160, 220, 0.1), transparent);
+ opacity: 0;
+ transition: opacity 0.3s ease;
+}
+
+.whisper-card:active {
+ transform: scale(1.05);
+}
+
+.whisper-card.selected {
+ background: rgba(201, 160, 220, 0.15);
+ border-color: rgba(201, 160, 220, 0.6);
+ box-shadow: 0 0 30rpx rgba(201, 160, 220, 0.4);
+}
+
+.whisper-card.selected::before {
+ opacity: 1;
+}
+
+.whisper-text {
+ font-size: 28rpx;
+ color: #e0e0e0;
+ line-height: 1.5;
+ text-align: center;
+ word-wrap: break-word;
+ white-space: normal;
+ position: relative;
+ z-index: 1;
+}
+
+.whisper-card.selected .whisper-text {
+ color: #ffffff;
font-weight: 500;
}
+/* 开启塔罗指引按钮 */
+.start-btn {
+ background: linear-gradient(135deg, #c9a0dc 0%, #8b7ba8 100%);
+ color: #ffffff;
+ font-size: 32rpx;
+ font-weight: 600;
+ padding: 28rpx 120rpx;
+ border-radius: 50rpx;
+ box-shadow: 0 8rpx 30rpx rgba(201, 160, 220, 0.4);
+ transition: all 0.2s ease;
+ border: none;
+ letter-spacing: 2rpx;
+}
+
+.start-btn::after {
+ border: none;
+}
+
+.start-btn:active {
+ transform: scale(0.95);
+ box-shadow: 0 4rpx 20rpx rgba(201, 160, 220, 0.3);
+}
+
diff --git a/pages/privacy/privacy.js b/pages/privacy/privacy.js
new file mode 100644
index 0000000..26efacb
--- /dev/null
+++ b/pages/privacy/privacy.js
@@ -0,0 +1,16 @@
+Page({
+ data: {
+
+ },
+
+ onLoad: function (options) {
+ // 页面加载
+ },
+
+ onShareAppMessage: function () {
+ return {
+ title: '隐私政策 - 塔罗占卜小程序',
+ path: '/pages/privacy/privacy'
+ };
+ }
+});
diff --git a/pages/privacy/privacy.json b/pages/privacy/privacy.json
new file mode 100644
index 0000000..0783348
--- /dev/null
+++ b/pages/privacy/privacy.json
@@ -0,0 +1,5 @@
+{
+ "navigationBarTitleText": "隐私政策",
+ "navigationBarBackgroundColor": "#667eea",
+ "navigationBarTextStyle": "white"
+}
\ No newline at end of file
diff --git a/pages/privacy/privacy.wxml b/pages/privacy/privacy.wxml
new file mode 100644
index 0000000..a8d751e
--- /dev/null
+++ b/pages/privacy/privacy.wxml
@@ -0,0 +1,139 @@
+
+
+
+
+
+ 引言
+ 欢迎使用我们的塔罗占卜小程序。我们非常重视您的隐私保护和个人信息安全。本隐私政策将帮助您了解我们如何收集、使用、存储和保护您的信息。
+
+
+
+ 一、信息收集
+ 为了向您提供更好的服务,我们可能会收集以下信息:
+
+ •
+ 您输入的占卜问题和相关内容
+
+
+ •
+ 积分记录和使用情况
+
+
+ •
+ 广告观看记录(仅用于积分奖励统计)
+
+
+ •
+ 设备信息(用于优化服务体验)
+
+ 注: 所有信息仅存储在您的设备本地,我们不会上传到服务器。
+
+
+
+ 二、信息使用
+ 我们收集的信息将用于:
+
+ •
+ 提供塔罗占卜解读服务
+
+
+ •
+ 管理积分系统和奖励机制
+
+
+ •
+ 改进和优化用户体验
+
+
+ •
+ 提供个性化的内容推荐
+
+
+
+
+ 三、信息存储
+ 您的所有数据均通过微信小程序的本地存储功能保存在您的设备上。我们不会将您的个人信息上传至任何外部服务器。数据的保存和删除完全由您控制。
+
+
+
+ 四、第三方服务
+ 为了提供完整的服务功能,我们使用了以下第三方服务:
+
+ •
+ DeepSeek AI: 用于生成塔罗牌解读内容。您的问题将被发送至DeepSeek API进行处理,但不会包含任何可识别您身份的信息。
+
+
+ •
+ 微信激励视频广告: 用于积分奖励功能。广告服务由微信官方提供,遵循微信隐私政策。
+
+
+
+
+ 五、用户权利
+ 您拥有以下权利:
+
+ •
+ 随时查看和管理您的积分记录
+
+
+ •
+ 通过删除小程序清除所有本地数据
+
+
+ •
+ 选择是否观看广告获取积分
+
+
+ •
+ 随时停止使用我们的服务
+
+
+
+
+ 六、信息安全
+ 我们采取合理的安全措施保护您的信息:
+
+ •
+ 使用HTTPS加密传输与AI服务的通信
+
+
+ •
+ 不收集任何可直接识别您身份的信息
+
+
+ •
+ 遵循微信小程序平台的安全规范
+
+
+
+
+ 七、未成年人保护
+ 我们非常重视未成年人的隐私保护。如果您是未成年人,请在监护人的陪同下使用本小程序。
+
+
+
+ 八、政策更新
+ 我们可能会不定期更新本隐私政策。更新后的政策将在小程序内公布,并在页面顶部标注更新日期。继续使用我们的服务即表示您同意更新后的隐私政策。
+
+
+
+ 九、联系我们
+ 如果您对本隐私政策有任何疑问、意见或建议,欢迎通过以下方式联系我们:
+
+ •
+ 在小程序内提供反馈
+
+
+ •
+ 通过微信公众平台留言
+
+
+
+
+
+
diff --git a/pages/privacy/privacy.wxss b/pages/privacy/privacy.wxss
new file mode 100644
index 0000000..b795679
--- /dev/null
+++ b/pages/privacy/privacy.wxss
@@ -0,0 +1,107 @@
+/* 隐私政策页面样式 */
+
+.privacy-container {
+ min-height: 100vh;
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ padding: 40rpx 0;
+}
+
+.privacy-header {
+ text-align: center;
+ padding: 40rpx 30rpx;
+ background: rgba(255, 255, 255, 0.95);
+ margin: 0 30rpx 30rpx;
+ border-radius: 20rpx;
+ box-shadow: 0 8rpx 24rpx rgba(0, 0, 0, 0.1);
+}
+
+.privacy-title {
+ display: block;
+ font-size: 48rpx;
+ font-weight: bold;
+ color: #2d3748;
+ margin-bottom: 16rpx;
+}
+
+.update-date {
+ display: block;
+ font-size: 24rpx;
+ color: #718096;
+}
+
+.privacy-content {
+ height: calc(100vh - 280rpx);
+ padding: 0 30rpx;
+}
+
+.section {
+ background: rgba(255, 255, 255, 0.95);
+ border-radius: 16rpx;
+ padding: 32rpx;
+ margin-bottom: 24rpx;
+ box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.08);
+}
+
+.section-title {
+ display: block;
+ font-size: 32rpx;
+ font-weight: bold;
+ color: #2d3748;
+ margin-bottom: 20rpx;
+ padding-bottom: 12rpx;
+ border-bottom: 2rpx solid #e2e8f0;
+}
+
+.section-text {
+ display: block;
+ font-size: 28rpx;
+ color: #4a5568;
+ line-height: 1.8;
+ margin-bottom: 16rpx;
+}
+
+.list-item {
+ display: flex;
+ margin-bottom: 16rpx;
+ padding-left: 8rpx;
+}
+
+.bullet {
+ color: #667eea;
+ font-size: 28rpx;
+ margin-right: 12rpx;
+ flex-shrink: 0;
+}
+
+.list-text {
+ flex: 1;
+ font-size: 26rpx;
+ color: #4a5568;
+ line-height: 1.7;
+}
+
+.section-note {
+ display: block;
+ font-size: 24rpx;
+ color: #718096;
+ margin-top: 16rpx;
+ padding: 16rpx;
+ background: #f7fafc;
+ border-radius: 8rpx;
+ border-left: 4rpx solid #667eea;
+}
+
+.footer {
+ text-align: center;
+ padding: 40rpx 30rpx;
+ background: rgba(255, 255, 255, 0.95);
+ border-radius: 16rpx;
+ margin-bottom: 40rpx;
+}
+
+.footer-text {
+ display: block;
+ font-size: 28rpx;
+ color: #667eea;
+ font-weight: 500;
+}
diff --git a/spreads_reference.js b/spreads_reference.js
new file mode 100644
index 0000000..e86e5e0
--- /dev/null
+++ b/spreads_reference.js
@@ -0,0 +1,185 @@
+// 牌阵配置 - 包含所有可用牌阵
+const SPREADS = [
+ {
+ "id": "one_card_guidance",
+ "name": "单张指引",
+ "cardCount": 1,
+ "cost": 1,
+ "positions": ["当下的指引"],
+ "description": "为你此刻的状态提供一个温和而清晰的方向提示",
+ "tags": ["综合"],
+ "aiSchema": ["core_theme", "current_state", "action_advice"]
+ },
+ {
+ "id": "three_time_flow",
+ "name": "过去·现在·未来",
+ "cardCount": 3,
+ "cost": 3,
+ "positions": ["过去", "现在", "未来"],
+ "description": "帮助你理解事情的发展过程与可能走向",
+ "tags": ["综合", "决策"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "three_problem_solution",
+ "name": "问题·阻碍·建议",
+ "cardCount": 3,
+ "cost": 3,
+ "positions": ["问题核心", "当前阻碍", "行动建议"],
+ "description": "聚焦关键问题,找出当下最可行的应对方式",
+ "tags": ["决策"],
+ "aiSchema": ["core_theme", "current_state", "action_advice"]
+ },
+ {
+ "id": "love_spark",
+ "name": "爱情火花",
+ "cardCount": 3,
+ "cost": 3,
+ "positions": ["你的感受", "对方的感受", "关系潜力"],
+ "description": "探索彼此的真实感受与这段关系的可能性",
+ "tags": ["爱情"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "two_choice_decision",
+ "name": "二选一抉择",
+ "cardCount": 4,
+ "cost": 4,
+ "positions": ["选择A的发展", "选择A的结果", "选择B的发展", "选择B的结果"],
+ "description": "对比两种选择的潜在走向,辅助理性决策",
+ "tags": ["决策"],
+ "aiSchema": ["core_theme", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "relationship_healing",
+ "name": "关系修复",
+ "cardCount": 4,
+ "cost": 4,
+ "positions": ["问题根源", "你的责任", "对方的责任", "修复方向"],
+ "description": "深入理解关系裂痕,找到和解与修复的路径",
+ "tags": ["爱情"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "five_situation_analysis",
+ "name": "现状分析",
+ "cardCount": 5,
+ "cost": 5,
+ "positions": ["现状", "内在因素", "外在影响", "行动方向", "可能结果"],
+ "description": "从内外层面拆解局势,明确下一步行动",
+ "tags": ["事业", "综合"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "relationship_spread",
+ "name": "关系洞察",
+ "cardCount": 5,
+ "cost": 5,
+ "positions": ["你的位置", "对方的位置", "关系现状", "隐藏影响", "未来趋势"],
+ "description": "理解一段关系中的互动模式与发展方向",
+ "tags": ["爱情"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "destiny_connection",
+ "name": "缘分探索",
+ "cardCount": 5,
+ "cost": 5,
+ "positions": ["前世因缘", "今生相遇", "情感纽带", "考验挑战", "缘分走向"],
+ "description": "探索两人之间的灵性连接与命运安排",
+ "tags": ["爱情"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "career_breakthrough",
+ "name": "职场突破",
+ "cardCount": 5,
+ "cost": 5,
+ "positions": ["当前困境", "优势资源", "潜在机会", "需要克服", "突破方向"],
+ "description": "识别职场瓶颈,找到突破与晋升的关键",
+ "tags": ["事业"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "timeline_spread",
+ "name": "时间之流",
+ "cardCount": 5,
+ "cost": 5,
+ "positions": ["远古根源", "过去影响", "当下状态", "近期发展", "未来趋势"],
+ "description": "追溯事件的时间线,看清发展脉络",
+ "tags": ["综合"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "diamond_spread",
+ "name": "钻石牌阵",
+ "cardCount": 5,
+ "cost": 5,
+ "positions": ["问题本质", "过去原因", "未来发展", "外部资源", "最佳行动"],
+ "description": "多角度剖析问题,找到解决之道",
+ "tags": ["决策"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "career_planning",
+ "name": "事业规划",
+ "cardCount": 6,
+ "cost": 6,
+ "positions": ["当前位置", "核心优势", "发展方向", "潜在障碍", "贵人助力", "长期目标"],
+ "description": "全面规划职业发展路径,明确长期目标",
+ "tags": ["事业"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "wealth_analysis",
+ "name": "财运分析",
+ "cardCount": 6,
+ "cost": 6,
+ "positions": ["财务现状", "收入来源", "支出模式", "投资机会", "财务风险", "财富增长"],
+ "description": "深入分析财务状况,找到财富增长的路径",
+ "tags": ["事业"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "spiritual_guidance",
+ "name": "灵性指引",
+ "cardCount": 7,
+ "cost": 7,
+ "positions": ["当前能量", "内在阻碍", "潜在天赋", "灵性课题", "指导建议", "未来机遇", "最高指引"],
+ "description": "深入探索内在世界,获得灵性层面的启发",
+ "tags": ["深度"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "horseshoe_spread",
+ "name": "马蹄铁牌阵",
+ "cardCount": 7,
+ "cost": 7,
+ "positions": ["过去", "现在", "未来", "你的态度", "他人影响", "障碍", "最终结果"],
+ "description": "全面了解情况的来龙去脉与未来走向",
+ "tags": ["综合"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "celtic_cross",
+ "name": "凯尔特十字",
+ "cardCount": 10,
+ "cost": 10,
+ "positions": ["现状", "挑战", "根基", "过去", "可能性", "近期未来", "你的态度", "外部影响", "希望与恐惧", "最终结果"],
+ "description": "最经典的综合牌阵,深度解析生命议题",
+ "tags": ["深度"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ },
+ {
+ "id": "tree_of_life",
+ "name": "生命之树",
+ "cardCount": 10,
+ "cost": 10,
+ "positions": ["王冠", "智慧", "理解", "慈悲", "严厉", "美丽", "胜利", "荣耀", "基础", "王国"],
+ "description": "基于卡巴拉生命之树的深度灵性探索",
+ "tags": ["深度"],
+ "aiSchema": ["core_theme", "current_state", "potential_influence", "action_advice"]
+ }
+];
+
+module.exports = SPREADS;