Spaces:
Running
Running
| 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": "命理提示:运势随岁运流转,以上仅供决策参考,不可强求。" | |
| } | |