Spaces:
Running
Running
Download six_relations_interpreter.py from sisithefox/astrology-ziwei-api: direct link, hf CLI and curl.
- Browser
- Download file 39.8 kB
-
https://huggingface.co/spaces/sisithefox/astrology-ziwei-api/resolve/main/six_relations_interpreter.py
- Command line
-
hf download hf://spaces/sisithefox/astrology-ziwei-api/six_relations_interpreter.py
-
curl -L -o six_relations_interpreter.py https://huggingface.co/spaces/sisithefox/astrology-ziwei-api/resolve/main/six_relations_interpreter.py
39.8 kB
| """ | |
| 六亲解读器 - Six Relations Interpreter | |
| 基于86个六亲批断技巧的专业解读引擎 | |
| Version: 1.0 | |
| Created: 2026-02-03 | |
| Author: Sisi & TH Studio | |
| 核心功能: | |
| - 父母运批断(日月+父母宫) | |
| - 兄弟运批断(兄弟宫+眉毛面相) | |
| - 夫妻运批断(福德宫是真正的夫妻宫!) | |
| - 子女运批断(子女宫+头胎判断) | |
| 关键发现: | |
| - 福德宫化忌 → 夫妻必死别(最重要!) | |
| - 日月反背 → 六亲不靠 | |
| - 西北厨房 → 死夫宅 | |
| - 西南厨房 → 死妻宅 | |
| """ | |
| from typing import Dict, List, Any, Optional | |
| from enum import Enum | |
| from barnum_cold_reader import BarnumColdReader, BarnumTone | |
| # ── 14颗主星在夫妻宫断语(倪海夏体系)────────────────────────── | |
| # 来源: ziwei-doushu 开源项目 heming-knowledge.ts + 倪海夏《天纪》 | |
| STAR_IN_FUQI_GU: Dict[str, Dict[str, str]] = { | |
| '紫微': { | |
| 'summary': '配偶高傲能干,宜晚婚,感情以尊重为基础', | |
| 'good': '三方有辅弼相夹,配偶贤能有才,婚后得贵助;三合见禄主财禄双全', | |
| 'bad': '孤君无辅,配偶强势难沟通;辰戌宫夫妻情分淡薄;会破军:婚前有诸多阻碍', | |
| 'spouse_traits': '配偶气质高傲,有主见,自尊心强,能力强但不轻易表达情感', | |
| 'timing': '宜晚婚(男30以上,女27以上),早婚多挫折', | |
| 'ni_quote': '紫微在夫妻宫,孤克,宜晚婚,感情好但沟通成本高', | |
| }, | |
| '天机': { | |
| 'summary': '婚姻多变,宜年龄差较大的配偶', | |
| 'good': '见禄存或化禄:感情尚可维持;会太阴:增添细腻温柔', | |
| 'bad': '化忌或会煞:感情变化大,易有分离;天机善变,配偶对感情举棋不定', | |
| 'spouse_traits': '配偶聪明多变,心思细腻,宗教哲学缘深,有点神经质', | |
| 'timing': '宜年龄差异较大(差6岁以上),可降低双方变化冲突', | |
| 'ni_quote': '天机善变,不宜独坐,婚姻充满变化', | |
| }, | |
| '太阳': { | |
| 'summary': '男命助妻,女命旺夫;落陷化忌则反主刑克', | |
| 'good': '庙旺(卯至申宫):配偶能干,男命有贤内助;女命嫁旺夫,婚姻美满', | |
| 'bad': '落陷(酉至寅宫):男命配偶病弱,女命嫁庸夫;化忌:女命"上不见父,下不见子,中不见夫",那十年丈夫有重大灾难', | |
| 'spouse_traits': '配偶开朗大方,有公众形象意识,慷慨但有时过于强势', | |
| 'timing': '感情走势始热终冷,宜保持适当距离维持新鲜感', | |
| 'ni_quote': '太阳化忌,上不见父,下不见子,中不见夫——女命那十年丈夫必有重大灾祸', | |
| }, | |
| '武曲': { | |
| 'summary': '寡宿之星,婚姻刑克,一律宜晚婚', | |
| 'good': '武曲化禄:配偶有财能力,男命反嫌妻太能干;见禄存夹辅:婚姻稳固有财', | |
| 'bad': '化忌:孤寡,难婚,或配偶身有残疾;武曲七杀(卯酉宫):婚姻恶劣之兆;遇四煞任一:主离婚', | |
| 'spouse_traits': '配偶刚烈独立,说话直接,不善表达情感,经济能力强但性格较孤克', | |
| 'timing': '武曲系一律建议30岁以后结婚,早婚早散', | |
| 'ni_quote': '武曲化忌,为刑囚之星,武曲系婚姻宜晚', | |
| }, | |
| '天同': { | |
| 'summary': '配偶温和享乐,宜年龄差较大,晚婚为吉', | |
| 'good': '见禄存或化禄:配偶温和带财,家庭安稳;与太阴同:感情温柔甜蜜', | |
| 'bad': '化忌:感情刚开始尚可,逐渐转淡,因协调不良引起怨怼;遇煞多:懒散变成负担', | |
| 'spouse_traits': '配偶温和善良,乐观随和,但可能懒散,享乐主义较强', | |
| 'timing': '男娶比自己小、女嫁比自己大,年龄差8年以上为最佳结发', | |
| }, | |
| '廉贞': { | |
| 'summary': '夫妻宫最不稳定的主星,生离死别风险高', | |
| 'good': '廉贞天府(子午):配偶温和清秀,感情尚可,配偶多为薪水族', | |
| 'bad': '廉贞贪狼:非生离即死别;廉贞破军:水中做坟墓;廉贞七杀:半路埋尸体;化忌:感情骚扰不断;与火星同宫:纵有吉曜也分居', | |
| 'spouse_traits': '配偶外形出众,善于交际,情绪价值高,但不稳定;可能离多聚少', | |
| 'timing': '男命宜配年少之妻(年轻6-12岁),女命宜配年长之夫', | |
| 'ni_quote': '廉贞贪狼/廉贞破军在夫妻宫,不管男命女命,非生离即死别;廉贞七杀——半路埋尸;廉贞破军——水中做冢;廉贞贪狼——横夭', | |
| }, | |
| '天府': { | |
| 'summary': '善曜,主生离不死别,感情平稳但平淡', | |
| 'good': '见禄存或化禄:财禄双全,感情稳定;三方无煞:夫妻平静和谐', | |
| 'bad': '辅弼单星:易有第二次婚姻;遇四煞:感情漠然,生离概率增加', | |
| 'spouse_traits': '配偶温文尔雅,兴趣广泛,守财有原则,工作能力强,但偏保守', | |
| 'timing': '男命配偶年长,女命配偶年少;感情稳定但需主动经营', | |
| }, | |
| '太阴': { | |
| 'summary': '喜清秀温柔配偶;落陷加煞则感情多变', | |
| 'good': '庙旺(子至午)见吉:配偶秀气有成就,男命妻美;女命:自身秀美有气质', | |
| 'bad': '落陷(未至亥):感情易变,配偶健康欠佳;化忌(男命尤忌):婆媳不和,妻子与母亲必起冲突;遇火铃:感情重大变故', | |
| 'spouse_traits': '配偶温柔秀气,细腻敏感,重感情,但有时情绪化', | |
| 'timing': '无特定约束,但落陷时宜晚婚', | |
| 'ni_quote': '男人的命,最怕太阴化忌,婆媳不和,太太跟妈妈一定不和的', | |
| }, | |
| '贪狼': { | |
| 'summary': '桃花最旺,婚姻不稳,外遇风险高', | |
| 'good': '化禄:配偶才艺佳,风情万种,感情甜蜜(但外遇风险不减);遇化科:减少外遇', | |
| 'bad': '化忌:多二次婚姻;紫微贪狼(卯酉):配偶多外出,有外遇之兆;遇四煞:必生离', | |
| 'spouse_traits': '配偶才艺超群,社交能力强,异性缘极好,但欲望旺盛,难以约束', | |
| 'timing': '早婚感情多变,宜晚婚;婚前务必了解对方异性关系', | |
| 'ni_quote': '贪狼除了指桃花星,也指酒色财气赌,统统在贪狼里面', | |
| }, | |
| '巨门': { | |
| 'summary': '口舌是非多,夫妻易争吵,需太阳化解', | |
| 'good': '太阳庙旺相会:反主婚姻和美,口才化为沟通利器;化禄:妻子贤能,财路因妻而开', | |
| 'bad': '化忌:配偶爱唠叨,是非不断;陀罗同度:夫妻自寻烦恼;独守无吉:感情压抑,深层矛盾多', | |
| 'spouse_traits': '配偶口才好,嫉妒心强,在乎面子,有时过于挑剔,但内心深情', | |
| 'timing': '无特定约束,但需做好长期沟通磨合的心理准备', | |
| }, | |
| '天相': { | |
| 'summary': '"亲上加亲"良缘,夫唱妇随,合作型婚姻', | |
| 'good': '见辅弼双全:感情忠诚,婚姻稳固;配偶正直踏实;天相三合见禄:财禄可期', | |
| 'bad': '辅弼单星:可能预示再婚;遇煞多:感情中压抑委屈,不善表达', | |
| 'spouse_traits': '配偶正直踏实,守信用,不喜欢冲突,善于协调,是绝佳的生活伴侣', | |
| 'timing': '多为同学、同事、街坊等熟识关系发展,宜夫妻合作共事', | |
| }, | |
| '天梁': { | |
| 'summary': '喜责任感强或年纪较长的配偶,婚前多波折', | |
| 'good': '见禄:配偶有福德,感情踏实;三合方有吉:感情经营稳重理智', | |
| 'bad': '化忌或见煞:爱唠叨,强势说服,感情疏离;天梁配天马:夫妻因环境分散;婚前易初恋失败', | |
| 'spouse_traits': '配偶责任感强,稳重老成,善讲道理,但偶有说教倾向', | |
| 'timing': '婚前多波折是常态,一旦结婚反而稳固;无煞婚后情缘更深', | |
| }, | |
| '七杀': { | |
| 'summary': '"鸳衾半冷"——聚少离多,宜晚婚30岁后', | |
| 'good': '庙旺(寅申宫):配偶虽刚强但忠诚,一旦投入则全力付出;化禄相助:减轻孤克', | |
| 'bad': '遇煞:感情表面和谐内心不满,男命主二娶;女命宜偏房继室;卯酉宫(武曲七杀):婚姻运最差', | |
| 'spouse_traits': '配偶刚强孤僻,一见钟情快,离开也快,恋爱冷热均快', | |
| 'timing': '一律宜晚婚,30岁后婚姻较稳固;早婚多刑克', | |
| 'ni_quote': '七杀居夫妇而鸳衾半冷;如果你娶个太太是七杀入命,那你就差不多毁了一半了,很累啊', | |
| }, | |
| '破军': { | |
| 'summary': '婚姻破耗之星,追求无约束感情', | |
| 'good': '化禄:破而后立,感情历经波折反而能走到最后;英星入庙:配偶英挺有个性', | |
| 'bad': '化忌:破坏殆尽,多一婚或不婚;紫微破军(丑未):不加煞亦克,加煞必离;与廉贞:水中做坟墓;中年后有分床分居之象', | |
| 'spouse_traits': '配偶追求自由,不喜约束,勇于突破,但婚姻观念薄弱,一生变动大', | |
| 'timing': '婚前易一见钟情或草率结婚,宜拉长相处时间再做决定', | |
| 'ni_quote': '廉贞破军在夫妻宫,水中做坟墓;破军是婚姻破坏力最强的星', | |
| }, | |
| } | |
| # ── 四化在夫妻宫断语 ────────────────────────────────────────── | |
| SIHUA_IN_FUQI_GU: Dict[str, str] = { | |
| '化禄': '与配偶有先天缘分,配偶个性乐观,婚后感情更好,配偶越来越会赚钱,缘分深厚', | |
| '化权': '婚姻多为主动争取而来,配偶掌握决策权,需学会放手;争取型婚姻,越强求越难得', | |
| '化科': '能与配偶和谐相处,有贵人缘,利于恋爱结婚;科在夫妻主配偶有名声或专业技能', | |
| '化忌': '欠下婚姻债务,早婚早离,建议晚婚或不婚;配偶对本人有怨言;化忌冲夫妻宫尤凶——生离死别之兆', | |
| } | |
| class RelationType(Enum): | |
| """六亲类型""" | |
| PARENTS = "父母" | |
| SIBLINGS = "兄弟" | |
| SPOUSE = "夫妻" | |
| CHILDREN = "子女" | |
| class SeverityLevel(Enum): | |
| """严重程度""" | |
| VERY_AUSPICIOUS = "大吉" | |
| AUSPICIOUS = "吉" | |
| NEUTRAL = "平" | |
| CAUTION = "需注意" | |
| SERIOUS = "需特别关注" | |
| class SixRelationsInterpreter: | |
| """ | |
| 六亲解读器 | |
| 整合福德宫秘诀和86个批断技巧 | |
| """ | |
| def __init__(self): | |
| """初始化六亲解读器""" | |
| self.barnum_reader = BarnumColdReader() | |
| # 代表儿子的星曜数量表 | |
| self.son_star_count = { | |
| '紫微': 1, '天相': 1, '贪狼': 1, '太阳': 1, | |
| '天府': 1, '武曲': 1, '天同': 1, '文昌': 1, | |
| '破军': 2, '廉贞': 2, '七杀': 2 | |
| } | |
| # 阳星(代表男性) | |
| self.yang_stars = ['紫微', '太阳', '武曲', '七杀', '破军', '贪狼', '天梁', '天府'] | |
| # 阴星(代表女性) | |
| self.yin_stars = ['太阴', '天机', '天同', '天相', '巨门', '廉贞'] | |
| # 凶星 | |
| self.sha_stars = ['擎羊', '陀罗', '火星', '铃星', '地空', '地劫', '天刑'] | |
| # 吉星 | |
| self.ji_stars = ['左辅', '右弼', '文昌', '文曲', '天魁', '天钺', '禄存', '天马'] | |
| # 桃花星 | |
| self.romance_stars = ['红鸾', '天喜', '天姚', '咸池', '贪狼', '廉贞'] | |
| def analyze_all_relations( | |
| self, | |
| palaces: List[Dict], | |
| sihua_analysis: Dict, | |
| gender: str = '男' | |
| ) -> Dict[str, Any]: | |
| """ | |
| 分析所有六亲关系 | |
| Args: | |
| palaces: 宫位数据 | |
| sihua_analysis: 四化分析结果 | |
| gender: 性别 | |
| Returns: | |
| dict: 六亲分析结果 | |
| """ | |
| # 提取关键宫位 | |
| palace_map = {p.get('name'): p for p in palaces} | |
| parents_palace = palace_map.get('父母宫', {}) | |
| siblings_palace = palace_map.get('兄弟宫', {}) | |
| spouse_palace = palace_map.get('夫妻宫', {}) | |
| children_palace = palace_map.get('子女宫', {}) | |
| fude_palace = palace_map.get('福德宫', {}) # 福德宫是夫妻宫的秘诀! | |
| ming_palace = palace_map.get('命宫', {}) | |
| # 提取年干四化 | |
| year_sihua = sihua_analysis.get('year_sihua', {}) | |
| # 分析各六亲 | |
| return { | |
| 'parents': self._analyze_parents( | |
| parents_palace, palace_map, year_sihua, gender | |
| ), | |
| 'siblings': self._analyze_siblings( | |
| siblings_palace, year_sihua | |
| ), | |
| 'spouse': self._analyze_spouse( | |
| spouse_palace, fude_palace, year_sihua, gender | |
| ), | |
| 'children': self._analyze_children( | |
| children_palace, year_sihua, gender | |
| ), | |
| 'summary': self._generate_relations_summary( | |
| palaces, sihua_analysis, gender | |
| ), | |
| 'critical_warnings': self._check_critical_warnings( | |
| palace_map, year_sihua, gender | |
| ) | |
| } | |
| def _analyze_parents( | |
| self, | |
| parents_palace: Dict, | |
| palace_map: Dict, | |
| year_sihua: Dict, | |
| gender: str | |
| ) -> Dict[str, Any]: | |
| """ | |
| 分析父母运 | |
| 核心规则: | |
| - 太阳代表父亲 | |
| - 太阴代表母亲 | |
| - 日月反背主六亲不靠 | |
| """ | |
| result = { | |
| 'palace_name': '父母宫', | |
| 'father': {'status': 'normal', 'analysis': []}, | |
| 'mother': {'status': 'normal', 'analysis': []}, | |
| 'overall': {'level': SeverityLevel.NEUTRAL.value, 'text': ''}, | |
| 'interpretation': '' | |
| } | |
| major_stars = self._extract_stars(parents_palace, 'major_stars') | |
| minor_stars = self._extract_stars(parents_palace, 'minor_stars') | |
| # 检查化忌 | |
| huaji_palace = year_sihua.get('化忌', {}).get('palace') | |
| has_huaji = huaji_palace == '父母宫' | |
| # 分析太阳(父亲) | |
| sun_analysis = self._analyze_sun_for_father(palace_map, year_sihua) | |
| result['father'] = sun_analysis | |
| # 分析太阴(母亲) | |
| moon_analysis = self._analyze_moon_for_mother(palace_map, year_sihua) | |
| result['mother'] = moon_analysis | |
| # 检查日月反背 | |
| is_sun_fallen = self._is_star_fallen('太阳', palace_map) | |
| is_moon_fallen = self._is_star_fallen('太阴', palace_map) | |
| if is_sun_fallen and is_moon_fallen: | |
| result['overall']['level'] = SeverityLevel.SERIOUS.value | |
| result['overall']['text'] = '日月反背' | |
| result['interpretation'] = self.barnum_reader._process_sensitive_content( | |
| "命盘呈现日月反背格局,这意味着您可能从小就比较独立," | |
| "与父母的相处模式不同于常人。这种配置往往培养出自立自强的性格。" | |
| "建议平时多与父母沟通,主动表达关心。" | |
| ) | |
| elif has_huaji: | |
| result['overall']['level'] = SeverityLevel.CAUTION.value | |
| result['overall']['text'] = '化忌入父母宫' | |
| result['interpretation'] = ( | |
| "父母宫有化忌,暗示与父母的关系需要多用心经营。" | |
| "这可能表现为聚少离多,或者沟通上的一些障碍。" | |
| "建议主动创造与父母相处的机会,珍惜在一起的时光。" | |
| ) | |
| else: | |
| # 检查吉星 | |
| has_ji_stars = any(s in self.ji_stars for s in minor_stars) | |
| if has_ji_stars or '紫微' in major_stars or '天府' in major_stars: | |
| result['overall']['level'] = SeverityLevel.AUSPICIOUS.value | |
| result['overall']['text'] = '父母缘佳' | |
| result['interpretation'] = ( | |
| "您的父母宫配置良好,与父母的缘分深厚。" | |
| "父母可能在您的成长过程中给予了很多支持和帮助。" | |
| "这份福气是您人生的重要基础。" | |
| ) | |
| else: | |
| result['overall']['level'] = SeverityLevel.NEUTRAL.value | |
| result['overall']['text'] = '父母运平稳' | |
| result['interpretation'] = ( | |
| "您与父母的关系属于平稳类型,既没有特别的冲突," | |
| "也可能少了些亲密的交流。建议在日常生活中多表达关心。" | |
| ) | |
| return result | |
| def _analyze_siblings( | |
| self, | |
| siblings_palace: Dict, | |
| year_sihua: Dict | |
| ) -> Dict[str, Any]: | |
| """ | |
| 分析兄弟运 | |
| 核心规则: | |
| - 眉毛代表兄弟姐妹 | |
| - 左眉主兄弟,右眉主姐妹 | |
| - 化忌入兄弟宫主不和或合伙破财 | |
| """ | |
| result = { | |
| 'palace_name': '兄弟宫', | |
| 'quantity': {'estimate': '正常', 'analysis': ''}, | |
| 'relationship': {'level': SeverityLevel.NEUTRAL.value, 'analysis': ''}, | |
| 'partnership': {'advice': '', 'suitable': True}, | |
| 'interpretation': '' | |
| } | |
| major_stars = self._extract_stars(siblings_palace, 'major_stars') | |
| minor_stars = self._extract_stars(siblings_palace, 'minor_stars') | |
| # 检查化忌 | |
| huaji_palace = year_sihua.get('化忌', {}).get('palace') | |
| has_huaji = huaji_palace == '兄弟宫' | |
| # 数量判断 | |
| quantity_analysis = [] | |
| if '紫微' in major_stars: | |
| quantity_analysis.append('紫微坐守,主兄弟3人以上') | |
| result['quantity']['estimate'] = '3人以上' | |
| elif '天机' in major_stars: | |
| quantity_analysis.append('天机坐守,兄弟姐妹较少') | |
| result['quantity']['estimate'] = '1-2人' | |
| elif '太阳' in major_stars: | |
| quantity_analysis.append('太阳入兄弟宫,主兄弟众多') | |
| result['quantity']['estimate'] = '3人以上' | |
| result['quantity']['analysis'] = ';'.join(quantity_analysis) if quantity_analysis else '正常数量' | |
| # 关系判断 | |
| if has_huaji: | |
| result['relationship']['level'] = SeverityLevel.CAUTION.value | |
| result['relationship']['analysis'] = ( | |
| "兄弟宫有化忌,暗示与兄弟姐妹之间可能存在一些摩擦或误解。" | |
| "不必过于担心,这种配置也可能是聚少离多的表现。" | |
| "建议在合伙做生意方面谨慎,感情上多包容理解。" | |
| ) | |
| result['partnership']['suitable'] = False | |
| result['partnership']['advice'] = '与兄弟姐妹或朋友合伙需谨慎,建议单干或找非亲友合伙' | |
| elif any(s in self.sha_stars for s in minor_stars): | |
| result['relationship']['level'] = SeverityLevel.CAUTION.value | |
| result['relationship']['analysis'] = ( | |
| "兄弟宫有煞星,暗示手足之间可能有一些竞争或冲突。" | |
| "这种配置往往在成年后反而会改善,因为各自有了自己的空间。" | |
| ) | |
| elif '紫微' in major_stars or '天府' in major_stars: | |
| result['relationship']['level'] = SeverityLevel.AUSPICIOUS.value | |
| result['relationship']['analysis'] = ( | |
| "兄弟宫有贵星,主兄弟姐妹有成就,能够相互帮助。" | |
| "这是一份难得的助力,建议维护好手足情谊。" | |
| ) | |
| # 综合解读 | |
| if has_huaji: | |
| result['interpretation'] = ( | |
| "您的兄弟宫配置提示与手足的关系需要多用心。" | |
| "无论是感情上的小摩擦还是事业上的分歧," | |
| "都可以通过良好的沟通来化解。" | |
| "如果考虑合伙做事,建议选择专业领域的伙伴而非亲友。" | |
| ) | |
| else: | |
| result['interpretation'] = ( | |
| "您与兄弟姐妹的关系总体良好。" | |
| "在人生的关键时刻,手足之情往往是重要的支持力量。" | |
| "建议平时多联络感情,维护这份珍贵的缘分。" | |
| ) | |
| return result | |
| def _analyze_spouse( | |
| self, | |
| spouse_palace: Dict, | |
| fude_palace: Dict, | |
| year_sihua: Dict, | |
| gender: str | |
| ) -> Dict[str, Any]: | |
| """ | |
| 分析夫妻运 | |
| 核心秘诀: | |
| - 福德宫化忌 → 夫妻必死别(最重要!) | |
| - 夫妻宫好福德宫差 → 夫妻不能长久 | |
| - 女命福德宫最重要,也代表夫妻宫 | |
| """ | |
| result = { | |
| 'palace_name': '夫妻宫', | |
| 'spouse_traits': [], # 配偶特征 | |
| 'marriage_quality': {'level': SeverityLevel.NEUTRAL.value, 'analysis': ''}, | |
| 'timing': {'advice': ''}, | |
| 'critical_warning': None, # 重大警告(福德宫秘诀) | |
| 'interpretation': '' | |
| } | |
| spouse_stars = self._extract_stars(spouse_palace, 'major_stars') | |
| spouse_minor = self._extract_stars(spouse_palace, 'minor_stars') | |
| fude_stars = self._extract_stars(fude_palace, 'major_stars') | |
| # 检查化忌位置 | |
| huaji_palace = year_sihua.get('化忌', {}).get('palace') | |
| fude_has_huaji = huaji_palace == '福德宫' | |
| spouse_has_huaji = huaji_palace == '夫妻宫' | |
| # 🔥 核心秘诀:福德宫化忌 → 夫妻死别 | |
| if fude_has_huaji: | |
| result['critical_warning'] = { | |
| 'type': 'fude_huaji', | |
| 'level': SeverityLevel.SERIOUS.value, | |
| 'original': '福德宫化忌主夫妻死别', | |
| 'processed': ( | |
| "福德宫的配置提示婚姻方面需要特别用心经营。" | |
| "这个配置的传统解读较为严重,但现代社会有很多化解方法。" | |
| "建议:1)配偶健康要格外关注;2)婚前深入了解对方;" | |
| "3)婚后多沟通、多包容;4)共同培养精神层面的连接。" | |
| "记住,命理是提醒,不是定数。用心经营,一切皆有可能。" | |
| ) | |
| } | |
| result['marriage_quality']['level'] = SeverityLevel.SERIOUS.value | |
| result['marriage_quality']['analysis'] = result['critical_warning']['processed'] | |
| # 检查廉贞破军组合(大凶) | |
| elif '廉贞' in fude_stars and '破军' in fude_stars: | |
| result['critical_warning'] = { | |
| 'type': 'lian_po_fude', | |
| 'level': SeverityLevel.SERIOUS.value, | |
| 'original': '廉贞破军在福德宫主夫妻死别', | |
| 'processed': ( | |
| "福德宫的星曜配置提示婚姻需要非常用心。" | |
| "建议选择性格互补、三观一致的伴侣," | |
| "婚后共同面对挑战,而不是互相指责。" | |
| "同时关注配偶的健康和安全。" | |
| ) | |
| } | |
| result['marriage_quality']['level'] = SeverityLevel.SERIOUS.value | |
| # 检查夫妻宫配置(使用完整断语库) | |
| else: | |
| # 配偶特征 | |
| result['spouse_traits'] = self._analyze_spouse_traits( | |
| spouse_stars, spouse_minor, gender | |
| ) | |
| # 找到主星详细断语 | |
| main_star_data = None | |
| for star in spouse_stars: | |
| if star in STAR_IN_FUQI_GU: | |
| main_star_data = STAR_IN_FUQI_GU[star] | |
| result['main_star'] = star | |
| break | |
| # 四化在夫妻宫的断语 | |
| sihua_in_spouse = year_sihua.get('化忌', {}) | |
| huahu_star = year_sihua.get('化禄', {}).get('palace') | |
| huaquan_star = year_sihua.get('化权', {}).get('palace') | |
| huake_star = year_sihua.get('化科', {}).get('palace') | |
| sihua_text = None | |
| if spouse_has_huaji: | |
| sihua_text = SIHUA_IN_FUQI_GU['化忌'] | |
| elif huahu_star == '夫妻宫': | |
| sihua_text = SIHUA_IN_FUQI_GU['化禄'] | |
| elif huaquan_star == '夫妻宫': | |
| sihua_text = SIHUA_IN_FUQI_GU['化权'] | |
| elif huake_star == '夫妻宫': | |
| sihua_text = SIHUA_IN_FUQI_GU['化科'] | |
| # 婚姻质量判断 | |
| caution_stars = ['廉贞', '破军', '七杀', '武曲', '巨门'] | |
| good_stars = ['天同', '天府', '天相', '太阴', '天梁'] | |
| if main_star_data: | |
| if any(s in caution_stars for s in spouse_stars) or spouse_has_huaji: | |
| result['marriage_quality']['level'] = SeverityLevel.CAUTION.value | |
| elif any(s in good_stars for s in spouse_stars): | |
| result['marriage_quality']['level'] = SeverityLevel.AUSPICIOUS.value | |
| else: | |
| result['marriage_quality']['level'] = SeverityLevel.NEUTRAL.value | |
| # 用主星断语构建分析 | |
| analysis_parts = [main_star_data['summary']] | |
| if spouse_has_huaji: | |
| analysis_parts.append(f"夫妻宫化忌:{main_star_data['bad']}") | |
| else: | |
| analysis_parts.append(f"吉象:{main_star_data['good']}") | |
| analysis_parts.append(f"注意:{main_star_data['bad']}") | |
| result['marriage_quality']['analysis'] = ';'.join(analysis_parts) | |
| # 婚期建议(来自主星) | |
| result['timing']['advice'] = main_star_data['timing'] | |
| # 倪海厦原话(如有) | |
| if main_star_data.get('ni_quote'): | |
| result['ni_quote'] = main_star_data['ni_quote'] | |
| # 四化补充 | |
| if sihua_text: | |
| result['sihua_analysis'] = sihua_text | |
| # 婚期建议(如果主星没有提供,给通用建议) | |
| if not result['timing']['advice']: | |
| result['timing']['advice'] = ( | |
| "建议选择红鸾、天喜相会的年份考虑婚姻大事。" | |
| "如果流年有化忌,建议过忌成婚(化忌年份之后结婚)更为稳妥。" | |
| ) | |
| # 综合解读 | |
| if result['critical_warning']: | |
| result['interpretation'] = result['critical_warning']['processed'] | |
| elif result['marriage_quality']['level'] == SeverityLevel.AUSPICIOUS.value: | |
| main_text = result['marriage_quality'].get('analysis', '') | |
| result['interpretation'] = ( | |
| f"{main_text}\n\n" | |
| "您的婚姻配置整体良好,在对的时间遇到对的人," | |
| "是命理和努力共同作用的结果。珍惜缘分,用心经营。" | |
| ) | |
| elif result['marriage_quality']['level'] == SeverityLevel.CAUTION.value: | |
| main_text = result['marriage_quality'].get('analysis', '') | |
| result['interpretation'] = ( | |
| f"{main_text}\n\n" | |
| "婚姻需要比一般人更用心经营。" | |
| "感情路上的波折,是让您更清楚自己真正需要什么样的伴侣。" | |
| "宜晚婚,婚前多了解对方,婚后多沟通包容。" | |
| ) | |
| else: | |
| result['interpretation'] = ( | |
| "您的婚姻运势属于平稳类型,需要用心去经营。" | |
| "不必着急,对的人值得等待。婚后的幸福,取决于双方的共同努力。" | |
| ) | |
| return result | |
| def _analyze_children( | |
| self, | |
| children_palace: Dict, | |
| year_sihua: Dict, | |
| gender: str | |
| ) -> Dict[str, Any]: | |
| """ | |
| 分析子女运 | |
| 核心规则: | |
| - 阳星代表儿子,阴星代表女儿 | |
| - 化忌入子女宫主无子 | |
| - 面相:左眼袋代表儿子,右眼袋代表女儿 | |
| """ | |
| result = { | |
| 'palace_name': '子女宫', | |
| 'quantity': {'estimate': '', 'sons': 0, 'daughters': 0}, | |
| 'first_child': {'gender': '', 'analysis': ''}, | |
| 'quality': {'level': SeverityLevel.NEUTRAL.value, 'analysis': ''}, | |
| 'timing': {'advice': ''}, | |
| 'interpretation': '' | |
| } | |
| major_stars = self._extract_stars(children_palace, 'major_stars') | |
| minor_stars = self._extract_stars(children_palace, 'minor_stars') | |
| # 检查化忌 | |
| huaji_palace = year_sihua.get('化忌', {}).get('palace') | |
| has_huaji = huaji_palace == '子女宫' | |
| # 数量估算 | |
| sons = 0 | |
| for star in major_stars: | |
| if star in self.son_star_count: | |
| sons += self.son_star_count[star] | |
| result['quantity']['sons'] = sons | |
| result['quantity']['estimate'] = f"命理上预示可能有{sons}个孩子" if sons > 0 else "子女数量需综合判断" | |
| # 头胎性别判断 | |
| if any(s in self.yang_stars for s in major_stars): | |
| result['first_child']['gender'] = '男孩倾向' | |
| result['first_child']['analysis'] = '子女宫阳星坐守,头胎可能为男孩' | |
| elif any(s in self.yin_stars for s in major_stars): | |
| result['first_child']['gender'] = '女孩倾向' | |
| result['first_child']['analysis'] = '子女宫阴星坐守,头胎可能为女孩' | |
| else: | |
| result['first_child']['gender'] = '均可' | |
| result['first_child']['analysis'] = '头胎性别需综合其他因素判断' | |
| # 子女品质 | |
| if has_huaji: | |
| result['quality']['level'] = SeverityLevel.CAUTION.value | |
| result['quality']['analysis'] = ( | |
| "子女宫有化忌,暗示在子女方面可能需要多费心。" | |
| "这可能表现为受孕困难、子女体质需要照顾,或者亲子关系需要经营。" | |
| "建议提前做好准备,不必过于担忧。现代医学和教育方法都很发达。" | |
| ) | |
| elif '紫微' in major_stars or '天府' in major_stars: | |
| result['quality']['level'] = SeverityLevel.VERY_AUSPICIOUS.value | |
| result['quality']['analysis'] = ( | |
| "子女宫有贵星,主子女聪明有出息。" | |
| "虽然教养过程中可能会有挑战,但最终会成材。" | |
| ) | |
| elif any(s in self.ji_stars for s in minor_stars): | |
| result['quality']['level'] = SeverityLevel.AUSPICIOUS.value | |
| result['quality']['analysis'] = ( | |
| "子女宫有吉星辅助,主子女乖巧懂事。" | |
| "亲子关系融洽,教育过程顺利。" | |
| ) | |
| # 受孕时机建议 | |
| result['timing']['advice'] = ( | |
| "传统命理建议选择命盘最好的宫位前一年年中受孕。" | |
| "但现代社会更重要的是双方身体健康、经济稳定、感情和睦。" | |
| "顺其自然,宝宝会在对的时间来到。" | |
| ) | |
| # 综合解读 | |
| if has_huaji: | |
| result['interpretation'] = ( | |
| "您的子女运势需要多一些关注和努力。" | |
| "但请记住,命理只是参考,不是定数。" | |
| "现代医学发达,良好的备孕和教育都能帮助您实现为人父母的愿望。" | |
| "有时候,来之不易的孩子反而更加珍贵。" | |
| ) | |
| else: | |
| result['interpretation'] = ( | |
| "您的子女运势良好,与孩子的缘分不错。" | |
| "作为父母,最重要的是给予孩子足够的爱和正确的引导。" | |
| "命理上的好配置,加上您的用心养育,孩子一定会健康成长。" | |
| ) | |
| return result | |
| def _analyze_sun_for_father( | |
| self, | |
| palace_map: Dict, | |
| year_sihua: Dict | |
| ) -> Dict[str, Any]: | |
| """分析太阳星判断父亲运""" | |
| result = { | |
| 'status': 'normal', | |
| 'analysis': [] | |
| } | |
| # 查找太阳位置 | |
| sun_palace = None | |
| sun_brightness = None | |
| for palace_name, palace in palace_map.items(): | |
| major_stars = self._extract_stars(palace, 'major_stars') | |
| if '太阳' in major_stars: | |
| sun_palace = palace_name | |
| # 简化亮度判断 | |
| sun_brightness = '旺' if palace_name in ['卯', '辰', '巳', '午'] else '陷' | |
| break | |
| # 检查太阳是否化忌 | |
| huaji_star = year_sihua.get('化忌', {}).get('star') | |
| sun_huaji = huaji_star == '太阳' | |
| if sun_huaji: | |
| result['status'] = 'caution' | |
| result['analysis'].append('太阳化忌,父亲方面需要多关注') | |
| elif sun_brightness == '陷': | |
| result['status'] = 'caution' | |
| result['analysis'].append('太阳落陷,与父亲关系可能较疏远') | |
| else: | |
| result['status'] = 'good' | |
| result['analysis'].append('太阳状态良好,父亲运势平稳') | |
| return result | |
| def _analyze_moon_for_mother( | |
| self, | |
| palace_map: Dict, | |
| year_sihua: Dict | |
| ) -> Dict[str, Any]: | |
| """分析太阴星判断母亲运""" | |
| result = { | |
| 'status': 'normal', | |
| 'analysis': [] | |
| } | |
| # 查找太阴位置 | |
| moon_palace = None | |
| moon_brightness = None | |
| for palace_name, palace in palace_map.items(): | |
| major_stars = self._extract_stars(palace, 'major_stars') | |
| if '太阴' in major_stars: | |
| moon_palace = palace_name | |
| # 简化亮度判断 | |
| moon_brightness = '旺' if palace_name in ['酉', '戌', '亥', '子'] else '陷' | |
| break | |
| # 检查太阴是否化忌 | |
| huaji_star = year_sihua.get('化忌', {}).get('star') | |
| moon_huaji = huaji_star == '太阴' | |
| if moon_huaji: | |
| result['status'] = 'caution' | |
| result['analysis'].append('太阴化忌,母亲方面需要多关注') | |
| elif moon_brightness == '陷': | |
| result['status'] = 'caution' | |
| result['analysis'].append('太阴落陷,与母亲关系可能需要多经营') | |
| else: | |
| result['status'] = 'good' | |
| result['analysis'].append('太阴状态良好,母亲运势平稳') | |
| return result | |
| def _analyze_spouse_traits( | |
| self, | |
| spouse_stars: List[str], | |
| spouse_minor: List[str], | |
| gender: str | |
| ) -> List[str]: | |
| """分析配偶特征(使用14颗主星完整断语库)""" | |
| traits = [] | |
| for star in spouse_stars: | |
| if star in STAR_IN_FUQI_GU: | |
| traits.append(STAR_IN_FUQI_GU[star]['spouse_traits']) | |
| # 辅星修饰 | |
| if any(s in ['文昌', '文曲'] for s in spouse_minor): | |
| traits.append('配偶有才华,可能从事文化艺术相关工作') | |
| if any(s in ['天魁', '天钺'] for s in spouse_minor): | |
| traits.append('配偶有贵人运,社会地位不错') | |
| if any(s in ['左辅', '右弼'] for s in spouse_minor): | |
| traits.append('配偶乐于助人,人缘极好,是可靠的伴侣') | |
| return traits if traits else ['配偶条件中等,需综合其他因素判断'] | |
| def _is_star_fallen(self, star_name: str, palace_map: Dict) -> bool: | |
| """简化判断星曜是否落陷""" | |
| # 简化逻辑:检查star是否存在且在不利位置 | |
| # 实际应该根据星曜亮度表判断 | |
| for palace_name, palace in palace_map.items(): | |
| major_stars = self._extract_stars(palace, 'major_stars') | |
| if star_name in major_stars: | |
| # 太阳在酉、戌、亥、子落陷 | |
| if star_name == '太阳' and palace_name in ['酉', '戌', '亥', '子']: | |
| return True | |
| # 太阴在卯、辰、巳、午落陷 | |
| if star_name == '太阴' and palace_name in ['卯', '辰', '巳', '午']: | |
| return True | |
| return False | |
| def _extract_stars(self, palace: Dict, star_type: str) -> List[str]: | |
| """从宫位数据中提取星曜名称""" | |
| stars = palace.get(star_type, []) | |
| if not stars: | |
| return [] | |
| # 处理星曜可能是dict或str的情况 | |
| result = [] | |
| for star in stars: | |
| if isinstance(star, dict): | |
| result.append(star.get('name', '')) | |
| else: | |
| result.append(str(star)) | |
| return result | |
| def _generate_relations_summary( | |
| self, | |
| palaces: List[Dict], | |
| sihua_analysis: Dict, | |
| gender: str | |
| ) -> Dict[str, Any]: | |
| """生成六亲总结""" | |
| return { | |
| 'overall_fortune': '六亲运势综合分析已完成', | |
| 'key_points': [ | |
| '父母运需关注日月星位置和亮度', | |
| '兄弟运需配合面相眉毛判断', | |
| '夫妻运关键看福德宫(比夫妻宫更重要!)', | |
| '子女运看阳星阴星判断性别' | |
| ], | |
| 'methodology': '基于86个六亲批断技巧的专业分析', | |
| 'disclaimer': ( | |
| "六亲分析仅供参考,实际关系受个人努力影响很大。" | |
| "命理是了解自己和家人的工具,不是定数。" | |
| "用心经营每一份关系,才是最重要的。" | |
| ) | |
| } | |
| def _check_critical_warnings( | |
| self, | |
| palace_map: Dict, | |
| year_sihua: Dict, | |
| gender: str | |
| ) -> List[Dict]: | |
| """检查重大警告""" | |
| warnings = [] | |
| huaji_palace = year_sihua.get('化忌', {}).get('palace') | |
| # 福德宫化忌 → 夫妻死别 | |
| if huaji_palace == '福德宫': | |
| warnings.append({ | |
| 'type': 'fude_huaji', | |
| 'severity': 'high', | |
| 'message': '福德宫化忌,婚姻方面需要特别用心经营', | |
| 'advice': '建议关注配偶健康,多沟通理解,共同面对挑战' | |
| }) | |
| # 日月反背 | |
| is_sun_fallen = self._is_star_fallen('太阳', palace_map) | |
| is_moon_fallen = self._is_star_fallen('太阴', palace_map) | |
| if is_sun_fallen and is_moon_fallen: | |
| warnings.append({ | |
| 'type': 'sun_moon_reverse', | |
| 'severity': 'medium', | |
| 'message': '日月反背格局,六亲关系需要主动经营', | |
| 'advice': '独立自主是优势,但也要主动维护家庭关系' | |
| }) | |
| return warnings | |
| # 单例模式 | |
| _six_relations_instance = None | |
| def get_six_relations_interpreter() -> SixRelationsInterpreter: | |
| """获取六亲解读器单例""" | |
| global _six_relations_instance | |
| if _six_relations_instance is None: | |
| _six_relations_instance = SixRelationsInterpreter() | |
| return _six_relations_instance | |
| # 导出 | |
| __all__ = ['SixRelationsInterpreter', 'RelationType', 'SeverityLevel', 'get_six_relations_interpreter'] | |