dsh-metaphysics 0.38.2 → 0.46.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,245 @@
1
+ // 紫微解读词库:宫位取象 / 主星细节 / 双星组合 / 煞星辅星 / 四化落宫 / 庙旺措辞 / 格局读法
2
+ //
3
+ // 分工:ziwei.js 只负责「算出什么星落在哪一宫」,这里只负责「这件事怎么说」。
4
+ // 词库不含任何判断条件,换个排盘引擎结论也不会跟着变——凡是需要看星位才能定的,都留在引擎里。
5
+ //
6
+ // 取词的三条口径:
7
+ // · 只说倾向与做法,不下断语(「容易」「多半」「宜」而不是「一定」「必然」)
8
+ // · 吉星不吹、煞星不吓:煞星写「这一宫会怎样」,再补一句可以怎么做
9
+ // · 星曜亮度只调语气,不改结论:庙旺是「长处放得开」,落陷是「长处不容易使上」,都不是好坏判决
10
+
11
+ // ── 十二宫:这一宫管什么、回答什么问题、被引动时表现成什么 ──────────
12
+ export const PALACE_FIELD = {
13
+ 命宫: { field: '你自己、性格与选择的出发点', ask: '我是个什么样的人、遇事怎么反应', drift: '整个人的状态与主见', huaJi: '容易对自己不满意,反复琢磨「是不是还不够好」' },
14
+ 兄弟: { field: '手足、同辈与合作', ask: '和同辈人怎么相处', drift: '同辈之间的支持与较劲', huaJi: '同辈之间容易有拉扯,合作前先把账算清楚' },
15
+ 夫妻: { field: '亲密关系与伴侣', ask: '感情里怎么相处', drift: '关系的温度与相处方式', huaJi: '感情里容易反复计较,越在意越觉得累' },
16
+ 子女: { field: '子女、晚辈与作品', ask: '和晚辈、和自己的创作怎么相处', drift: '照顾与创造', huaJi: '对子女或作品容易操心过头,投入多而见效慢' },
17
+ 财帛: { field: '赚钱方式与现金流', ask: '钱从哪来、留不留得住', drift: '进项与花销', huaJi: '钱上容易反复,进得来也容易散,先管现金再谈收益' },
18
+ 疾厄: { field: '身体底子与情绪出口', ask: '身体哪里要多留意', drift: '作息与身体的信号', huaJi: '情绪容易往身体上走,压力最先反映在睡眠与肠胃' },
19
+ 迁移: { field: '出门、环境与人缘', ask: '在外发展顺不顺', drift: '外部环境与人际机会', huaJi: '在外容易遇到消耗,换环境前先把代价想清楚' },
20
+ 交友: { field: '朋友、同事与部属', ask: '怎么识人、怎么带人', drift: '身边的人际圈', huaJi: '容易替别人操心、被人情拖住,帮人之前先给自己留余地' },
21
+ 官禄: { field: '事业方向与做事方式', ask: '做什么工作、怎么做事', drift: '工作与身份感', huaJi: '工作上容易反复调整方向,先把一件事做完再谈换' },
22
+ 田宅: { field: '家庭、住所与积累', ask: '安家、置产与家底', drift: '居住环境与家庭气氛', huaJi: '家里的事容易牵扯精力,置产与搬迁宜缓不宜急' },
23
+ 福德: { field: '精神享受与内在节奏', ask: '怎么让自己舒服、怎么放松', drift: '心境、兴趣与休息', huaJi: '想得多、放不下,休息也休息不踏实' },
24
+ 父母: { field: '长辈、上司与文书', ask: '和长辈上级的关系、文书合约', drift: '长辈缘与合同文书', huaJi: '与长辈上级容易有隔阂,文书合约要逐条看清' },
25
+ };
26
+
27
+ // ── 十四主星:别称、关键词、得地/失地两种语气、长处与要留意的点 ──────
28
+ // bright 用在庙旺得利,dim 用在平不陷;gift 是「可以拿去用」,watch 是「用过头会出事」。
29
+ export const STAR_EXTRA = {
30
+ 紫微: { alias: '帝星', key: '尊', bright: '心里像有根定海针,遇事敢拍板,也压得住场面', dim: '容易端着架子,想法很多却不肯先低头', gift: '定方向、分主次、把人组织起来', watch: '面子与身段' },
31
+ 天机: { alias: '智星', key: '动', bright: '脑子快、点子多,变化里反而找得到路', dim: '想法多过行动,容易在犹豫里把时间耗掉', gift: '策划、推演、把复杂的事拆成步骤', watch: '想太多、坐不住' },
32
+ 太阳: { alias: '日主', key: '公', bright: '外放热心,愿意担事,也容易被看见', dim: '付出多、回报少,容易觉得不被认可', gift: '对外沟通、带头做事、把光照到别人身上', watch: '用力过度、忘了照顾自己' },
33
+ 武曲: { alias: '财星', key: '实', bright: '务实果决,认结果、扛得住硬活', dim: '容易只认数字,人情上显得生硬', gift: '算账、执行、把事做扎实', watch: '太硬、不给缓冲' },
34
+ 天同: { alias: '福星', key: '柔', bright: '脾气温和,能把紧张的气氛化开', dim: '容易贪舒服、事情拖着不动', gift: '协调、服务、让人放松下来', watch: '安逸与拖延' },
35
+ 廉贞: { alias: '囚星', key: '细', bright: '细腻又讲原则,做事有分寸', dim: '容易较真到钻牛角尖,情绪起伏也大', gift: '抓细节、守规矩、做需要精度的活', watch: '情绪郁结、过度执着' },
36
+ 天府: { alias: '库星', key: '稳', bright: '稳得住、会存会调度,是团队的压舱石', dim: '偏保守,机会来了也不敢动', gift: '守成、管资源、把局面稳住', watch: '求稳到错过时机' },
37
+ 太阴: { alias: '月主', key: '藏', bright: '心思细、耐得住,静下来能做深事', dim: '敏感多虑,情绪都藏在心里', gift: '研究、文案、需要长期专注的活', watch: '内耗与睡眠' },
38
+ 贪狼: { alias: '桃花', key: '贪', bright: '好奇、活络、人缘好,学什么都快', dim: '什么都想要,结果哪样都没做透', gift: '开拓、交际、把资源变成机会', watch: '边界与节制' },
39
+ 巨门: { alias: '暗星', key: '辩', bright: '口才与逻辑都好,靠说理就能服人', dim: '容易多疑,一句话能听出三层意思', gift: '谈判、教学、法务、需要辨析的活', watch: '言语是非与疑心' },
40
+ 天相: { alias: '印星', key: '辅', bright: '讲规矩、会协调,是让人放心的副手', dim: '容易迁就别人,委屈自己也不说', gift: '协调、执行、把流程跑顺', watch: '太在意别人怎么看' },
41
+ 天梁: { alias: '荫星', key: '荫', bright: '有长者气,能扛事、也愿意护着人', dim: '操心过度,替别人背了不该背的', gift: '顾问、教育、医护、替人排忧', watch: '管太多、放不下' },
42
+ 七杀: { alias: '将星', key: '决', bright: '果断敢冲,压力越大越顶得住', dim: '容易硬碰硬,把关系撞出裂痕', gift: '开拓、攻坚、从零打出一块地', watch: '急与硬' },
43
+ 破军: { alias: '耗星', key: '破', bright: '敢破敢立,旧局推得动、新局立得起', dim: '推翻了却重建不了,反复折腾', gift: '变革、重组、做从零到一的事', watch: '冲动与耗损' },
44
+ };
45
+
46
+ // ── 双星同宫:两颗主星挤在一宫时怎么读 ────────────────────────────
47
+ // 一句话说清「两股力叠在一起是什么味道」,watch 说明它最容易走偏的方向。
48
+ export const STAR_PAIR = {
49
+ 紫微天府: { gist: '尊贵加稳重:既想有位置,也守得住家底,适合在体系里往上走', watch: '别把稳做成不动' },
50
+ 紫微贪狼: { gist: '帝星带桃花:有格局也有玩心,门路多、欲望也多', watch: '兴趣铺太开,主次容易乱' },
51
+ 紫微天相: { gist: '帝星配印:权力与规矩并存,做事讲体面,也讲章法', watch: '太要好看,容易被形式拖住' },
52
+ 紫微七杀: { gist: '帝星加将星:气魄大、手腕硬,开得了局面', watch: '压得住人也容易压伤人' },
53
+ 紫微破军: { gist: '帝星带耗:敢于推倒重来,一生常有大的转身', watch: '代价是先破后立,破之前先备好退路' },
54
+ 天机太阴: { gist: '机月同宫:心思细、筹划深,适合幕后与会动脑子的活', watch: '算得太细,反而迟迟不动手' },
55
+ 天机巨门: { gist: '机巨同宫:头脑快、嘴也利,论辩是强项', watch: '话多容易生是非' },
56
+ 天机天梁: { gist: '机梁同宫:善谋又讲原则,常是出主意又担责任的人', watch: '替人想太多,累的是自己' },
57
+ 太阳太阴: { gist: '日月同宫:外放与内敛同时在身上,两种节奏互相拉扯', watch: '别自己跟自己打架' },
58
+ 太阳巨门: { gist: '日巨同宫:靠一张嘴把事说成,适合以表达与说服为业', watch: '说话直,容易得罪人' },
59
+ 太阳天梁: { gist: '阳梁同宫:热心又有长者气,助人型,容易被人依赖', watch: '别把别人的事全揽过来' },
60
+ 武曲天府: { gist: '武府同宫:会算也会守,财务与执行双强,稳中有实', watch: '只算眼前账,容易错过长线' },
61
+ 武曲贪狼: { gist: '武贪同宫:务实与欲望并存,传统说三十岁以后越走越开', watch: '先把本事磨厚,别急着要结果' },
62
+ 武曲天相: { gist: '武相同宫:讲效率也讲规矩,适合在大机构里做执行', watch: '规矩压得太死,手脚会绑住' },
63
+ 武曲七杀: { gist: '武杀同宫:硬碰硬的组合,冲劲足、压力也大', watch: '成事快,耗得也快' },
64
+ 武曲破军: { gist: '武破同宫:能打也能拆,适合攻坚与改革', watch: '聚散都快,留不住的要认' },
65
+ 天同太阴: { gist: '同阴同宫:温和细腻,重感受,适合安静一点的环境', watch: '太舒服就不想动' },
66
+ 天同巨门: { gist: '同巨同宫:想得软、说得直,容易在亲近的人面前失控', watch: '把话说软一点' },
67
+ 天同天梁: { gist: '同梁同宫:有福气也有长者缘,遇事常有人替你说句话', watch: '依赖久了会长不大' },
68
+ 廉贞天府: { gist: '廉府同宫:精细配稳重,守得住规矩也管得住资源', watch: '过分谨慎会错过窗口' },
69
+ 廉贞贪狼: { gist: '廉贪同宫:欲望与原则拉扯,才艺多、诱惑也多', watch: '重心要自己定,别被带着走' },
70
+ 廉贞天相: { gist: '廉相同宫:讲分寸、重体面,做事有章法', watch: '被规矩绑住手脚' },
71
+ 廉贞七杀: { gist: '廉杀同宫:刚烈果决,抗压强,敢碰难事', watch: '硬碰硬伤的是关系' },
72
+ 廉贞破军: { gist: '廉破同宫:敢于破局,变动多,适合在动荡里做事', watch: '变动要有节奏,别一直重来' },
73
+ };
74
+
75
+ // ── 煞星:这一宫会怎样、可以怎么应对 ──────────────────────────────
76
+ export const SHA_STAR = {
77
+ 擎羊: { nature: '锐、直接、带冲撞', inPalace: '让这一宫的事来得急,容易有竞争与对抗', remind: '慢半拍再回应,别用人身去硬碰' },
78
+ 陀罗: { nature: '拖、磨、反复', inPalace: '让这一宫的事拖得久,越急越推不动', remind: '把大目标切成小段,靠节奏推进而不是靠爆发' },
79
+ 火星: { nature: '急、爆、来得快去得快', inPalace: '让这一宫的事突然发生,情绪也容易点着', remind: '起的当下先别做决定,隔一天再看' },
80
+ 铃星: { nature: '闷、记、往里烧', inPalace: '让这一宫的事闷着发酵,不说并不代表没有', remind: '把不满讲出来,比憋着省事' },
81
+ 地空: { nature: '抽离、落空', inPalace: '让这一宫的努力容易「看着有、抓不住」', remind: '重要的事留书面凭证,别只靠口头约定' },
82
+ 地劫: { nature: '耗、变动', inPalace: '让这一宫的资源容易在变动里流失', remind: '先设止损线,再谈投入' },
83
+ 天刑: { nature: '约束、规矩', inPalace: '这一宫容易受规则或外力约束', remind: '照流程走,别找捷径' },
84
+ 天姚: { nature: '吸引、暧昧', inPalace: '这一宫容易有人情与暧昧的牵扯', remind: '边界说清楚,别用含糊换方便' },
85
+ 咸池: { nature: '情欲、外缘', inPalace: '这一宫容易被外在的吸引牵动', remind: '分清一时心动与长期相处' },
86
+ 孤辰: { nature: '孤、独', inPalace: '这一宫的事常要自己扛', remind: '主动开口求援,不丢人' },
87
+ 寡宿: { nature: '淡、疏', inPalace: '这一宫的关系容易偏淡', remind: '关系要靠主动经营' },
88
+ 破碎: { nature: '碎、不整', inPalace: '这一宫的成果容易零散、难成整块', remind: '把事收尾收完整' },
89
+ 天哭: { nature: '忧、敏感', inPalace: '这一宫容易让人心里发紧', remind: '情绪来了先照顾好身体' },
90
+ 天虚: { nature: '虚、不实', inPalace: '这一宫容易雷声大雨点小', remind: '看落地证据,不看承诺' },
91
+ };
92
+
93
+ // 六煞:只有这六颗在维度文案里单独点名;其余煞星(天刑天姚咸池孤辰寡宿破碎天哭天虚)
94
+ // 影响更细,放在逐宫分析里出现,不往五维度上叠,免得把小事说成大事。
95
+ export const MAIN_SHA = ['擎羊', '陀罗', '火星', '铃星', '地空', '地劫'];
96
+
97
+ // ── 吉星与辅星:这一宫的白送项 ──────────────────────────────────
98
+ export const FU_STAR = {
99
+ 左辅: { nature: '助力、帮手', gift: '这一宫容易有人搭把手', note: '多把事交出去,别一个人扛' },
100
+ 右弼: { nature: '援手、缓和', gift: '这一宫容易在关键处被接住', note: '接受帮助,也记得回礼' },
101
+ 文昌: { nature: '文书、条理', gift: '这一宫的书面与规划能力强', note: '把想法落成文档' },
102
+ 文曲: { nature: '才艺、口才', gift: '这一宫的表达与感受力好', note: '用表达换机会' },
103
+ 天魁: { nature: '明文贵人', gift: '这一宫容易遇到明面上的提携', note: '该争取的位置直接开口' },
104
+ 天钺: { nature: '暗助贵人', gift: '这一宫常有人在背后帮忙', note: '人情记着,早晚用得上' },
105
+ 禄存: { nature: '守财、积存', gift: '这一宫的东西守得住', note: '先存后花' },
106
+ 天马: { nature: '动、驿马', gift: '这一宫的事常与移动、外地有关', note: '动起来比原地等更有利' },
107
+ 台辅: { nature: '台面、名分', gift: '这一宫容易被摆到台面上', note: '露脸的机会别推' },
108
+ 封诰: { nature: '封赏、认证', gift: '这一宫的资质与头衔有用', note: '该考的证早点考' },
109
+ 红鸾: { nature: '喜事', gift: '这一宫容易有喜庆与好消息', note: '好消息要说出来' },
110
+ 天喜: { nature: '喜庆、人缘', gift: '这一宫的人缘与气氛好', note: '多参加场合' },
111
+ 龙池: { nature: '雅、工整', gift: '这一宫有审美与工整的一面', note: '把细节做好' },
112
+ 凤阁: { nature: '华、体面', gift: '这一宫讲究排场与观感', note: '该有的体面别省' },
113
+ 三台: { nature: '地位、层级', gift: '这一宫容易有位置感', note: '按层级办事' },
114
+ 八座: { nature: '席位、稳定', gift: '这一宫坐得稳', note: '守住已有的位置' },
115
+ 恩光: { nature: '恩、被赏识', gift: '这一宫容易被赏识', note: '把成果让人看见' },
116
+ 天贵: { nature: '贵气、身份', gift: '这一宫带一点贵气', note: '抬头挺胸,别自轻' },
117
+ };
118
+
119
+ // ── 四化:一支化代表什么态度,落到具体宫位又是哪件事 ─────────────────
120
+ export const HUA_READ = {
121
+ 禄: { key: '得', gist: '顺手、有人帮,做起来不费劲' },
122
+ 权: { key: '掌', gist: '要自己拿主意,也容易用力过猛' },
123
+ 科: { key: '名', gist: '带一层体面与名声,遇事多能收得漂亮' },
124
+ 忌: { key: '执', gist: '容易在意、反复,是心里放不下的那一块' },
125
+ };
126
+
127
+ // ── 庙旺得利平不陷:同一条结论的七种语气 ──────────────────────────
128
+ export const BRIGHT_READ = {
129
+ 庙: { word: '得地', tone: 'good', plain: '长处放得开,几乎是本色出演' },
130
+ 旺: { word: '有力', tone: 'good', plain: '特点容易显出来,做事有底气' },
131
+ 得: { word: '尚可', tone: 'neutral', plain: '能用,需要一点外力配合' },
132
+ 利: { word: '中平', tone: 'neutral', plain: '长处与短板都在,看怎么用' },
133
+ 平: { word: '偏弱', tone: 'neutral', plain: '不太争得到位置,宜借势' },
134
+ 不: { word: '不得地', tone: 'bad', plain: '长处不容易使上,得多绕一步' },
135
+ 陷: { word: '失地', tone: 'bad', plain: '容易往负面走,更需要自觉' },
136
+ };
137
+
138
+ // ── 三十四条格局:一句人话 + 一条做法 ─────────────────────────────
139
+ export const PATTERN_READ = {
140
+ 紫府同宫: { gist: '帝星与库星同坐命宫:格局稳、底气足,天生适合做统筹', advice: '别把稳做成保守,该出手时出手' },
141
+ 紫府朝垣: { gist: '紫微天府会照命宫:有贵气也有实力,环境一般不会太差', advice: '靠结构做事,别只靠个人硬撑' },
142
+ 君臣庆会: { gist: '紫微或天府坐命,又得左辅右弼魁钺会照:有人帮、有位置', advice: '把团队搭起来,别一个人扛' },
143
+ 极向离明: { gist: '紫微在午守命:处在最亮的位置,格局与声势都强', advice: '光环大,注意别把人压住' },
144
+ 七杀朝斗: { gist: '七杀在子午守命:杀伐果断,能在压力下成事', advice: '硬气用在事上,不用在关系上' },
145
+ 英星入庙: { gist: '破军在子午守命:敢破敢立,常能从零打出一片', advice: '破之后要有立,别只破不立' },
146
+ 石中隐玉: { gist: '巨门在子午守命:本事藏在里面,要靠机会慢慢磨出来', advice: '别因为一时不被看见就放弃' },
147
+ 巨日同宫: { gist: '巨门太阳同宫:靠表达与说服开路,越抛头露面越有利', advice: '话多的时候注意分寸' },
148
+ 日月夹命: { gist: '太阳太阴分居命宫两侧:内外两种力量都来帮你', advice: '一快一慢,别自己跟自己打架' },
149
+ 日月对照: { gist: '太阳太阴分守命迁:外放与内敛互为表里', advice: '换环境对你是加分项' },
150
+ 左右夹命: { gist: '左辅右弼夹命:关键处总有人搭手', advice: '主动求助,贵人才好使力' },
151
+ 昌曲夹命: { gist: '文昌文曲夹命:文书、考试、表达上占便宜', advice: '把才华落到作品与证书上' },
152
+ 魁钺夹命: { gist: '天魁天钺夹命:明暗两路都有人提携', advice: '机会来了别客气' },
153
+ 三奇嘉会: { gist: '化禄化权化科会于命宫三方:三样都到位,是标准的顺局', advice: '别把顺境当常态,留一手' },
154
+ 双禄朝垣: { gist: '禄存与化禄同会命宫三方:进项与积累两头都有', advice: '存下来的才算数' },
155
+ 府相朝垣: { gist: '天府天相会于命宫三方:稳当、讲规矩,适合体系内发展', advice: '按流程走,别嫌慢' },
156
+ 禄马交驰: { gist: '禄存与天马同宫或对照:动中得财,越跑越有', advice: '别在原地等机会' },
157
+ 月朗天门: { gist: '太阴在亥守命:心思澄明,适合做需要静气的事', advice: '把敏感用在专业上,别用在揣测上' },
158
+ 日出扶桑: { gist: '太阳在卯守命:正当升起的位置,势头好、人也敞亮', advice: '趁势做事,别等' },
159
+ 机月同梁: { gist: '天机太阴天梁会命:动脑、静气、长者缘齐备,适合稳定的专业路线', advice: '少折腾,深耕一门' },
160
+ 武贪同行: { gist: '武曲贪狼同宫:务实与欲望并存,传统说三十岁后越走越开', advice: '先把本事磨厚,别急着要结果' },
161
+ 命无正曜: { gist: '命宫无主星:性格由环境与对宫塑造,适应力是你的长处', advice: '选对环境比选对方法更要紧' },
162
+ 杀破狼: { gist: '七杀破军贪狼会命:一生变动多、节奏快,适合在动荡里做事', advice: '把变动变成主动选择,而不是被动应付' },
163
+ 双禄交流: { gist: '禄存与化禄相对:财路两头通', advice: '现金流要管好,小心两头都花' },
164
+ 火贪铃贪: { gist: '贪狼遇火星或铃星:爆发型的组合,机会来得猛', advice: '机会来时别犹豫,走时别恋战' },
165
+ 火铃夹命: { gist: '火星铃星分居命宫两侧:情绪容易被点着,也容易被消耗', advice: '先把火气压一压,事就顺一半' },
166
+ 羊陀夹命: { gist: '禄存守命、擎羊陀罗前后夹之:位置稳,但四周都是压力', advice: '守得住就别急着动' },
167
+ 羊陀夹忌: { gist: '化忌与禄存同宫、羊陀夹之:传统里最需要留意的一类结构', advice: '那件事慢一点,让别人先动' },
168
+ 铃昌陀武: { gist: '铃星文昌陀罗武曲会于命宫三方:想法多、爱走弯路,容易自己把自己绊住', advice: '做决定前先写下来,隔一夜再定' },
169
+ 命里逢空: { gist: '地空地劫会命:计划常有意外的抽离,落袋才算数', advice: '留凭证、留退路' },
170
+ 马头带箭: { gist: '擎羊在午守命:锋芒极盛,成事快、伤人也不慢', advice: '冲劲用在攻坚,不用在争输赢' },
171
+ 天罗地网: { gist: '命宫在辰戌:天罗地网,走的是有限制的路', advice: '在框里做出成绩,别硬撞框' },
172
+ 刑囚夹印: { gist: '廉贞天相同守命宫于子午又遇擎羊:规则与冲撞同时压过来', advice: '循规蹈矩是保命符' },
173
+ 泛水桃花: { gist: '贪狼在子守命:才情与情缘都旺,重心容易散', advice: '给自己立一条不越的线' },
174
+ };
175
+
176
+ /** 宫名 → 取象;盘面上偶尔出现别名(如「交友」也写作「奴仆」),一并认 */
177
+ const PALACE_ALIAS = { 奴仆: '交友', 奴仆宫: '交友', 事业: '官禄', 事业宫: '官禄' };
178
+ export function palaceFieldOf(name) {
179
+ const key = PALACE_ALIAS[String(name || '')] || String(name || '');
180
+ return PALACE_FIELD[key] || null;
181
+ }
182
+
183
+ /** 亮度字符 → 措辞;没有亮度(辅星或未标)时返回 null,调用方各自决定怎么略过 */
184
+ export function brightRead(level) {
185
+ return BRIGHT_READ[String(level || '')] || null;
186
+ }
187
+
188
+ /** 星名 → 细节;不在表里返回 null,绝不临时造词 */
189
+ export function starExtraOf(name) {
190
+ return STAR_EXTRA[String(name || '')] || null;
191
+ }
192
+
193
+ /** 一宫里两颗主星 → 双星组合读法;单星或三颗以上返回 null */
194
+ export function starPairOf(mainStars) {
195
+ const list = (Array.isArray(mainStars) ? mainStars : []).filter(Boolean);
196
+ if (list.length !== 2) return null;
197
+ return STAR_PAIR[list.join('')] || STAR_PAIR[list.slice().reverse().join('')] || null;
198
+ }
199
+
200
+ /** 四化落到某一宫的一句话;宫名不认识就返回空串,由调用方退回通用说法 */
201
+ export function huaInLine(type, palace) {
202
+ const f = palaceFieldOf(palace);
203
+ const h = HUA_READ[type];
204
+ if (!f || !h) return '';
205
+ if (type === '忌') return `化忌入${palace}:${f.huaJi}`;
206
+ const tail = {
207
+ 禄: `${f.field}上来路顺、有人递梯子`,
208
+ 权: `${f.field}上你会想自己拿主意,也容易用力过猛`,
209
+ 科: `${f.field}上体面与名声会帮到你`,
210
+ }[type];
211
+ return tail ? `化${type}入${palace}:${tail}` : '';
212
+ }
213
+
214
+ /** 煞星清单 → 一句「这一宫哪里容易卡住」;清单空则返回空串 */
215
+ export function shaLineOf(names) {
216
+ const list = (Array.isArray(names) ? names : []).filter((n) => SHA_STAR[n]);
217
+ if (!list.length) return '';
218
+ const parts = list.slice(0, 3).map((n) => `${n}(${SHA_STAR[n].nature})${SHA_STAR[n].inPalace}`);
219
+ const remind = list.length === 1 ? SHA_STAR[list[0]].remind : '先处理最急的那一件,其余的会跟着松动';
220
+ return `${parts.join(';')}。做法上:${remind}。`;
221
+ }
222
+
223
+ /** 煞星清单 → 只取星情(不含落宫说法);健康这类不宜展开的维度用这一条 */
224
+ export function shaNatureOf(names) {
225
+ return (Array.isArray(names) ? names : [])
226
+ .map((n) => SHA_STAR[n] && SHA_STAR[n].nature)
227
+ .filter(Boolean)
228
+ .join('、');
229
+ }
230
+
231
+ /** 吉星清单 → 一句「这一宫的白送项」;清单空则返回空串 */
232
+ export function fuLineOf(names) {
233
+ const list = (Array.isArray(names) ? names : []).filter((n) => FU_STAR[n]);
234
+ if (!list.length) return '';
235
+ return list.slice(0, 3).map((n) => `${n}${FU_STAR[n].gift.replace(/^这一宫/, '')}`).join(',');
236
+ }
237
+
238
+ /** 格局名 → 读法;词库里没有的格局只回落到 tone 决定的通用句,不编内容 */
239
+ export function patternReadOf(name, tone) {
240
+ const hit = PATTERN_READ[String(name || '')];
241
+ if (hit) return hit;
242
+ if (tone === 'good') return { gist: '结构偏向有利,具体落在哪件事,要看它牵动的是哪一宫', advice: '顺势把事情做完整' };
243
+ if (tone === 'bad') return { gist: '结构偏向消耗,提示这一块值得多一分留意', advice: '先把节奏放缓,再谈取舍' };
244
+ return { gist: '结构中性,成事与否更多看后天怎么用', advice: '当成提醒,不当成结论' };
245
+ }