Spaces:
Running
Running
| class HuangJiPlanner: | |
| """ | |
| 皇极经世时辰规划模块 | |
| 基于邵雍《皇极经世》元会运世体系,计算年、月、日、时卦象,并整合决策策略 | |
| """ | |
| # 皇极经世 60 卦序列 (剔除乾坤坎离四正卦) | |
| SEQUENCE = [ | |
| "复", "颐", "屯", "益", "震", "噬嗑", "随", "无妄", "明夷", "贲", | |
| "既济", "家人", "丰", "革", "同人", "临", "损", "节", "中孚", "归妹", | |
| "睽", "兑", "履", "泰", "大畜", "需", "小畜", "大壮", "大有", "夬", | |
| "姤", "大过", "鼎", "恒", "巽", "井", "蛊", "升", "讼", "困", | |
| "未济", "解", "涣", "蒙", "师", "遁", "咸", "旅", "小过", "渐", | |
| "蹇", "艮", "谦", "否", "萃", "晋", "豫", "观", "比", "剥" | |
| ] | |
| # 卦象属性映射:(类型, 建议方向, 吉凶程度) | |
| # 类型: 1:进取, 2:守成, 3:变动, 4:阻碍 | |
| HEX_PROPS = { | |
| "复": (1, "万物复苏,宜制定新计划", "吉"), | |
| "颐": (2, "关注养生与口实,宜守静", "中"), | |
| "屯": (4, "创业维艰,宜寻求导师指引", "凶"), | |
| "益": (1, "利涉大川,宜积极开拓", "大吉"), | |
| "震": (3, "声震百里,宜迅速行动,防惊恐", "中"), | |
| "噬嗑": (1, "排除障碍,宜强力执行", "中"), | |
| "随": (3, "顺应自然,宜跟随智者", "吉"), | |
| "无妄": (2, "不期而获,宜守正不阿", "吉"), | |
| "明夷": (4, "黑暗降临,宜韬光养晦", "凶"), | |
| "贲": (2, "装饰文饰,宜小事,不宜大作", "吉"), | |
| "既济": (2, "功成名就,宜守成防衰", "吉"), | |
| "家人": (2, "齐家有道,宜处理内部事务", "吉"), | |
| "丰": (1, "盛大之时,宜果断决策", "大吉"), | |
| "革": (3, "改革创新,宜去旧布新", "吉"), | |
| "同人": (1, "志同道合,宜社交与合伙", "吉"), | |
| "临": (1, "上亲下顺,宜视察与统筹", "吉"), | |
| "损": (2, "减损求益,宜诚信节俭", "中"), | |
| "节": (2, "适当节制,宜量力而行", "中"), | |
| "中孚": (2, "诚信感应,宜签约与谈判", "吉"), | |
| "归妹": (4, "不得其位,宜谨慎防错", "凶"), | |
| "睽": (4, "背离异见,宜求大同存小异", "凶"), | |
| "兑": (3, "喜悦交流,宜公关与表达", "吉"), | |
| "履": (2, "步履维艰,宜如履薄冰", "中"), | |
| "泰": (1, "阴阳交泰,万事亨通", "大吉"), | |
| "大畜": (2, "积蓄德行,宜学习研究", "吉"), | |
| "需": (2, "需待时机,宜饮食宴乐", "吉"), | |
| "小畜": (2, "力量尚微,宜积蓄实力", "中"), | |
| "大壮": (1, "声势壮大,宜积极进取", "吉"), | |
| "大有": (1, "阳光普照,宜收获与扩张", "大吉"), | |
| "夬": (1, "决断刚行,宜清除隐患", "中"), | |
| "姤": (3, "不期而遇,防小人暗长", "中"), | |
| "大过": (4, "负担过重,宜寻求出路", "凶"), | |
| "鼎": (1, "革故鼎新,宜稳重创业", "吉"), | |
| "恒": (2, "持之以恒,宜保持现状", "吉"), | |
| "巽": (3, "柔顺随风,宜小步快走", "吉"), | |
| "井": (2, "安分守己,宜共享资源", "中"), | |
| "蛊": (4, "整顿内部,宜大刀阔斧", "凶"), | |
| "升": (1, "顺势攀升,宜步步高升", "大吉"), | |
| "讼": (4, "口舌争讼,宜讲和避争", "凶"), | |
| "困": (4, "处境艰难,宜坚定信念", "凶"), | |
| "未济": (3, "事业未成,宜重新出发", "中"), | |
| "解": (3, "解危脱困,宜宽赦与行动", "吉"), | |
| "涣": (3, "涣散疏通,宜化解矛盾", "中"), | |
| "蒙": (2, "启蒙教育,宜寻师访友", "吉"), | |
| "师": (1, "兴师动众,宜严格管理", "中"), | |
| "遁": (2, "退避守静,宜隐退避害", "中"), | |
| "咸": (1, "相互感应,宜情感交流", "吉"), | |
| "旅": (3, "羁旅在外,宜守正防失", "中"), | |
| "小过": (2, "过犹不及,宜小事不宜大", "中"), | |
| "漸": (1, "循序渐进,宜长线投资", "吉"), | |
| "蹇": (4, "前有高山,宜回身避难", "凶"), | |
| "艮": (2, "静止止步,宜安分守己", "中"), | |
| "谦": (2, "谦谦君子,万事大吉", "大吉"), | |
| "否": (4, "天地不通,宜退守不出", "大凶"), | |
| "萃": (1, "精英荟萃,宜团队建设", "吉"), | |
| "晋": (1, "加官进爵,宜展示才华", "大吉"), | |
| "豫": (1, "悦豫顺动,宜旅游庆贺", "吉"), | |
| "观": (2, "观摩考察,宜深思熟虑", "中"), | |
| "比": (2, "亲近依附,宜寻找靠山", "吉"), | |
| "剥": (4, "剥落衰颓,宜谨慎防守", "大凶") | |
| } | |
| BASE_YEAR = 2024 | |
| BASE_YEAR_HEX_IDX = 30 | |
| def __init__(self, lunar_data): | |
| self.lunar = lunar_data | |
| self.year = int(lunar_data['date'].split('-')[0]) | |
| self.month = lunar_data['lunar_month_num'] | |
| self.day = lunar_data['lunar_day_num'] | |
| def get_year_hex(self): | |
| offset = self.year - self.BASE_YEAR | |
| idx = (self.BASE_YEAR_HEX_IDX + offset) % 60 | |
| return self.SEQUENCE[idx] | |
| def get_month_hex(self): | |
| year_hex = self.get_year_hex() | |
| # 12个月,每个月5个卦 | |
| start_idx = (self.SEQUENCE.index(year_hex) + (self.month - 1) * 5) % 60 | |
| return self.SEQUENCE[start_idx] | |
| def get_day_hex(self): | |
| month_hex = self.get_month_hex() | |
| # 月卦之后顺序排列 | |
| start_idx = self.SEQUENCE.index(month_hex) | |
| day_offset = (self.day - 1) // 5 | |
| idx = (start_idx + day_offset) % 60 | |
| return self.SEQUENCE[idx] | |
| def get_shichen_hex_advice(self, day_hex, shichen_idx): | |
| """ | |
| 根据日卦和时辰序号(0-11)计算当前时段的卦象和建议 | |
| 皇极经世中,日卦管 12 时辰,每爻管 2 个时辰 | |
| """ | |
| day_idx = self.SEQUENCE.index(day_hex) | |
| line_idx = shichen_idx // 2 | |
| # 实际上可以通过复杂的爻变逻辑,这里采用映射 SEQUENCE 以获得更丰富的动态感 | |
| # 模拟变卦:每两个时辰卦象顺延一位 | |
| shichen_hex_idx = (day_idx + shichen_idx) % 60 | |
| shichen_hex = self.SEQUENCE[shichen_hex_idx] | |
| prop_type, prop_advice, prop_luck = self.HEX_PROPS.get(shichen_hex, (2, "宜稳重", "中")) | |
| # 结合爻位的微调建议 | |
| line_advices = ["初爻:萌芽阶段,宜谨慎及早准备", | |
| "二爻:渐入佳境,宜守正获益", | |
| "三爻:过激倾向,宜适可而止", | |
| "四爻:寻找契合,宜向上突破", | |
| "五爻:极盛之位,宜中庸决策", | |
| "上爻:物极必反,宜居安思危"] | |
| return { | |
| "hex": shichen_hex, | |
| "luck": prop_luck, | |
| "type": prop_type, | |
| "advice": prop_advice, | |
| "line_note": line_advices[line_idx] | |
| } | |
| def generate_schedule(self): | |
| day_hex = self.get_day_hex() | |
| shichens = [ | |
| ("子", "23:00 - 01:00"), ("丑", "01:00 - 03:00"), ("寅", "03:00 - 05:00"), | |
| ("卯", "05:00 - 07:00"), ("辰", "07:00 - 09:00"), ("巳", "09:00 - 11:00"), | |
| ("午", "11:00 - 13:00"), ("未", "13:00 - 15:00"), ("申", "15:00 - 17:00"), | |
| ("酉", "17:00 - 19:00"), ("戌", "19:00 - 21:00"), ("亥", "21:00 - 23:00") | |
| ] | |
| schedule = [] | |
| for i, (name, time_range) in enumerate(shichens): | |
| advice_data = self.get_shichen_hex_advice(day_hex, i) | |
| schedule.append({ | |
| "shichen": name, | |
| "time": time_range, | |
| "hex": advice_data["hex"], | |
| "luck": advice_data["luck"], | |
| "type": advice_data["type"], | |
| "advice": advice_data["advice"], | |
| "line_note": advice_data["line_note"] | |
| }) | |
| return { | |
| "year_hex": self.get_year_hex(), | |
| "month_hex": self.get_month_hex(), | |
| "day_hex": day_hex, | |
| "schedule": schedule | |
| } | |