""" 六亲解读器 - 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']