dsh-metaphysics 0.62.4 → 0.63.0

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.
package/engine/bazi.js CHANGED
@@ -12,6 +12,7 @@ import { bool } from './bool.js';
12
12
  import { nayinOf } from './nayin.js';
13
13
  import { SANHE } from './sanhe.js';
14
14
  import { analyzeBaziFrame, scoreLuck } from './geju.js';
15
+ import { branchStructureOf, weightPctOf } from './structure.js';
15
16
 
16
17
  // 地支藏干(本气 / 中气 / 余气)
17
18
  // 巳的顺序是「丙庚戊」而不是「丙戊庚」:庚长生于巳,是中气;戊是辰月余气,排末位。
@@ -147,7 +148,38 @@ function rootedWeightOf(pillars, el, factor) {
147
148
  return w;
148
149
  }
149
150
 
150
- /** 干支关系:五合、相冲、相克;六合、三合半合、三会半会拱会、冲、害、破、刑 */
151
+ // ── 暗合(盲派/现代命理的补充定义)───────────────────────────
152
+ // 子平正法只有天干五合;暗合只作取象与风水参考,不参与旺衰与格局。
153
+ // 通合:亥午、寅丑(藏干双合);禄合:卯申、午亥、巳子;午亥与通合重叠时只报通合。
154
+ // 干支暗合取课里明列的六组;自合只取辰(戊癸)。
155
+ const ANHE_TONG = [['亥', '午'], ['寅', '丑']];
156
+ const ANHE_LU = [['卯', '申'], ['午', '亥'], ['巳', '子']];
157
+ const ANHE_GANZHI = new Set(['甲午', '丁亥', '戊子', '辛巳', '壬午', '癸巳']);
158
+ const ANHE_ZIHE = new Set(['辰']);
159
+
160
+ function anheOf(pillars, keys) {
161
+ const out = [];
162
+ const branches = keys.map((k) => pillars[k].branch);
163
+ const has = (a, b) => branches.includes(a) && branches.includes(b);
164
+ const seen = new Set();
165
+ const push = (text) => { if (!seen.has(text)) { seen.add(text); out.push(text); } };
166
+
167
+ for (const [a, b] of ANHE_TONG) if (has(a, b)) push(`${a}${b}通合(藏干双合)`);
168
+ for (const [a, b] of ANHE_LU) {
169
+ if (!has(a, b)) continue;
170
+ if (seen.has(`${a}${b}通合(藏干双合)`) || seen.has(`${b}${a}通合(藏干双合)`)) continue;
171
+ push(`${a}${b}禄合`);
172
+ }
173
+ for (const k of keys) {
174
+ const pl = pillars[k];
175
+ const gz = pl.ganzhi || `${pl.stem}${pl.branch}`;
176
+ if (ANHE_GANZHI.has(gz)) push(`${gz}干支暗合`);
177
+ if (ANHE_ZIHE.has(pl.branch)) push(`${gz}自合`);
178
+ }
179
+ return out;
180
+ }
181
+
182
+ /** 干支关系:五合、相冲、相克;六合、三合半合、三会半会拱会、冲、害、破、刑;暗合另列 */
151
183
  export function buildRelations(pillars, keys = ['year', 'month', 'day', 'hour']) {
152
184
  const stems = keys.map((k) => pillars[k].stem);
153
185
  const branches = keys.map((k) => pillars[k].branch);
@@ -228,7 +260,12 @@ export function buildRelations(pillars, keys = ['year', 'month', 'day', 'hour'])
228
260
  }
229
261
  return out;
230
262
  };
231
- return { stems: uniq(stemOut), branches: uniq(branchOut) };
263
+ return {
264
+ stems: uniq(stemOut),
265
+ branches: uniq(branchOut),
266
+ anhe: anheOf(pillars, keys),
267
+ anheNote: '暗合只作取象与风水参考,不参与旺衰与格局;只出现一对时按课里可忽略',
268
+ };
232
269
  }
233
270
 
234
271
  /** 十神:以日干为我 */
@@ -407,6 +444,15 @@ export function buildBazi(input) {
407
444
  // 四舍五入到 12 个月时必须进位,否则显示「X 岁 12 个月起运」
408
445
  if (startAgeMonths >= 12) { startAgeMonths -= 12; startAgeYears += 1; }
409
446
 
447
+ // 并列的截断口径:年/月取整后,余数继续往下拆。1 月 = 0.25 日 = 6 时,
448
+ // 所以月内余数 ×30 得「日」、日余 ×24 得「时」——与 startAge 的四舍五入同源、不互相覆盖。
449
+ const exactYears = Math.floor(totalMonths / 12);
450
+ const exactRemMonths = totalMonths - exactYears * 12;
451
+ const exactMonths = Math.floor(exactRemMonths);
452
+ const exactRemDays = (exactRemMonths - exactMonths) * 30;
453
+ const exactDays = Math.floor(exactRemDays);
454
+ const exactHours = Math.floor((exactRemDays - exactDays) * 24);
455
+
410
456
  // 交运:三日折一年。
411
457
  // 古法三条换算是同一比例的三种说法——3 日折 1 年、1 日折 4 个月、1 时辰折 10 日:
412
458
  // 把「出生 → 起运那一侧的节令」的真实间隔按 365.2422/3(≈121.7474)倍放大,
@@ -573,6 +619,11 @@ export function buildBazi(input) {
573
619
  },
574
620
  };
575
621
 
622
+ // 八大地支结构(炳祥课堂口径):只读标注,不参与上面的旺衰打分
623
+ strength.branchStructure = branchStructureOf(pillars, dayStem);
624
+ // 宫位权重百分比视图:纯展示换算,与上面的评分口径并列,不改分值
625
+ strength.weightPct = weightPctOf(pillars, { hourUnknown });
626
+
576
627
  // ── 格局 / 用神 / 行运 ─────────────────────────────────────
577
628
  const frame = analyzeBaziFrame({ pillars, dayStem, monthBranch, strength, wuxing });
578
629
 
@@ -731,6 +782,10 @@ export function buildBazi(input) {
731
782
  direction: forward ? '顺行' : '逆行',
732
783
  rule: `${isYangYear ? '阳' : '阴'}年${gender === 'male' ? '男' : '女'}${forward ? '顺排' : '逆排'}`,
733
784
  startAge: { years: startAgeYears, months: startAgeMonths },
785
+ startAgeExact: {
786
+ years: exactYears, months: exactMonths, days: exactDays, hours: exactHours,
787
+ caliber: '截断到年月日时',
788
+ },
734
789
  toNextJieDays: Math.round(spanDays * 100) / 100,
735
790
  // 交运时刻(日/时辰级):上方 startAge 是四舍五入到月的旧字段,两者同源、不互相覆盖
736
791
  jiao: {
@@ -812,6 +867,20 @@ export function buildBazi(input) {
812
867
  // 旺衰与格局:内部仍按正午时柱跑(否则没有可比的基准),但必须说清这是占位值,
813
868
  // 不能写成「时柱不参与任何判定」——那与 strength/frame 实际用了时柱相矛盾
814
869
  out.strength.precision = 'three-pillars';
870
+ // 结构同此:第四支是正午占位,不套从格概率,免得把编出来的时支说成实有
871
+ if (out.strength.branchStructure) {
872
+ const bs = out.strength.branchStructure;
873
+ bs.placeholderHour = true;
874
+ bs.congProb = null;
875
+ bs.congRange = '三柱不判结构概率';
876
+ bs.word = '时柱暂缺,第四支为正午占位,不套从格概率';
877
+ bs.note = '时柱暂缺:第四支为占位值,只列结构形态,不据此断从格;补上出生时刻后可能改变';
878
+ bs.detail = `${bs.detail}(时支为占位值)`;
879
+ }
880
+ if (out.strength.weightPct) {
881
+ out.strength.weightPct.placeholderHour = true;
882
+ out.strength.weightPct.note = '时柱暂缺:时柱权重不计入合计(本盘 81%),不重新归一化;补上出生时刻后再按 100% 看';
883
+ }
815
884
  out.notes = [
816
885
  '时柱暂缺:未提供出生时刻,时柱不对外给出,也不计入神煞与干支关系',
817
886
  '旺衰、格局、用神、调候暂以正午时柱估算,补上出生时刻后可能改变',
@@ -2102,6 +2102,146 @@ export const FUWEN_CITATIONS = [
2102
2102
  plain: '集说篇「论迟速」以干支、发用与贵人前后定迟速;本仓不输出应期日期,按 B11 口径不挂卡。',
2103
2103
  url: 'https://www.luckclub.cn/daliuren/003/004/',
2104
2104
  },
2105
+
2106
+ // ── B14:易传十篇 + 奇门两本的书史/凡例/无判定层条目(2026-11-08)
2107
+ // 易传全部只入库:后天方位表虽与 fengshui.js PALACE_DIRECTION 相符,但地相一栏本站没有知识卡;
2108
+ // 性情、类象、大衍蓍法、太极生成序都没有对应判定层,宁可不接卡也不硬挂。
2109
+ {
2110
+ id: 'yc-fangwei',
2111
+ book: 'yichuan',
2112
+ chapter: '说卦传·第五章',
2113
+ quote: '万物出乎震,震东方也。齐乎巽,巽东南也,齐也者,言万物之洁齐也。离也者,明也,万物皆相见,南方之卦也,圣人南面而听天下,向明而治,盖取诸此也。坤也者地也,万物皆致养焉,故曰致役乎坤。兑正秋也,万物之所说也,故曰说;言乎兑。战乎乾,乾西北之卦也,言阴阳相薄也。坎者水也,正北方之卦也,劳卦也,万物之所归也,故曰劳乎坎。艮东北之卦也,万物之所成,终而所成始也,故曰成言乎艮。',
2114
+ plain: '后天八卦方位的祖本:震东、巽东南、离南、乾西北、坎北、艮东北;坤只说「地也…致养」,兑只说「正秋」,西南与正西两方是后人按四季配出来的,本页没有明写。引擎 fengshui.js 的 PALACE_DIRECTION 正是这一套(坎正北、艮东北、震正东、巽东南、离正南、坤西南、兑正西、乾西北),八宅大游年与玄空飞星都按它落宫。地相一栏本站没有知识卡,所以只入库、不接卡。',
2115
+ url: 'https://www.luckclub.cn/yijing/002/003/',
2116
+ },
2117
+ {
2118
+ id: 'yc-xingqing',
2119
+ book: 'yichuan',
2120
+ chapter: '说卦传·第七章',
2121
+ quote: '乾,健也;坤,顺也;震,动也;巽,入也;坎,陷也;离,丽也;艮,止也;兑,说也。',
2122
+ plain: '八卦性情:乾健、坤顺、震动、巽入、坎陷、离丽、艮止、兑说(说即悦)。这是取象的底子,不是生克规则。引擎梅花只按八卦五行(乾兑金、离火、震巽木、坎水、艮坤土)判体用生克,没有把性情做成判定层,故此条只入库。',
2123
+ url: 'https://www.luckclub.cn/yijing/002/003/',
2124
+ },
2125
+ {
2126
+ id: 'yc-leixiang',
2127
+ book: 'yichuan',
2128
+ chapter: '说卦传·第十一章',
2129
+ quote: '乾为天、为圜、为君、为父、为玉、为金、为寒、为冰、为大赤、为良马、为瘠马、为驳马、为木果。坤为地、为母、为布、为釜、为吝啬、为均、为子母牛、为大舆、为文、为众、为柄、其於地也为黑。',
2130
+ plain: '八卦万物类象的祖本,这里只取乾、坤两段。同章震、巽、坎三段底本有缺字(作「苍□③竹」「矫□⑤」「□④足」等),离、艮、兑三段虽完整但属同一章,不拆成多条。本站六爻与梅花都没有类象查表层,取象只到五行与六亲为止,故只入库。',
2131
+ url: 'https://www.luckclub.cn/yijing/002/003/',
2132
+ },
2133
+ {
2134
+ id: 'yc-xiantian',
2135
+ book: 'yichuan',
2136
+ chapter: '说卦传·第三章',
2137
+ quote: '天地定位,山泽通气,雷风相薄,水火不相射,八卦相错,数往者顺,知来者逆;是故,易逆数也。',
2138
+ plain: '先天八卦对待:乾坤(天地)、艮兑(山泽)、震巽(雷风)、坎离(水火)两两相错。引擎梅花的先天卦数乾1兑2离3震4巽5坎6艮7坤8,互补两卦数相加皆九,正与这四对相应;但「乾一兑二」那串数字出自邵雍,不在本页,本页只给对待关系。梅花先天卦数已有自己的判定层,此条只入库、不接卡。底本此章标题误题作「《老子。说卦传》第三章」,照录不改。',
2139
+ url: 'https://www.luckclub.cn/yijing/002/003/',
2140
+ },
2141
+ {
2142
+ id: 'yc-liuhua',
2143
+ book: 'yichuan',
2144
+ chapter: '说卦传·第二章',
2145
+ quote: '兼三才而两之,故易六画而成卦。分阴分阳,迭用柔刚,故易六位而成章。',
2146
+ plain: '六画成卦的义理根据:天地人三才各两之,故一卦六爻。引擎六爻与梅花都由上下两个三画卦重成六画,结构与此相符;但「六画成卦」本站没有单独做成判定层或知识卡,只入库、不接卡。',
2147
+ url: 'https://www.luckclub.cn/yijing/002/003/',
2148
+ },
2149
+ {
2150
+ id: 'yc-jixiong',
2151
+ book: 'yichuan',
2152
+ chapter: '系辞上传·第二章',
2153
+ quote: '吉凶者,失得之象也。悔吝者,忧虞之象也。变化者,进退之象也。刚柔者,昼夜之象也。六爻之动,三极之道也。',
2154
+ plain: '吉凶悔吝各自的取象定义。注意「变化者,进退之象也」说的是卦爻变化的总象,不是六爻「化进神/化退神」那一层——后者讲同五行地支顺次进一步,出处是《增删卜易》进神退神章,两者不可混引。本站没有悔吝判定层,此条只入库。',
2155
+ url: 'https://www.luckclub.cn/yijing/002/001/',
2156
+ },
2157
+ {
2158
+ id: 'yc-dayan',
2159
+ book: 'yichuan',
2160
+ chapter: '系辞上传·第九章',
2161
+ quote: '大衍之数五十,其用四十有九。分而为二以象两,挂一以象三,揲之以四以象四时',
2162
+ plain: '蓍草起卦法(分二、挂一、揲四、归奇)。引到「揲之以四」为止,因为底本下一句「归奇於□①以象闰」有缺字,不拿缺字句充数。本站六爻用时间/数字/手动摇卦起卦,梅花用先天数起卦,都没有实现蓍草十八变,故此条只入库、不接卡。',
2163
+ url: 'https://www.luckclub.cn/yijing/002/001/',
2164
+ },
2165
+ {
2166
+ id: 'yc-taiji',
2167
+ book: 'yichuan',
2168
+ chapter: '系辞上传·第十一章',
2169
+ quote: '易有太极,是生两仪,两仪生四象,四象生八卦,八卦定吉凶,吉凶生大业。',
2170
+ plain: '太极生两仪、两仪生四象、四象生八卦的生成序。这是宇宙论式的生成说,不是起卦操作法;本站起卦不走这一路,故只入库。',
2171
+ url: 'https://www.luckclub.cn/yijing/002/001/',
2172
+ },
2173
+ {
2174
+ id: 'yc-chonggua',
2175
+ book: 'yichuan',
2176
+ chapter: '系辞下传·第一章',
2177
+ quote: '八卦成列,象在其中矣。因而重之,爻在其中矣。刚柔相推,变在其中矣。系辞焉而命之,动在其中矣。',
2178
+ plain: '三画卦相重成六爻、刚柔相推而生变。引擎六爻的本卦/变卦与梅花的互卦/变卦都建立在重卦与爻变上,结构与此相符;但本站没有把「重卦」单列成卡,动爻生克那一层的判定出处仍是《卜筮正宗》动变章与《火珠林》独发乱动,此条只入库、不接卡。',
2179
+ url: 'https://www.luckclub.cn/yijing/002/002/',
2180
+ },
2181
+ {
2182
+ id: 'yc-yaoxiao',
2183
+ book: 'yichuan',
2184
+ chapter: '系辞下传·第三章',
2185
+ quote: '爻也者,效天下之动也。是故,吉凶生,而悔吝著也。',
2186
+ plain: '爻是效法天下之动的符号。说的是三百八十四爻全体,不是六爻里「动爻对静爻」那一层,所以不接 liuyao-dongbian 卡——那张卡的判定(动爻能生克静爻、变爻回头生克)另有出处。此条只入库。',
2187
+ url: 'https://www.luckclub.cn/yijing/002/002/',
2188
+ },
2189
+ {
2190
+ id: 'yl-jiuxing',
2191
+ book: 'yuanling',
2192
+ chapter: '卷一·九星',
2193
+ quote: '一天蓬、二天芮、三天冲、四天辅、五天禽、六天心、七天柱、八天任、九天英。',
2194
+ plain: '九星定宫:一宫天蓬、二宫天芮、三宫天冲、四宫天辅、五宫天禽、六宫天心、七宫天柱、八宫天任、九宫天英。与引擎 BASIC_STARS 逐宫相符。九星定宫属排盘事实,本站没有独立知识卡,故只入库。',
2195
+ url: 'https://www.luckclub.cn/qimen/005/004/',
2196
+ },
2197
+ {
2198
+ id: 'yl-xu',
2199
+ book: 'yuanling',
2200
+ chapter: '序(光绪九年癸未隐溪居士自署)',
2201
+ quote: '而其中一字一义,有两说三说者,均亦存之。至于书符诵咒,似非正道,概从略焉。',
2202
+ plain: '作者自述凡例:一字一义有两说三说的都并存,书符诵咒一概略去。序末署「光绪九年癸未岁孟冬月 隐溪居士书」(1883)。本站引文库「两本并列、不合并」与不收符咒的口径,与此序同;序中又历数隋志十三卷、唐倍之、杨维德《奇门符应经》、李氏林氏奇门等源流,可作书史读。',
2203
+ url: 'https://www.luckclub.cn/qimen/005/001/',
2204
+ },
2205
+ {
2206
+ id: 'mj-qimu',
2207
+ book: 'miji',
2208
+ chapter: '卷十五·奇墓格',
2209
+ quote: '乙到临坤,丙奇临干,丁奇临艮。',
2210
+ plain: '同卷「三奇入墓歌」作乙丙俱临乾,此格却作乙临坤(未)、丙临乾、丁临艮——一书之内两说并存。乙墓未是五行墓库直取(木墓未),乙墓戌是《玄机赋》阴干逆行说,引擎从后者。此条只入库,不接卡,也不拿它改引擎表;它正好证明知识卡 note 里「墓宫取法有异说」不是虚设。',
2211
+ url: 'https://www.luckclub.cn/qimen/003/015/',
2212
+ },
2213
+ {
2214
+ id: 'mj-qinji',
2215
+ book: 'miji',
2216
+ chapter: '总序',
2217
+ quote: '惟天禽则无定位,寄西南而属中宫。',
2218
+ plain: '天禽星无固定宫位,寄西南(坤二)而属中宫。引擎正是「中五宫寄坤二」:地盘归属寄坤二,天盘仍是单个干,中五宫单列而门神为空。此属排盘事实,本站无独立知识卡,只入库。',
2219
+ url: 'https://www.luckclub.cn/qimen/003/001/',
2220
+ },
2221
+ {
2222
+ id: 'mj-bamen',
2223
+ book: 'miji',
2224
+ chapter: '总序',
2225
+ quote: '如干宫配开为使,则休门坎、生门艮、伤门震、杜门巽、景门离、死门坤、惊门兑也。',
2226
+ plain: '八门定宫:开门乾六、休门坎一、生门艮八、伤门震三、杜门巽四、景门离九、死门坤二、惊门兑七。与引擎 BASIC_GATES 逐宫相符。底本「干」即乾。八门定宫属排盘事实,无独立知识卡,只入库。',
2227
+ url: 'https://www.luckclub.cn/qimen/003/001/',
2228
+ },
2229
+ {
2230
+ id: 'mj-jiugong',
2231
+ book: 'miji',
2232
+ chapter: '总序',
2233
+ quote: '先排九宫于掌上,而坎居一、坤居二、震居三、巽居四、中央五、干六、兑七、艮八、离九,而造化见矣。次分八卦于盘中,而离位于南,坎位于北,震东,兑西,巽东南,坤西南,艮东北,干西北,而方隅定矣。',
2234
+ plain: '九宫数(洛书:坎一坤二震三巽四中五乾六兑七艮八离九)与后天八卦方位。方位一路与《易传·说卦传》第五章「帝出乎震」相符,而且这里把坤西南、兑正西两方明写出来了,正好补上说卦传未明写的那两格。引擎 fengshui.js 的 PALACE_DIRECTION 同表。底本「干」即乾。',
2235
+ url: 'https://www.luckclub.cn/qimen/003/001/',
2236
+ },
2237
+ {
2238
+ id: 'mj-jiudun',
2239
+ book: 'miji',
2240
+ chapter: '卷十五·奇门吉格',
2241
+ quote: '“天遁”者,生门主兴隆合丙奇,临下六丁是也,此遁得月华之蔽,宜行兵、献策、摄王侯之权,百事生旺。',
2242
+ plain: '九遁之一的天遁:生门合丙奇、下临六丁。同卷还有地遁(开门合乙奇临六己)、人遁(休门与丁奇合太阴)及风云龙虎神鬼六遁,总序亦简述其例。九遁属兵占查表断语,本站奇门只实现门宫生克、击刑、入墓、克应、旺衰几层,没有九遁判定层,故只入库、不接卡,也不新造断语。',
2243
+ url: 'https://www.luckclub.cn/qimen/003/015/',
2244
+ },
2105
2245
  ];
2106
2246
 
2107
2247
  // ── 引擎侧条目的原文与白话 ─────────────────────────────────
@@ -2954,6 +3094,88 @@ export const CITATION_TEXT = [
2954
3094
  quote: '静心指出三传窍,九课宗首斯为要',
2955
3095
  plain: '同诀把三传归纳为九宗门,正是 `daliuren-sike` 卡 detail 里「依九宗门取初传」的古籍出处;原书注文另说「六十花甲子日共七百二十课,其三传之法不外九课」。',
2956
3096
  },
3097
+
3098
+ // ── B14:奇门两本引擎侧 16 条的原文与白话(逐句过底本子串,并与引擎表逐格对拍)
3099
+ {
3100
+ id: 'yl-yinyang',
3101
+ quote: '冬至后用阳遁,夏至后用阴遁。',
3102
+ plain: '阴阳遁的分界:冬至后阳遁、夏至后阴遁。引擎 qimen.js 以「冬至(含)到夏至(不含)为阳遁」实现,与此同口径。',
3103
+ },
3104
+ {
3105
+ id: 'yl-jushu',
3106
+ quote: '冬至一七四 小寒二八五 大寒三九六 卦属坎\n立春八五二 雨水九六三 惊蜇一七四 卦属艮\n春分三九六 清明四一七 谷雨五二八 卦属震\n立夏四一七 小满五二八 芒种六三九 卦属巽\n夏至九三六 小暑八二五 大暑七一四 卦属离\n立秋二五八 处暑一四七 白露九三六 卦属坤\n秋分七一四 寒露六九三 霜降五八二 卦属兑\n立冬六九三 小雪五八二 大雪四七一 卦属乾',
3107
+ plain: '二十四节气各配上中下三元局数,并附「一卦管三节」(坎管冬至小寒大寒、艮管立春雨水惊蛰,以此类推)。这张表与引擎 JU_NUMBERS_MAP 二十四格逐一相符,测试逐格对拍。底本「惊蜇」作蜇不作蛰,「一七四」即上元一局、中元七局、下元四局。这是拆补/正授一路的局数表;超神接气与置闰改的是取哪一节,不改这张表本身。',
3108
+ },
3109
+ {
3110
+ id: 'yl-futou',
3111
+ quote: '甲己干加子午卯酉为上元,加寅申巳亥为中元,加辰戌丑未为下元。',
3112
+ plain: '符头定三元:甲己日加子午卯酉为上元、加寅申巳亥为中元、加辰戌丑未为下元。引擎定局说明里写的正是这一句(子午卯酉上元、寅申巳亥中元、辰戌丑未下元),三种取局法都以符头为准。',
3113
+ },
3114
+ {
3115
+ id: 'yl-liuyi',
3116
+ quote: '甲子戊、甲戌己、甲申庚、甲午辛、甲辰壬、甲寅癸。',
3117
+ plain: '六仪配六甲旬首:戊配甲子、己配甲戌、庚配甲申、辛配甲午、壬配甲辰、癸配甲寅。这是六仪击刑的前提——击刑判的是旬首地支与落宫地支相刑,不是天干本身。引擎 XUN_SHOU_TO_FULL_MAP 与此逐字相符。',
3118
+ },
3119
+ {
3120
+ id: 'yl-ganying-jia',
3121
+ quote: '天盘甲加地盘甲:虽曰伏吟,然有青龙出土之象,但吉凶不定,惟看门如何。门吉则吉,门凶则凶,大抵不利求财。',
3122
+ plain: '十干克应的取象口径:两干相遇先成一个象(这里是青龙出土),吉凶却不定的,要再看门——门吉则吉、门凶则凶。这正是知识卡说的「先取成象,再与门星神合看」「不单独回答事情成不成」。注意甲加甲在通行表里多作伏吟论,元灵经另给「青龙出土」之名,两说不合并。',
3123
+ },
3124
+ {
3125
+ id: 'yl-ganying-bing',
3126
+ quote: '甲加地盘丙:青龙返首格,动作大利,若门仪不合未作合吉。',
3127
+ plain: '甲加丙「青龙返首」,与引擎克应表格名相同;但断语不同——引擎取通行表「大吉大利,逢凶化吉。逢迫墓击刑者不吉」,元灵经作「动作大利,若门仪不合未作合吉」,把吉凶明确压在门与仪的配合上。两本并列,不替用户选边。',
3128
+ },
3129
+ {
3130
+ id: 'yl-ganying-yixin',
3131
+ quote: '乙加地盘辛:青龙逃走格,主财失逃亡,强为凶甚。',
3132
+ plain: '乙加辛「青龙逃走」,格名与引擎一致,断语有别:引擎取通行表「奴仆拐带,六畜皆伤」,元灵经作「主财失逃亡,强为凶甚」,《秘笈大全》总序又作「财物废坠」。三处同格异文,正是「100 组表各家措辞不一」的实证。',
3133
+ },
3134
+ {
3135
+ id: 'yl-bamen',
3136
+ quote: '若到离宫,是上克其下,谓之大凶迫。',
3137
+ plain: '承上文休门而言:休门属水,到离九宫(火),水克火,是门克宫,叫「迫」。与《秘笈大全》卷十五门迫歌「休临九」同一格,也与引擎 gatePalaceRelation 的「门克宫=门迫」一致。元灵经称「大凶迫」并直接下吉凶,本站只作宫位条件、不自动折吉凶,这一层差别在知识卡 note 里已写明。',
3138
+ },
3139
+ {
3140
+ id: 'mj-jiuxing',
3141
+ quote: '甲子戊直符加三宫,甲戌己值符加二宫,甲申庚加八宫,甲午辛加九宫,甲辰壬加四宫,甲寅癸值符加四宫。',
3142
+ plain: '六仪击刑的落宫表:戊加三宫、己加二宫、庚加八宫、辛加九宫、壬加四宫、癸加四宫。与引擎 JI_XING 六格逐一相符(戊3、己2、庚8、辛9、壬4、癸4)。底本「直符/值符」混用,即值符。此格与《统宗》玄机赋「子三戌二寅刑四,申八辰四午离中」是同一套表的两种写法。',
3143
+ },
3144
+ {
3145
+ id: 'mj-menpo',
3146
+ quote: '惊开三四休临九,伤杜还归二八宫,生死排来居第一,景门六七总相同,吉门被迫吉不就,凶门被迫祸重重。',
3147
+ plain: '八门各自的迫宫:惊门开门(金)迫震三巽四(木)、休门(水)迫离九(火)、伤门杜门(木)迫坤二艮八(土)、生门死门(土)迫坎一(水)、景门(火)迫乾六兑七(金)——八格全是门克宫,与引擎 gatePalaceRelation 的门迫判定逐格相符。歌末「吉门被迫吉不就,凶门被迫祸重重」是吉凶断语,本站只取前半的落宫条件,不自动折吉凶。',
3148
+ },
3149
+ {
3150
+ id: 'mj-pozhi',
3151
+ quote: '门尅宫为迫,宫尅门为制,门生宫为和,宫生门为义。',
3152
+ plain: '门宫四种关系的定义:门克宫为迫、宫克门为制、门生宫为和、宫生门为义。引擎 gatePalaceRelation 正好分门迫/宫制门/门生宫/宫生门/比和五类,前四类与此一一对应(底本「和」「义」即引擎的门生宫、宫生门),比和一类为本页所无。底本用「尅」字,照录。这条是「宫克门叫制、不叫迫」的直接原文依据。',
3153
+ },
3154
+ {
3155
+ id: 'mj-rumu',
3156
+ quote: '三奇入墓百不宜,乙丙临干请避之,丁奇乙未临艮土,诸般动作尽休休。',
3157
+ plain: '三奇入墓:乙丙临乾、丁临艮。与引擎 RU_MU(乙墓戌乾六、丙墓戌乾六、丁墓丑艮八)同口径。底本「干」即乾字;「丁奇乙未临艮土」中「乙未」二字未详,疑有讹脱,照录不代改——可确认的是丁奇临艮这一落宫。歌首「百不宜…尽休休」是吉凶断语,本站只取落宫条件,问收藏了结时入墓未必是坏事。',
3158
+ },
3159
+ {
3160
+ id: 'mj-shimu',
3161
+ quote: '丙戌墓干,壬辰墓巽,辛丑墓艮,乙未墓坤,戊戌墓干。',
3162
+ plain: '时墓格五句,与引擎对得上的是两句半:戊墓戌(乾六)与 LIUYI_RU_MU 戊相符,壬墓辰(巽四)与壬相符,丙戌墓乾与三奇入墓的丙相符。另两句不同——辛丑墓艮,引擎作辛墓辰巽四;乙未墓坤,引擎作乙墓戌乾六(从《玄机赋》阴干逆行说)。己、庚、癸三仪本页未列。这是墓宫取法有异说的直接原文证据,两说并列、不合并,也不拿它改写引擎表。',
3163
+ },
3164
+ {
3165
+ id: 'mj-ganying',
3166
+ quote: '甲加丙为“青龙反首”,而动作无阻。丙加甲为“飞鸟跌穴”,而运用有成。乙加辛是“青龙逃走”,而财物废坠。辛加乙是“白虎猖狂”,而身体毁伤。',
3167
+ plain: '总序里的十干克应格名与取象。格名与引擎多相同而用字有别:总序作「青龙反首」,卷十五与《元灵经》作「青龙返首」,引擎从「返首」;乙加辛「青龙逃走」三处同名,断语却各别(总序「财物废坠」、元灵经「主财失逃亡」、通行表「奴仆拐带,六畜皆伤」)。丙加甲「飞鸟跌穴」与引擎格名同。此条只证格名与取象口径,不证通行 100 组表全文。',
3168
+ },
3169
+ {
3170
+ id: 'mj-futou',
3171
+ quote: '逢甲己为符头,须闰奇而补局,符速节迟,看甲己临于何处?而用超神之法。节先符后,验日辰甲己何居?而行节气之方。',
3172
+ plain: '符头与三种取局法:甲己日为符头;符头先到、节气后到(符速节迟)用超神之法,节气先到、符头后到(节先符后)则依节气之方,另有闰奇补局。引擎实现的拆补/超神接气/置闰三法正是这一路分歧,参数里可指定。底本「符速节迟」与「节先符后」对举,是超神与接气两名的由来。',
3173
+ },
3174
+ {
3175
+ id: 'mj-yinyang',
3176
+ quote: '子午东部为冬至后阳遁,历坎、艮、震、巽,仪顺行而奇逆布,由直符而顺飞于九宫也。子午西部为夏至后阴遁,历离、坤、兑、干,奇顺布而仪逆行,由直符而逆飞于八卦也。',
3177
+ plain: '阳遁仪顺奇逆、阴遁奇顺仪逆,并给出所历宫次(阳遁坎艮震巽、阴遁离坤兑乾)。引擎排地盘正是阳遁顺布六仪逆布三奇、阴遁反之,天盘随值符顺飞(阳)逆飞(阴)。底本「干」即乾、「直符」即值符;阴遁言「八卦」而阳遁言「九宫」,是因为中五宫寄坤二、阴遁历宫只数八位,与本站中五宫单列的处理相合。',
3178
+ },
2957
3179
  ];
2958
3180
 
2959
3181
  const TEXT_BY_ID = new Map(CITATION_TEXT.map((t) => [t.id, t]));
@@ -350,6 +350,22 @@ export const CITATION_BOOKS = {
350
350
  author: '清·官修(页首未署撰人)',
351
351
  base: 'https://www.luckclub.cn/qimen/007/',
352
352
  },
353
+ // ── B14 新增书目(2026-11-08):把覆盖表里「只有书名」的三项升级成有原文
354
+ yichuan: {
355
+ name: '易传',
356
+ author: '佚名(战国至秦汉解易论文集,本页未署撰人)',
357
+ base: 'https://www.luckclub.cn/yijing/002/', // 本站只存系辞上下、说卦、序卦、杂卦五篇,彖象文言未收
358
+ },
359
+ yuanling: {
360
+ name: '奇门遁甲元灵经',
361
+ author: '清·隐溪居士(序末自署光绪九年癸未)',
362
+ base: 'https://www.luckclub.cn/qimen/005/',
363
+ },
364
+ miji: {
365
+ name: '奇门遁甲秘笈大全',
366
+ author: '旧题汉·诸葛亮撰、明·刘伯温辑(分类页所载,正文未署)',
367
+ base: 'https://www.luckclub.cn/qimen/003/', // 又名《金函奇门遁甲秘笈全书》《奇门大全》;页内「干」即乾、「直符」即值符
368
+ },
353
369
  };
354
370
 
355
371
  // 引文定位表:id / 书名 / 卷章 / 链接。原文照录与本站自撰白话在 citations-fuwen.js。
@@ -1367,6 +1383,109 @@ export const CITATIONS = [
1367
1383
  chapter: '卷下 集说篇',
1368
1384
  url: 'https://www.luckclub.cn/daliuren/003/004/',
1369
1385
  },
1386
+ // ── B14:奇门两本「只有书名」升级为有原文(2026-11-08,逐句过底本子串)
1387
+ // 这 16 条不是泛泛补书史:每一条都对得上引擎已有的一张表或一层判定,且逐格对拍过——
1388
+ // 元灵经卷一 24 节气三元局数 == JU_NUMBERS_MAP(24/24);三元符头 == 引擎定局说明;
1389
+ // 卷一六仪配旬首 == XUN_SHOU_TO_FULL_MAP;卷二「惟看门如何」正是克应卡「不单独断吉凶」的原文依据;
1390
+ // 秘笈卷十五六仪刑击格 == JI_XING(6/6);门迫歌八格全是门克宫;迫制和义格 == gatePalaceRelation 前四类;
1391
+ // 三奇入墓歌乙丙临乾丁临艮 == RU_MU;时墓格只戊壬丙三句相符、辛乙两句相异,照实并列不代改。
1392
+ // 易传十篇与本站判定层对不上(方位表只在 fengshui.js,而地相无知识卡),全部走附文库只入索引页。
1393
+ {
1394
+ id: 'yl-yinyang',
1395
+ book: 'yuanling',
1396
+ chapter: '卷一·阴阳遁',
1397
+ url: 'https://www.luckclub.cn/qimen/005/004/',
1398
+ },
1399
+ {
1400
+ id: 'yl-jushu',
1401
+ book: 'yuanling',
1402
+ chapter: '卷一·阴阳各局(附一卦管三节)',
1403
+ url: 'https://www.luckclub.cn/qimen/005/004/',
1404
+ },
1405
+ {
1406
+ id: 'yl-futou',
1407
+ book: 'yuanling',
1408
+ chapter: '卷一·三元符头',
1409
+ url: 'https://www.luckclub.cn/qimen/005/004/',
1410
+ },
1411
+ {
1412
+ id: 'yl-liuyi',
1413
+ book: 'yuanling',
1414
+ chapter: '卷一·六仪',
1415
+ url: 'https://www.luckclub.cn/qimen/005/004/',
1416
+ },
1417
+ {
1418
+ id: 'yl-ganying-jia',
1419
+ book: 'yuanling',
1420
+ chapter: '卷二·天盘加地盘吉凶',
1421
+ url: 'https://www.luckclub.cn/qimen/005/005/',
1422
+ },
1423
+ {
1424
+ id: 'yl-ganying-bing',
1425
+ book: 'yuanling',
1426
+ chapter: '卷二·天盘加地盘吉凶',
1427
+ url: 'https://www.luckclub.cn/qimen/005/005/',
1428
+ },
1429
+ {
1430
+ id: 'yl-ganying-yixin',
1431
+ book: 'yuanling',
1432
+ chapter: '卷二·天盘加地盘吉凶',
1433
+ url: 'https://www.luckclub.cn/qimen/005/005/',
1434
+ },
1435
+ {
1436
+ id: 'yl-bamen',
1437
+ book: 'yuanling',
1438
+ chapter: '卷二·八门值事',
1439
+ url: 'https://www.luckclub.cn/qimen/005/005/',
1440
+ },
1441
+ {
1442
+ id: 'mj-jiuxing',
1443
+ book: 'miji',
1444
+ chapter: '卷十五·六仪刑击格',
1445
+ url: 'https://www.luckclub.cn/qimen/003/015/',
1446
+ },
1447
+ {
1448
+ id: 'mj-menpo',
1449
+ book: 'miji',
1450
+ chapter: '卷十五·门迫歌',
1451
+ url: 'https://www.luckclub.cn/qimen/003/015/',
1452
+ },
1453
+ {
1454
+ id: 'mj-pozhi',
1455
+ book: 'miji',
1456
+ chapter: '卷十五·迫制和义格',
1457
+ url: 'https://www.luckclub.cn/qimen/003/015/',
1458
+ },
1459
+ {
1460
+ id: 'mj-rumu',
1461
+ book: 'miji',
1462
+ chapter: '卷十五·三奇入墓歌',
1463
+ url: 'https://www.luckclub.cn/qimen/003/015/',
1464
+ },
1465
+ {
1466
+ id: 'mj-shimu',
1467
+ book: 'miji',
1468
+ chapter: '卷十五·时墓格',
1469
+ url: 'https://www.luckclub.cn/qimen/003/015/',
1470
+ },
1471
+ {
1472
+ id: 'mj-ganying',
1473
+ book: 'miji',
1474
+ chapter: '总序',
1475
+ url: 'https://www.luckclub.cn/qimen/003/001/',
1476
+ },
1477
+ {
1478
+ id: 'mj-futou',
1479
+ book: 'miji',
1480
+ chapter: '总序',
1481
+ url: 'https://www.luckclub.cn/qimen/003/001/',
1482
+ },
1483
+ {
1484
+ id: 'mj-yinyang',
1485
+ book: 'miji',
1486
+ chapter: '总序',
1487
+ url: 'https://www.luckclub.cn/qimen/003/001/',
1488
+ },
1370
1489
  ];
1371
1490
 
1372
1491
  const BOOK_OF = {
@@ -1471,13 +1590,18 @@ export const CARD_CITATIONS = {
1471
1590
  // ── 其他体系
1472
1591
  'meihua-tiyong': { refs: ['mh-tiyong', 'mh-tiyong-shengke', 'mh-dongjing'] },
1473
1592
  'daliuren-sike': { refs: ['dl-jigong', 'dl-zeike', 'rty-sike', 'rzn-rushi', 'rzn-richen', 'rg-tigang', 'b13-rty-sike', 'b13-rty-jiuke'] },
1474
- 'qimen-yinyang': { refs: ['qm-yinyang', 'qmf-yinyang', 'ydq-liuyi'] },
1475
- 'qimen-jixing': { refs: ['qm-jixing'] },
1476
- 'qimen-rumu': { refs: ['qm-rumu'] },
1593
+ 'qimen-yinyang': { refs: ['qm-yinyang', 'qmf-yinyang', 'ydq-liuyi', 'yl-yinyang', 'yl-jushu', 'yl-futou', 'mj-futou', 'mj-yinyang'] },
1594
+ 'qimen-jixing': { refs: ['qm-jixing', 'yl-liuyi', 'mj-jiuxing'] },
1595
+ 'qimen-rumu': { refs: ['qm-rumu', 'mj-rumu', 'mj-shimu'] },
1477
1596
  'qimen-wangshuai': { refs: ['qm-wangshuai'] },
1478
- 'qimen-wangshuai-yong': { refs: ['qm-men-gong'] },
1597
+ 'qimen-wangshuai-yong': { refs: ['qm-men-gong', 'yl-bamen', 'mj-menpo', 'mj-pozhi'] },
1479
1598
  'qimen-gan-shengke': { status: 'general', book: '奇门遁甲统宗', chapter: '卷十二·玄机赋(下)', reason: '底本有「奇仪与日干」生克条,未见单列「干与落宫」生克条;干宫取象为通行读法,不拿十神条文冒充' },
1480
- 'qimen-ganying': { status: 'general', book: '奇门十干应克 / 奇门遁甲元灵经', chapter: '通行 100 组表 / 卷二·天盘加地盘吉凶', reason: '100 组为通行表汇编,元灵经只存甲、乙、丙三组,非单条原文' },
1599
+ // B14:原为 general(「100 组表非单条原文」)。元灵经卷二「天盘加地盘吉凶」与秘笈总序录到原文后改 refs,
1600
+ // 但 refs 只证「先取成象、再与门星神合看」这一层口径与甲丙/乙辛等组的格名异文,不证通行 100 组表全文。
1601
+ 'qimen-ganying': {
1602
+ refs: ['yl-ganying-jia', 'yl-ganying-bing', 'yl-ganying-yixin', 'mj-ganying'],
1603
+ note: '元灵经卷二「天盘加地盘吉凶」只存天盘甲、乙、丙三组(各 9 条,三组都缺「加戊」,页面到「丙加地盘癸」为止,丁以下七组未收),秘笈总序另举六组格名;已录原文只证「先取成象、再与门星神合看」这一层口径与这几组的格名异文,不证通行 100 组表全文,其余七十馀组仍取通行表汇编、无单条原文。三处同格异文(青龙返首/反首、青龙逃走的三种断语)并列,不合并。',
1604
+ },
1481
1605
  'tarot-orientation': { status: 'general', book: '韦特塔罗', chapter: '逆位读法', reason: '韦特体系无中文古籍原文,逆位读法属近代流派' },
1482
1606
  'tarot-correspondence': { status: 'general', book: 'Liber 777 一脉的公开对应表', chapter: '小阿卡纳 2-10 的旬位与十源质', reason: '属近代西方神秘学对应表,无中文古籍原文;本插件按三处独立公开资料互核后取数字牌旬位,宫廷牌两派映射冲突故不配星座' },
1483
1607
  };
package/engine/diff.js CHANGED
@@ -97,7 +97,7 @@ const LABELS = [
97
97
  [/^dayun\.jiao\./, '起运'],
98
98
  [/^dayun\.toNextJieDays$/, '起运时间'],
99
99
  [/^dayun\.list\.(\d+)\.ganzhi$/, '大运干支'],
100
- [/^dayun\.startAge\./, '起运时间'],
100
+ [/^dayun\.startAge(Exact)?\./, '起运时间'],
101
101
  [/^dayun\./, '大运评分'],
102
102
  [/^liunian\./, '流年'],
103
103
  [/^jieqi\./, '节气边界'],