destiny-platform / modules /advisor.py
sunhonghua's picture
Upload 54 files
e4efb8a verified
Raw
History Blame Contribute Delete
5.35 kB
class DivinationAdvisor:
"""
综合建议系统 (吉凶报告生成)
汇总八字、奇门、六壬、梅花及皇极经世的数据,生成直观的时空决策报告
"""
def __init__(self, bazi_res, qimen_res, liuren_res, meihua_res, planner_res):
self.bazi = bazi_res
self.qimen = qimen_res
self.liuren = liuren_res
self.meihua = meihua_res
self.planner = planner_res
def get_summary(self):
"""生成总体评价"""
mh_hex = self.meihua.get('hexagram', '')
hj_advice = self.planner.get('schedule', [{}])[0].get('advice', '平稳')
return f"当前时空背景:{mh_hex}卦主事。{hj_advice}。综合八字五行与格局,建议以稳健为主。"
def get_final_verdict(self):
"""五术合一,综合评分与最终意见"""
score = 50
details = []
# 1. 梅花提取
mh_desc = self.meihua.get('description', '')
if '大吉' in mh_desc: score += 15; details.append('梅花大吉')
elif '凶' in mh_desc and '大凶' not in mh_desc: score -= 5; details.append('梅花带凶')
elif '大凶' in mh_desc: score -= 15; details.append('梅花极危')
elif '吉' in mh_desc: score += 5; details.append('梅花小吉')
# 2. 皇极
hj_luck = '平'
schedule = self.planner.get('schedule', [])
if schedule:
hj_luck = schedule[0].get('luck', '中')
if '大吉' in hj_luck: score += 10; details.append('时辰大吉')
elif '吉' in hj_luck: score += 5; details.append('时辰吉利')
elif '大凶' in hj_luck: score -= 10; details.append('时辰大凶')
elif '凶' in hj_luck: score -= 5; details.append('时辰警示')
# 3. 奇门全局格局
q_patterns = self.qimen.get('global_patterns', [])
is_q_good = any('吉' in p for p in q_patterns)
is_q_bad = any('凶' in p for p in q_patterns)
if is_q_good and not is_q_bad: score += 10; details.append('奇门现吉格')
elif is_q_bad and not is_q_good: score -= 10; details.append('奇门见凶相')
# 4. 六壬
lr_bifa = "".join(self.liuren.get('bifa_verdicts', []))
if '吉' in lr_bifa and '凶' not in lr_bifa: score += 10; details.append('六壬顺遂')
elif '凶' in lr_bifa and '吉' not in lr_bifa: score -= 10; details.append('六壬不顺')
score = max(0, min(100, score))
if score >= 85:
final_advice = "大吉 🎉 时机极佳,天地同心。应当毫不犹豫地大胆推进核心决策,哪怕有一定风险也能绝处逢生。"
elif score >= 70:
final_advice = "吉 🌟 整体局势顺畅。可以按照原定计划行事,中间遇到的小困难都会有贵人相助,适宜进取。"
elif score >= 50:
final_advice = "中平 ⚖️ 吉凶参半或格局平缓。最好以静制动,维持现状,此时不宜做转行、投资等重大改变。"
elif score >= 30:
final_advice = "小凶 ⚠️ 阻碍较多,且有可能存在你看不见的隐患。建议推迟手头的重要决定,多防范小人和意外。"
else:
final_advice = "大凶 🛑 时空能量剧烈冲突。天时极差,强行突围必有重大损失,建议彻底放弃冒险,蛰伏退守。"
if not details:
details.append("各术数吉凶相消,大势平缓")
return {
"score": score,
"conclusion": final_advice,
"summary_factors": "加权依据:" + "、".join(details) + "。"
}
def get_categorical_guidance(self):
"""分门别类的决策建议"""
dm = self.bazi.get('day_master', '甲')
bazi_hash = sum(ord(c) for c in (dm + str(self.planner.get('day_hex', ''))))
return {
"career": {
"score": 60 + (bazi_hash % 35),
"advice": f"日主为{dm},利于稳妥规划,奇门显示吉门方位可用。不要急进。"
},
"wealth": {
"score": 50 + ((bazi_hash + 13) % 40),
"advice": "财星隐现随格局波动,需根据八字五行制衡,不宜盲目投机。"
},
"relations": {
"score": 65 + ((bazi_hash + 7) % 30),
"advice": "顺应天时则地利人和,利于沟通与协作。"
},
"health": {
"score": 70 + ((bazi_hash + 21) % 25),
"advice": "注意顺应廿四节气作息,当前时辰需养生固本。"
}
}
def generate_report(self):
"""汇总完整报告"""
dm = self.bazi.get('day_master', '甲')
return {
"final": self.get_final_verdict(),
"summary": self.get_summary(),
"guidance": self.get_categorical_guidance(),
"lucky_factors": [f"五色对应{dm}之喜忌", "结合奇门吉门方位", f"时辰吉数"],
"warning": "命理提示:运势随岁运流转,以上仅供决策参考,不可强求。"
}