dsh-metaphysics 0.19.0 → 0.21.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/client.js CHANGED
@@ -746,7 +746,7 @@ function resolveAddress(input) {
746
746
 
747
747
  const DETAIL = /(区|县|镇|乡|村|小区|街道|路|号|巷|弄|组|队)/;
748
748
 
749
- const USER_AGENT = 'dsh-metaphysics/0.19.0 (+https://github.com/xuanfu-web/dsh-metaphysics)';
749
+ const USER_AGENT = 'dsh-metaphysics/0.21.0 (+https://github.com/xuanfu-web/dsh-metaphysics)';
750
750
 
751
751
  async function onlineLookup(text, { timeoutMs = 2500 } = {}) {
752
752
  if (typeof fetch !== 'function') return null;
@@ -1280,8 +1280,1240 @@ const RULE_TABLE = RULES.reduce((acc, r) => { acc[r.name] = { cat: r.cat, luck:
1280
1280
  return { PILLAR_KEYS, PILLAR_LABEL, CATEGORY_ORDER, computeBaziShensha, RULE_TABLE };
1281
1281
  })();
1282
1282
 
1283
+ __mods.tiaohou = (function () {
1284
+
1285
+ const STEM_ELEMENT = {
1286
+ 甲: '木', 乙: '木', 丙: '火', 丁: '火', 戊: '土',
1287
+ 己: '土', 庚: '金', 辛: '金', 壬: '水', 癸: '水',
1288
+ };
1289
+
1290
+ const SEASON_TEMP = {
1291
+ 亥: -1.8, 子: -2, 丑: -1.5,
1292
+ 寅: -0.4, 卯: 0.2, 辰: 0.5,
1293
+ 巳: 1.3, 午: 2, 未: 1.5,
1294
+ 申: 0.6, 酉: 0.2, 戌: -0.2,
1295
+ };
1296
+
1297
+ const SEASON_NAME = {
1298
+ 亥: '初冬', 子: '仲冬', 丑: '季冬',
1299
+ 寅: '初春', 卯: '仲春', 辰: '季春',
1300
+ 巳: '初夏', 午: '仲夏', 未: '季夏',
1301
+ 申: '初秋', 酉: '仲秋', 戌: '季秋',
1302
+ };
1303
+
1304
+ const WET_BRANCH = { 丑: 1, 辰: 1, 子: 0.6, 亥: 0.5 };
1305
+ const DRY_BRANCH = { 未: 1, 戌: 1, 午: 0.4, 巳: 0.4 };
1306
+
1307
+ const NEED = {
1308
+ 寒湿: { element: '火', stem: '丙', avoid: '水', why: '冻土要太阳来解,水再多只会更冷' },
1309
+ 寒燥: { element: '火', stem: '丙', avoid: '水', why: '天寒地干,先要一点阳和之气' },
1310
+ 寒: { element: '火', stem: '丙', avoid: '水', why: '冬令气寒,非火不暖' },
1311
+ 温热: { element: '水', stem: '壬', avoid: '火', why: '火气初旺,得水润泽才好用' },
1312
+ 燥热: { element: '水', stem: '壬', avoid: '火', why: '火炎土燥,非水不润' },
1313
+ 热: { element: '水', stem: '壬', avoid: '火', why: '夏令炎威,先求一泓清水' },
1314
+ 湿滞: { element: '火', stem: '丙', avoid: '水', why: '湿气郁结,要火来蒸腾' },
1315
+ 燥: { element: '水', stem: '壬', avoid: '火', why: '气燥不润,得水则舒' },
1316
+ 平和: { element: null, stem: null, avoid: null, why: '寒暖相济,气候不是这一盘的主要矛盾' },
1317
+ };
1318
+
1319
+ const KIND_NAME = {
1320
+ 寒湿: '寒湿', 寒燥: '寒燥', 寒: '寒',
1321
+ 温热: '温热', 燥热: '燥热', 热: '热',
1322
+ 湿滞: '湿滞', 燥: '燥', 平和: '平和',
1323
+ };
1324
+
1325
+ const DAY_FEEL = {
1326
+ 寒湿: {
1327
+ 木: '木是花草藤萝,冰封的土里抽不出芽——它不缺雨水,缺的是一轮太阳',
1328
+ 火: '火在冬天最怕被水浇,一点火苗要护住,才谈得上发光',
1329
+ 土: '土冻成一块,再厚也长不出东西,得先晒透',
1330
+ 金: '金在寒水里泡久了,锋刃会发滞,要火来炼一炼',
1331
+ 水: '水本就冷,再加寒就是死水;要火把它烧活',
1332
+ },
1333
+ 寒燥: {
1334
+ 木: '木在干冷里最难熬,既缺暖气,又缺一点滋润',
1335
+ 火: '火在寒天里要先活下来,才有余力照别人',
1336
+ 土: '土冷而干,板结着,得暖气与一点水汽一起松',
1337
+ 金: '金寒则脆,得火炼、得土养,才成器',
1338
+ 水: '水在寒天里收得太紧,要一点火气化开',
1339
+ },
1340
+ 寒: {
1341
+ 木: '冬木先要暖,暖了才谈得上发荣',
1342
+ 火: '火在冬天要护住,别被冷风吹散',
1343
+ 土: '土寒不生物,先暖后养',
1344
+ 金: '金寒则钝,得火则利',
1345
+ 水: '水寒则滞,得火则行',
1346
+ },
1347
+ 温热: {
1348
+ 木: '木在暖和里长得快,但要防长得太急、根扎不深',
1349
+ 火: '火得时令,容易旺过头,要留一点水来收',
1350
+ 土: '土被火烤着,容易燥,得水润一润',
1351
+ 金: '金在暖处容易软,需要一点水土把它养住',
1352
+ 水: '水在暖处容易蒸干,要源头不断',
1353
+ },
1354
+ 燥热: {
1355
+ 木: '木被火烤着,叶子先焦,得先补水',
1356
+ 火: '火已经够旺了,再添柴只会烧到自己',
1357
+ 土: '土燥则裂,得水润、得木疏',
1358
+ 金: '金在燥热里容易发烫变形,要水来淬',
1359
+ 水: '水在燥热里最珍贵,一滴都不能浪费',
1360
+ },
1361
+ 热: {
1362
+ 木: '木在暑天要水,不然只长叶不结果',
1363
+ 火: '火已经当令,收着用比放出去更划算',
1364
+ 土: '土热则燥,得水则安',
1365
+ 金: '金在暑天要水来洗,才见光泽',
1366
+ 水: '水在暑天是命脉,要保住源头',
1367
+ },
1368
+ 湿滞: {
1369
+ 木: '木泡在水里会烂根,先要疏土透气',
1370
+ 火: '火在湿气里点不着,得先除湿',
1371
+ 土: '土湿成泥,得火蒸腾、得木来疏',
1372
+ 金: '金埋在湿土里会生锈,要见火见光',
1373
+ 水: '水已经太多,再添就是泛滥',
1374
+ },
1375
+ 燥: {
1376
+ 木: '木在燥气里容易枯,先要一点水',
1377
+ 火: '火在燥处容易失控,要收',
1378
+ 土: '土燥不毛,得水润、得木疏',
1379
+ 金: '金在燥处要水来洗,才不刺手',
1380
+ 水: '水在燥处最容易被耗干,要护住',
1381
+ },
1382
+ 平和: {
1383
+ 木: '寒暖还算相济,木有生长的余地',
1384
+ 火: '气候不偏,火可以按自己的节奏用',
1385
+ 土: '土不燥不湿,能养也能载',
1386
+ 金: '金不寒不燥,成器只差打磨',
1387
+ 水: '水不冰不涸,能流得动',
1388
+ },
1389
+ };
1390
+
1391
+ const round2 = (n) => Math.round(n * 100) / 100;
1392
+
1393
+ function judgeClimate({ monthBranch, dayStem, wuxing = {}, branches = [] }) {
1394
+ const fire = Number(wuxing['火'] || 0);
1395
+ const water = Number(wuxing['水'] || 0);
1396
+ let wet = 0;
1397
+ let dry = 0;
1398
+ let wetCount = 0;
1399
+ let dryCount = 0;
1400
+ for (const b of branches) {
1401
+ if (WET_BRANCH[b]) { wet += WET_BRANCH[b]; if (b === '丑' || b === '辰') wetCount += 1; }
1402
+ if (DRY_BRANCH[b]) { dry += DRY_BRANCH[b]; if (b === '未' || b === '戌') dryCount += 1; }
1403
+ }
1404
+ const seasonT = SEASON_TEMP[monthBranch] ?? 0;
1405
+ const temp = round2(seasonT + 0.45 * fire - 0.4 * water);
1406
+ const damp = round2(wet - dry + 0.25 * water - 0.25 * fire);
1407
+
1408
+ const cold = temp <= -0.8;
1409
+ const hot = temp >= 0.9;
1410
+ const wetSide = damp >= 0.8;
1411
+ const drySide = damp <= -0.8;
1412
+
1413
+ let kind = '平和';
1414
+ if (cold && wetSide) kind = '寒湿';
1415
+ else if (cold && drySide) kind = '寒燥';
1416
+ else if (cold) kind = '寒';
1417
+ else if (hot && drySide) kind = '燥热';
1418
+ else if (hot) kind = '温热';
1419
+ else if (hot && damp >= 0.8) kind = '湿滞';
1420
+ else if (drySide) kind = '燥';
1421
+ else if (wetSide) kind = '湿滞';
1422
+
1423
+ const need = NEED[kind] || NEED.平和;
1424
+ const dayElement = STEM_ELEMENT[dayStem] || '土';
1425
+ const evidence = [
1426
+ `${SEASON_NAME[monthBranch] || monthBranch}${monthBranch}月`,
1427
+ `火${fire}`,
1428
+ `水${water}`,
1429
+ wetCount ? `湿土${wetCount}处` : '',
1430
+ dryCount ? `燥土${dryCount}处` : '',
1431
+ ].filter(Boolean);
1432
+
1433
+ const priority = Math.abs(temp) >= 1.2 || Math.abs(damp) >= 1.2 ? '调候优先' : '扶抑为主';
1434
+ const narration = buildNarration({ kind, monthBranch, dayElement, need, temp, damp, fire, water });
1435
+
1436
+ return {
1437
+ kind,
1438
+ label: KIND_NAME[kind] || kind,
1439
+ temp,
1440
+ damp,
1441
+ cold,
1442
+ hot,
1443
+ wet: wetSide,
1444
+ dry: drySide,
1445
+ need: need.element ? { element: need.element, stem: need.stem, why: need.why } : null,
1446
+ avoidElement: need.avoid,
1447
+ dayElement,
1448
+ priority,
1449
+ evidence,
1450
+ narration,
1451
+ };
1452
+ }
1453
+
1454
+ function buildNarration({ kind, monthBranch, dayElement, need, fire, water }) {
1455
+ const feel = (DAY_FEEL[kind] || DAY_FEEL.平和)[dayElement] || '';
1456
+ const season = SEASON_NAME[monthBranch] || '';
1457
+ const head = `${season ? season : ''}${monthBranch}月出生,全局火${fire}、水${water},这一盘的气候是「${KIND_NAME[kind] || kind}」`;
1458
+ if (!need.element) {
1459
+ return `${head}。${feel}。调候不是这一盘的主要矛盾,取用仍以扶抑为主,寒暖只作微调。`;
1460
+ }
1461
+ return `${head}。${feel}。所以这一局要的不是更多的${kind.includes('寒') ? '水' : '火'},而是${need.stem}${need.element}——${need.why}。`;
1462
+ }
1463
+
1464
+ function arbitrate(climate, favors = [], avoids = []) {
1465
+ if (!climate || !climate.need) return { clash: false, text: '气候平和,按扶抑取用即可。' };
1466
+ const needEl = climate.need.element;
1467
+ const inFavor = favors.includes(needEl);
1468
+ const inAvoid = avoids.includes(needEl);
1469
+ const same = inFavor && !inAvoid;
1470
+ if (same) return { clash: false, text: `调候要${climate.need.stem}${needEl},扶抑也以${needEl}为喜——两套取法同向,不必取舍。` };
1471
+ return {
1472
+ clash: true,
1473
+ text: `调候要${climate.need.stem}${needEl},扶抑却把${needEl}列为${inAvoid ? '忌' : '闲'};两者不一致,本盘按调候优先取${needEl},扶抑次之——因为寒暖失衡时,再补强弱也难受。`,
1474
+ };
1475
+ }
1476
+
1477
+ function climateText(climate) {
1478
+ if (!climate) return '';
1479
+ const ev = (climate.evidence || []).join('、');
1480
+ const arb = climate.need
1481
+ ? `调候取${climate.need.stem}${climate.need.element}(${climate.need.why}),忌${climate.avoidElement}。`
1482
+ : '气候平和,调候不作主取。';
1483
+ return `${climate.label}(${ev})。${climate.narration}${arb}${climate.priority === '调候优先' ? ' 本盘调候优先于扶抑。' : ''}`;
1484
+ }
1485
+
1486
+ return { judgeClimate, arbitrate, climateText };
1487
+ })();
1488
+
1489
+ __mods.qiongtong = (function () {
1490
+
1491
+ const QT_BRANCHES = ["寅","卯","辰","巳","午","未","申","酉","戌","亥","子","丑"];
1492
+ const QT_MONTHS = ["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"];
1493
+ const QT_BASE_URL = 'https://www.luckclub.cn/bazi/004/';
1494
+ const QT_NOTE = '用神顺序据通行整理表,原文摘句照录;各版本有异文,按条目 note 标注待核处。';
1495
+
1496
+ const QT = {
1497
+ "甲": [
1498
+ {
1499
+ "b": "寅",
1500
+ "m": "正月",
1501
+ "y": "丙癸",
1502
+ "q": "正月甲木,初春尚有余寒,得丙癸逢,富贵双全。癸藏丙透,名寒木向阳,主大富贵。倘风水不及,亦不失儒林俊秀。如无丙癸,平常人也。",
1503
+ "ch": 2,
1504
+ "qs": "丙癸"
1505
+ },
1506
+ {
1507
+ "b": "卯",
1508
+ "m": "二月",
1509
+ "y": "庚丙丁戊己",
1510
+ "q": "或二月甲木,庚金得所者,名阳刃架煞,可许异途小贵,若武职便显,但要财资煞,柱中逢财,英雄独压万人,若见癸水,困了财杀,主为光棍,重刃必定遭凶,煞重无凶,但性格横暴,正二月甲木,无从财化土之格。",
1511
+ "ch": 3,
1512
+ "qs": "庚癸"
1513
+ },
1514
+ {
1515
+ "b": "辰",
1516
+ "m": "三月",
1517
+ "y": "庚丁壬",
1518
+ "q": "三月甲木,木气相竭。先取庚金,次用壬水。",
1519
+ "ch": 4,
1520
+ "qs": "庚壬"
1521
+ },
1522
+ {
1523
+ "b": "巳",
1524
+ "m": "四月",
1525
+ "y": "癸丁庚",
1526
+ "q": "四月甲木退气,丙火司权,先癸后丁。",
1527
+ "ch": 5,
1528
+ "qs": "丙癸丁"
1529
+ },
1530
+ {
1531
+ "b": "午",
1532
+ "m": "五月",
1533
+ "y": "癸丁庚",
1534
+ "q": "五六月甲木,木性虚焦,一理共推,五月先癸后丁,庚金次之。,或五月乏癸,用丁亦可,要运行地为佳。六月三伏生寒,丁火退气。先丁后庚,无癸亦可。",
1535
+ "ch": 6,
1536
+ "qs": "癸丁庚"
1537
+ },
1538
+ {
1539
+ "b": "未",
1540
+ "m": "六月",
1541
+ "y": "丁庚癸",
1542
+ "q": "五六月甲木,木性虚焦,一理共推,五月先癸后丁,庚金次之。,或五月乏癸,用丁亦可,要运行地为佳。六月三伏生寒,丁火退气。先丁后庚,无癸亦可。",
1543
+ "ch": 6,
1544
+ "qs": "癸丁庚"
1545
+ },
1546
+ {
1547
+ "b": "申",
1548
+ "m": "七月",
1549
+ "y": "庚丁壬",
1550
+ "q": "七月甲堪为戟,然非丁不能造庚,非庚不能造甲,丁庚两透,科甲可许。",
1551
+ "ch": 7,
1552
+ "qs": "丁庚"
1553
+ },
1554
+ {
1555
+ "b": "酉",
1556
+ "m": "八月",
1557
+ "y": "丁丙庚",
1558
+ "q": "八月甲木,木囚金旺。丁火为先,次用丙火,庚金再次。",
1559
+ "ch": 8,
1560
+ "qs": "丁丙庚"
1561
+ },
1562
+ {
1563
+ "b": "戌",
1564
+ "m": "九月",
1565
+ "y": "庚甲丁壬癸",
1566
+ "q": "九月甲木,木星凋零,独爱丁火壬癸滋扶。",
1567
+ "ch": 9,
1568
+ "qs": "丁壬癸"
1569
+ },
1570
+ {
1571
+ "b": "亥",
1572
+ "m": "十月",
1573
+ "y": "庚丁丙戊",
1574
+ "q": "十月甲木,以庚为君,以丁为佐,丙火次之,忌壬水泛木,须戊土为制,故戊又次之。",
1575
+ "ch": 10,
1576
+ "qs": "庚丁丙壬戊"
1577
+ },
1578
+ {
1579
+ "b": "子",
1580
+ "m": "十一月",
1581
+ "y": "丁庚丙",
1582
+ "q": "十一月甲木,木性生寒,丁先庚后,丙火佐之,癸水司权,为火金之病。",
1583
+ "ch": 11,
1584
+ "qs": "丁庚丙癸"
1585
+ },
1586
+ {
1587
+ "b": "丑",
1588
+ "m": "十二月",
1589
+ "y": "丁庚丙",
1590
+ "q": "十二月甲木,天寒气冻,木性极寒,无发生之象。先用庚劈甲,方引丁火,始得木火有通明之象,故丁次之。",
1591
+ "ch": 12,
1592
+ "qs": "庚丁"
1593
+ }
1594
+ ],
1595
+ "乙": [
1596
+ {
1597
+ "b": "寅",
1598
+ "m": "正月",
1599
+ "y": "丙癸",
1600
+ "q": "正月天气,犹有余寒,非丙不长,虽有癸润,恐凝寒气,故先用丙,癸次之。",
1601
+ "ch": 13,
1602
+ "qs": "丙癸"
1603
+ },
1604
+ {
1605
+ "b": "卯",
1606
+ "m": "二月",
1607
+ "y": "丙癸",
1608
+ "q": "二月乙木,阳气渐升,木不寒矣,以丙为君,癸为臣,丙癸两透,不透庚金,大富大贵。",
1609
+ "ch": 14,
1610
+ "qs": "丙癸庚"
1611
+ },
1612
+ {
1613
+ "b": "辰",
1614
+ "m": "三月",
1615
+ "y": "癸丙戊",
1616
+ "q": "三月乙木,阳气愈炽,先癸后丙",
1617
+ "ch": 15,
1618
+ "qs": "癸丙"
1619
+ },
1620
+ {
1621
+ "b": "巳",
1622
+ "m": "四月",
1623
+ "y": "癸",
1624
+ "q": "四月乙木,巳宫自有丙火,戊取癸水为尊。四月乙木,专用癸水,丙火酌用,虽以庚辛佐癸,须辛透为清。",
1625
+ "ch": 16,
1626
+ "qs": "丙戊癸庚辛"
1627
+ },
1628
+ {
1629
+ "b": "午",
1630
+ "m": "五月",
1631
+ "y": "癸丙",
1632
+ "q": "五月乙木,丁火司权,禾稼俱旱。上半月属阳,先癸次丙;下半月属阴,三伏生寒,丙癸齐用。柱多金水,丙火为先,余皆用癸水为先。",
1633
+ "ch": 17,
1634
+ "qs": "丁癸丙"
1635
+ },
1636
+ {
1637
+ "b": "未",
1638
+ "m": "六月",
1639
+ "y": "癸丙",
1640
+ "q": "六月乙木,木性且寒,柱多金水,丙火为尊。支成水局,乙得无伤。癸水透干,大富大贵。无癸定作常人,运不行北,困苦一生。",
1641
+ "ch": 18,
1642
+ "qs": "丙癸"
1643
+ },
1644
+ {
1645
+ "b": "申",
1646
+ "m": "七月",
1647
+ "y": "丙癸己",
1648
+ "q": "七月乙木,庚金乘令,庚虽输情于乙妹,怎奈干乙难合支庚。柱见庚多,乙难受载。或丙癸透干,又加己出埋金,丙癸己俱透,此格可云科甲,大富大贵",
1649
+ "ch": 19,
1650
+ "qs": "庚丙癸己甲"
1651
+ },
1652
+ {
1653
+ "b": "酉",
1654
+ "m": "八月",
1655
+ "y": "癸丙丁",
1656
+ "q": "八月乙木,芝兰禾稼均退,以丹桂为乙木。在白露之后,桂蕊未开,专用癸水,以滋桂萼。若秋分后,桂花已开,又当向阳,宜先用丙,癸水次之,丙癸两透,科甲名臣。",
1657
+ "ch": 20,
1658
+ "qs": "癸丙甲"
1659
+ },
1660
+ {
1661
+ "b": "戌",
1662
+ "m": "九月",
1663
+ "y": "癸辛",
1664
+ "q": "九月乙木,枝枯叶落,必赖癸水滋养。如见甲申时,名为藤萝繁甲,可秋可冬。",
1665
+ "ch": 21,
1666
+ "qs": "癸甲"
1667
+ },
1668
+ {
1669
+ "b": "亥",
1670
+ "m": "十月",
1671
+ "y": "丙戊",
1672
+ "q": "十月乙木,丙不受气,壬水司令,丙为尊,或壬多,用戊土。",
1673
+ "ch": 22,
1674
+ "qs": "丙壬戊"
1675
+ },
1676
+ {
1677
+ "b": "子",
1678
+ "m": "十一月",
1679
+ "y": "丙",
1680
+ "q": "十一月乙木,根叶寒冻,喜丙复一阳,用丙火解冻,斯花木有向阳之意,不宜癸水出干以冻花木,故专用丙火。",
1681
+ "ch": 23,
1682
+ "qs": "丙癸"
1683
+ },
1684
+ {
1685
+ "b": "丑",
1686
+ "m": "十二月",
1687
+ "y": "丙",
1688
+ "q": "十二月乙木,木寒宜丙,有寒谷回春之象。得一丙透,无癸出破格,不特科甲,定主名臣显宦。丙火藏支,不过廪贡生员。干支无丙,一介寒儒。",
1689
+ "ch": 24,
1690
+ "qs": "丙癸甲"
1691
+ }
1692
+ ],
1693
+ "丙": [
1694
+ {
1695
+ "b": "寅",
1696
+ "m": "正月",
1697
+ "y": "壬庚",
1698
+ "q": "正月三阳开泰,火气渐炎,取壬为尊,庚金为佐。壬庚两透,定许科甲,即壬透庚藏,虽不由科甲,恰有异途恩封",
1699
+ "ch": 25,
1700
+ "qs": "壬庚甲"
1701
+ },
1702
+ {
1703
+ "b": "卯",
1704
+ "m": "二月",
1705
+ "y": "壬己",
1706
+ "q": "二月丙火,阳气舒升,专用壬水。",
1707
+ "ch": 26,
1708
+ "qs": "壬"
1709
+ },
1710
+ {
1711
+ "b": "辰",
1712
+ "m": "三月",
1713
+ "y": "壬甲",
1714
+ "q": "三月火气渐炎,专用壬水,或支成土局,取甲为辅,壬不可离。",
1715
+ "ch": 27,
1716
+ "qs": "壬甲"
1717
+ },
1718
+ {
1719
+ "b": "巳",
1720
+ "m": "四月",
1721
+ "y": "壬癸庚",
1722
+ "q": "四月丙火,建禄于巳,火势炎炎,宜专用壬水,解炎威之力,成既济之功。如无壬水,名孤阳失辅,难透清光,得庚发水源,方为有根之水。壬庚两透,不见戊己出干,号曰湖海汪洋,广映太阳,光辉显著,文明之象。",
1723
+ "ch": 28,
1724
+ "qs": "壬庚戊己"
1725
+ },
1726
+ {
1727
+ "b": "午",
1728
+ "m": "五月",
1729
+ "y": "壬庚",
1730
+ "q": "五月丙火愈炎,得壬庚高透,方为上命。或一壬无庚,亦主贡监,还须好运。犹防戊己出干,丁壬化合,则为平人。即不透庚壬。或有申宫长生之水,济之坐禄之金,至妙,必入词林。又怕戊己杂乱,则为异路。",
1731
+ "ch": 29,
1732
+ "qs": "壬庚戊己丁"
1733
+ },
1734
+ {
1735
+ "b": "未",
1736
+ "m": "六月",
1737
+ "y": "壬庚",
1738
+ "q": "六月丙火退气,三伏生寒,己土泄气,壬水为用,取庚辅佐。",
1739
+ "ch": 30,
1740
+ "qs": "己壬庚"
1741
+ },
1742
+ {
1743
+ "b": "申",
1744
+ "m": "七月",
1745
+ "y": "壬戊",
1746
+ "q": "七月丙火,太阳转西,阳气渐衰。日近西山,见土皆晦。惟日照湖海,暮夜光天,故仍用壬水,辅映太阳光辉。",
1747
+ "ch": 31,
1748
+ "qs": "壬"
1749
+ },
1750
+ {
1751
+ "b": "酉",
1752
+ "m": "八月",
1753
+ "y": "壬癸",
1754
+ "q": "八月丙火,日近黄昏,丙有余光,存于湖海,仍用壬水辅映。",
1755
+ "ch": 32,
1756
+ "qs": "壬"
1757
+ },
1758
+ {
1759
+ "b": "戌",
1760
+ "m": "九月",
1761
+ "y": "甲壬",
1762
+ "q": "九月丙火,火气愈退,忌土晦光,必须先用甲木,次取壬水。",
1763
+ "ch": 33,
1764
+ "qs": "甲壬"
1765
+ },
1766
+ {
1767
+ "b": "亥",
1768
+ "m": "十月",
1769
+ "y": "甲戊庚壬",
1770
+ "q": "十月丙火,太阳失令,得见甲戊庚齐透,科甲有准,风土不及,终成选拔,主为人性好清高,斯文领袖。",
1771
+ "ch": 34,
1772
+ "qs": "甲戊庚"
1773
+ },
1774
+ {
1775
+ "b": "子",
1776
+ "m": "十一月",
1777
+ "y": "壬戊己",
1778
+ "q": "十一月丙火,冬至一阳生,弱中复强,壬水为最,戊土佐之。",
1779
+ "ch": 35,
1780
+ "qs": "壬戊"
1781
+ },
1782
+ {
1783
+ "b": "丑",
1784
+ "m": "十二月",
1785
+ "y": "壬甲",
1786
+ "q": "十二月丙火,气进二阳,每雪欺霜,喜壬为用,己土司令,土多又不可少甲",
1787
+ "ch": 36,
1788
+ "qs": "壬己甲"
1789
+ }
1790
+ ],
1791
+ "丁": [
1792
+ {
1793
+ "b": "寅",
1794
+ "m": "正月",
1795
+ "y": "甲庚",
1796
+ "q": "正月丁火,甲木当权,乃为母旺,非庚不能劈甲,何以引丁,先庚次壬。",
1797
+ "ch": 37,
1798
+ "qs": "甲庚壬"
1799
+ },
1800
+ {
1801
+ "b": "卯",
1802
+ "m": "二月",
1803
+ "y": "庚甲",
1804
+ "q": "二月丁火,湿乙伤丁,先庚后甲,非庚不能去乙,非甲不能引丁。",
1805
+ "ch": 38,
1806
+ "qs": "乙庚甲"
1807
+ },
1808
+ {
1809
+ "b": "辰",
1810
+ "m": "三月",
1811
+ "y": "甲庚",
1812
+ "q": "三月丁火,戊土司令,泄弱丁气,先用甲木引丁制土,次看庚金。",
1813
+ "ch": 39,
1814
+ "qs": "戊甲庚"
1815
+ },
1816
+ {
1817
+ "b": "巳",
1818
+ "m": "四月",
1819
+ "y": "甲庚",
1820
+ "q": "四月丁火乘旺,虽取甲引丁,必须用庚劈甲,有庚伐甲、方云木火通明;甲多、又取庚为先。",
1821
+ "ch": 40,
1822
+ "qs": "甲庚"
1823
+ },
1824
+ {
1825
+ "b": "午",
1826
+ "m": "五月",
1827
+ "y": "壬庚癸",
1828
+ "q": "五月丁火,时逢建禄,不得轻用甲木;遇干透隔位之壬,不贪丁合,忠而且孝。",
1829
+ "ch": 41,
1830
+ "qs": "甲壬"
1831
+ },
1832
+ {
1833
+ "b": "未",
1834
+ "m": "六月",
1835
+ "y": "甲壬庚",
1836
+ "q": "六月丁火,阴柔退气,但值三伏生寒,丁弱极矣,专取甲木,壬水次之。",
1837
+ "ch": 42,
1838
+ "qs": "甲壬"
1839
+ },
1840
+ {
1841
+ "b": "申",
1842
+ "m": "七月",
1843
+ "y": "甲庚丙戊",
1844
+ "q": "七月丁火,退气柔弱,端用甲木,金虽乘旺司权,无伤丁之理,仍取庚劈甲,为引火之物,或借丙暖金晒甲,不虑丙夺丁光,凡两丙夹丁者,夏月忌之,余月不忌,但此格少年困苦刑克中年富贵,必要地支见水制丙,方",
1845
+ "ch": 43,
1846
+ "qs": "甲庚丙"
1847
+ },
1848
+ {
1849
+ "b": "酉",
1850
+ "m": "八月",
1851
+ "y": "甲庚丙戊",
1852
+ "q": "或八月一派辛金,不见庚金,又无比劫,比弃命从才,富而且贵,虽不科甲,亦有异途,从才者水为妻,不克,有正偏,木为子,不刑。或九月一派戊土,泄丁火之气,不见甲木,为伤官伤尽,非寻常可比,或甲木透出",
1853
+ "ch": 44,
1854
+ "qs": "辛庚甲戊",
1855
+ "note": "原文全章未见「丙」,此格按整理表录入,待以善本核对"
1856
+ },
1857
+ {
1858
+ "b": "戌",
1859
+ "m": "九月",
1860
+ "y": "甲庚戊",
1861
+ "q": "或八月一派辛金,不见庚金,又无比劫,比弃命从才,富而且贵,虽不科甲,亦有异途,从才者水为妻,不克,有正偏,木为子,不刑。或九月一派戊土,泄丁火之气,不见甲木,为伤官伤尽,非寻常可比,或甲木透出",
1862
+ "ch": 44,
1863
+ "qs": "辛庚甲戊"
1864
+ },
1865
+ {
1866
+ "b": "亥",
1867
+ "m": "十月",
1868
+ "y": "甲庚",
1869
+ "q": "三冬丁火微寒,端用庚甲,甲乃庚之良友,凡用甲木,庚不可少,无庚无甲,何能引丁,难云木火通明,冬丁有甲,不怕水多金多,可称上格,甲庚两透,科甲分明,见己则否,己多合甲,则为常人。或一丙夺丁,必赖",
1870
+ "ch": 45,
1871
+ "qs": "庚甲己丙"
1872
+ },
1873
+ {
1874
+ "b": "子",
1875
+ "m": "十一月",
1876
+ "y": "甲庚",
1877
+ "q": "或仲冬水多癸旺,金无比印,此作弃命从杀,亦有异途功名,见丁比出干,难合格局,常人,且主骨肉浮云,六亲流水,戊出破癸,颇有兄弟妻儿,此格用戊,火妻土子,用甲,水妻木子。或四柱多丙丁,又用癸制火,",
1878
+ "ch": 46,
1879
+ "qs": "癸戊甲丙"
1880
+ },
1881
+ {
1882
+ "b": "丑",
1883
+ "m": "十二月",
1884
+ "y": "甲庚",
1885
+ "q": "或仲冬水多癸旺,金无比印,此作弃命从杀,亦有异途功名,见丁比出干,难合格局,常人,且主骨肉浮云,六亲流水,戊出破癸,颇有兄弟妻儿,此格用戊,火妻土子,用甲,水妻木子。或四柱多丙丁,又用癸制火,",
1886
+ "ch": 46,
1887
+ "qs": "癸戊甲丙"
1888
+ }
1889
+ ],
1890
+ "戊": [
1891
+ {
1892
+ "b": "寅",
1893
+ "m": "正月",
1894
+ "y": "丙甲癸",
1895
+ "q": "正二月宜先透丙,三月宜先透甲,盖正二月虽有癸甲,无丙亦难除寒气,如风雨淹淹,万物生而不长,故无丙者,一生成败,富贵艰辛,或有丙无癸甲者,名曰春旱,如万物生而多厄,一生勤苦,劳而无功。",
1896
+ "ch": 48,
1897
+ "qs": "丙甲癸辛"
1898
+ },
1899
+ {
1900
+ "b": "卯",
1901
+ "m": "二月",
1902
+ "y": "丙甲癸",
1903
+ "q": "正二月宜先透丙,三月宜先透甲,盖正二月虽有癸甲,无丙亦难除寒气,如风雨淹淹,万物生而不长,故无丙者,一生成败,富贵艰辛,或有丙无癸甲者,名曰春旱,如万物生而多厄,一生勤苦,劳而无功。",
1904
+ "ch": 48,
1905
+ "qs": "丙甲癸辛"
1906
+ },
1907
+ {
1908
+ "b": "辰",
1909
+ "m": "三月",
1910
+ "y": "甲丙癸",
1911
+ "q": "三月戊土司令,不见丙甲癸者,愚而且贱,甲癸透者、科甲;两癸透者、生员。丙透甲藏,无癸者富;有癸者,异途显达。",
1912
+ "ch": 49,
1913
+ "qs": "丙甲癸"
1914
+ },
1915
+ {
1916
+ "b": "巳",
1917
+ "m": "四月",
1918
+ "y": "甲丙癸",
1919
+ "q": "四月戊土,阳气发升,寒气内藏,外实内虚,不畏火炎,无阳气相催,万物不长,故先用甲疏劈,次取丙癸为佐。",
1920
+ "ch": 50,
1921
+ "qs": "甲丙癸"
1922
+ },
1923
+ {
1924
+ "b": "午",
1925
+ "m": "五月",
1926
+ "y": "壬甲丙",
1927
+ "q": "五月戊土,仲夏火炎,先看壬水,次取甲木,丙火酌用,用癸恐其力微。",
1928
+ "ch": 51,
1929
+ "qs": "壬甲丙癸"
1930
+ },
1931
+ {
1932
+ "b": "未",
1933
+ "m": "六月",
1934
+ "y": "癸丙甲",
1935
+ "q": "六月戊土,遇夏干枯,先看癸水,次用丙火、甲木。",
1936
+ "ch": 52,
1937
+ "qs": "癸丙甲"
1938
+ },
1939
+ {
1940
+ "b": "申",
1941
+ "m": "七月",
1942
+ "y": "丙癸甲",
1943
+ "q": "七月戊土,阳气渐入,寒气渐出,先丙后癸,甲木次之。",
1944
+ "ch": 53,
1945
+ "qs": "丙癸甲"
1946
+ },
1947
+ {
1948
+ "b": "酉",
1949
+ "m": "八月",
1950
+ "y": "丙癸",
1951
+ "q": "八月戊土,金泄身寒,赖丙照暖,喜水滋润,先丙后癸,不必木疏。",
1952
+ "ch": 54,
1953
+ "qs": "丙癸"
1954
+ },
1955
+ {
1956
+ "b": "戌",
1957
+ "m": "九月",
1958
+ "y": "甲丙癸",
1959
+ "q": "九月戊土当权,不可专用丙火。先看甲木,次取癸水,却忌戊与癸合。见金先用癸水,后取丙火,配合支干,方成有生之土,合此定发云程,科甲有准。",
1960
+ "ch": 55,
1961
+ "qs": "丙甲癸"
1962
+ },
1963
+ {
1964
+ "b": "亥",
1965
+ "m": "十月",
1966
+ "y": "甲丙",
1967
+ "q": "十月戊土,时值小阳,阳气略出,先用甲木,次取丙火,非甲,土不灵,非丙,土不暖;安能发生万物。",
1968
+ "ch": 56,
1969
+ "qs": "甲丙"
1970
+ },
1971
+ {
1972
+ "b": "子",
1973
+ "m": "十一月",
1974
+ "y": "丙甲",
1975
+ "q": "十一二月严寒冰冻,丙火为尊,甲木为佐。丙甲两透,桃浪之人;丙出甲藏,采芹食饩,丙藏甲出,佐杂前程;有丙无甲者,豪富,有甲无丙者,清贫,丙甲全无,下流之造。",
1976
+ "ch": 57,
1977
+ "qs": "丙甲"
1978
+ },
1979
+ {
1980
+ "b": "丑",
1981
+ "m": "十二月",
1982
+ "y": "丙甲",
1983
+ "q": "十一二月严寒冰冻,丙火为尊,甲木为佐。丙甲两透,桃浪之人;丙出甲藏,采芹食饩,丙藏甲出,佐杂前程;有丙无甲者,豪富,有甲无丙者,清贫,丙甲全无,下流之造。",
1984
+ "ch": 57,
1985
+ "qs": "丙甲"
1986
+ }
1987
+ ],
1988
+ "己": [
1989
+ {
1990
+ "b": "寅",
1991
+ "m": "正月",
1992
+ "y": "丙庚甲",
1993
+ "q": "正月己土,寒气未退,田园犹冻,丙暖为尊,得丙照暖,万物自生。忌见壬水,盖壬不为丙优,反为己病,何也?壬乃江湖之水,田园浸没,急须修堤岸,田园始得播种,须戊作堤,以保园圃,壬多见戊者,定主清雅富",
1994
+ "ch": 58,
1995
+ "qs": "丙壬戊"
1996
+ },
1997
+ {
1998
+ "b": "卯",
1999
+ "m": "二月",
2000
+ "y": "甲癸丙",
2001
+ "q": "二月己土,阳气渐升,虽禾稼未成,万物发生。但田园未展,宜先取甲木疏之,忌合;次取癸水润之。",
2002
+ "ch": 59,
2003
+ "qs": "甲癸"
2004
+ },
2005
+ {
2006
+ "b": "辰",
2007
+ "m": "三月",
2008
+ "y": "丙癸甲",
2009
+ "q": "三月己土,正栽培禾稼之时。先丙后癸,土暖而润,随用甲疏。",
2010
+ "ch": 60,
2011
+ "qs": "丙癸甲"
2012
+ },
2013
+ {
2014
+ "b": "巳",
2015
+ "m": "四月",
2016
+ "y": "癸丙",
2017
+ "q": "三夏己土,时值禾稼在田,最喜甘沛,取癸为要,次用丙火。夏无太阳,禾稼不长,故无癸曰旱田,无丙曰孤阴。",
2018
+ "ch": 61,
2019
+ "qs": "癸丙"
2020
+ },
2021
+ {
2022
+ "b": "午",
2023
+ "m": "五月",
2024
+ "y": "癸丙",
2025
+ "q": "三夏己土,时值禾稼在田,最喜甘沛,取癸为要,次用丙火。夏无太阳,禾稼不长,故无癸曰旱田,无丙曰孤阴。",
2026
+ "ch": 61,
2027
+ "qs": "癸丙"
2028
+ },
2029
+ {
2030
+ "b": "未",
2031
+ "m": "六月",
2032
+ "y": "癸丙",
2033
+ "q": "三夏己土,时值禾稼在田,最喜甘沛,取癸为要,次用丙火。夏无太阳,禾稼不长,故无癸曰旱田,无丙曰孤阴。",
2034
+ "ch": 61,
2035
+ "qs": "癸丙"
2036
+ },
2037
+ {
2038
+ "b": "申",
2039
+ "m": "七月",
2040
+ "y": "丙癸",
2041
+ "q": "三秋己土,万物收藏之际,外虚内实,寒气渐升,须丙火温之,癸水润之。不特此也,且癸能泄金,丙能制金,补土精神,则秋生之物咸茂矣。",
2042
+ "ch": 62,
2043
+ "qs": "丙癸"
2044
+ },
2045
+ {
2046
+ "b": "酉",
2047
+ "m": "八月",
2048
+ "y": "丙癸",
2049
+ "q": "三秋己土,万物收藏之际,外虚内实,寒气渐升,须丙火温之,癸水润之。不特此也,且癸能泄金,丙能制金,补土精神,则秋生之物咸茂矣。",
2050
+ "ch": 62,
2051
+ "qs": "丙癸"
2052
+ },
2053
+ {
2054
+ "b": "戌",
2055
+ "m": "九月",
2056
+ "y": "甲丙癸",
2057
+ "q": "三秋己土,万物收藏之际,外虚内实,寒气渐升,须丙火温之,癸水润之。不特此也,且癸能泄金,丙能制金,补土精神,则秋生之物咸茂矣。",
2058
+ "ch": 62,
2059
+ "qs": "丙癸"
2060
+ },
2061
+ {
2062
+ "b": "亥",
2063
+ "m": "十月",
2064
+ "y": "丙甲戊",
2065
+ "q": "三冬己土,湿泥寒冻,非丙暖不生,取丙为尊,甲木能参用,不可用癸。唯初冬壬水旺,用以为制,余皆用丙。无丙用丁,但丁不能解冻除寒,不能火济;丁多,衣禄安然。",
2066
+ "ch": 63,
2067
+ "qs": "丙甲癸壬丁"
2068
+ },
2069
+ {
2070
+ "b": "子",
2071
+ "m": "十一月",
2072
+ "y": "丙甲戊",
2073
+ "q": "三冬己土,湿泥寒冻,非丙暖不生,取丙为尊,甲木能参用,不可用癸。唯初冬壬水旺,用以为制,余皆用丙。无丙用丁,但丁不能解冻除寒,不能火济;丁多,衣禄安然。",
2074
+ "ch": 63,
2075
+ "qs": "丙甲癸壬丁"
2076
+ },
2077
+ {
2078
+ "b": "丑",
2079
+ "m": "十二月",
2080
+ "y": "丙甲戊",
2081
+ "q": "三冬己土,湿泥寒冻,非丙暖不生,取丙为尊,甲木能参用,不可用癸。唯初冬壬水旺,用以为制,余皆用丙。无丙用丁,但丁不能解冻除寒,不能火济;丁多,衣禄安然。",
2082
+ "ch": 63,
2083
+ "qs": "丙甲癸壬丁"
2084
+ }
2085
+ ],
2086
+ "庚": [
2087
+ {
2088
+ "b": "寅",
2089
+ "m": "正月",
2090
+ "y": "戊甲壬丙丁",
2091
+ "q": "正月庚金,木旺之际,有土皆死,不能生金。且金之寒气未除,先用丙暖庚性。又虑土厚埋金,须甲疏泄。",
2092
+ "ch": 65,
2093
+ "qs": "丙甲"
2094
+ },
2095
+ {
2096
+ "b": "卯",
2097
+ "m": "二月",
2098
+ "y": "丁甲庚丙",
2099
+ "q": "二月庚金,卯中乙木当权,柱中自然有乙,当令之乙,得庚辰时,庚必留情于乙,此金有暗强之势,如秋金相似。",
2100
+ "ch": 66,
2101
+ "qs": "乙"
2102
+ },
2103
+ {
2104
+ "b": "辰",
2105
+ "m": "三月",
2106
+ "y": "甲丁壬癸",
2107
+ "q": "三月庚金,戊土司令,不怕生寒,无生金之理,有埋金之忧。故先用甲木疏土,次用丁火煅炼成器,不必用庚劈甲。",
2108
+ "ch": 67,
2109
+ "qs": "戊甲丁"
2110
+ },
2111
+ {
2112
+ "b": "巳",
2113
+ "m": "四月",
2114
+ "y": "壬戊丙丁",
2115
+ "q": "四月庚金,长生在巳,巳虽有丙,内有戊土,丙不熔金,故不畏火炎。但丙不可轻用,宜先用壬水,方得中和。书曰:群金生夏,妙用玄武;次取戊土,丙火佐之;三者皆全,富贵无双。或透一二,亦主贡监衣衿。",
2116
+ "ch": 68,
2117
+ "qs": "丙戊壬"
2118
+ },
2119
+ {
2120
+ "b": "午",
2121
+ "m": "五月",
2122
+ "y": "壬癸",
2123
+ "q": "五月庚金,丁火旺烈,庚金败地,专用壬水,癸又次之。",
2124
+ "ch": 69,
2125
+ "qs": "丁壬癸"
2126
+ },
2127
+ {
2128
+ "b": "未",
2129
+ "m": "六月",
2130
+ "y": "丁甲",
2131
+ "q": "六月庚金,三伏生寒,金顽已极。先用丁火,次取甲木。",
2132
+ "ch": 70,
2133
+ "qs": "丁甲"
2134
+ },
2135
+ {
2136
+ "b": "申",
2137
+ "m": "七月",
2138
+ "y": "丁甲",
2139
+ "q": "七月庚金,刚锐极矣。专用丁火煅炼,次取木引丁。故曰:秋金刚锐最为奇,壬癸相逢总不宜:如逢木火来成局,试看福寿与天齐。",
2140
+ "ch": 71,
2141
+ "qs": "丁壬癸"
2142
+ },
2143
+ {
2144
+ "b": "酉",
2145
+ "m": "八月",
2146
+ "y": "丁甲丙",
2147
+ "q": "八月庚金,刚锐未退,仍用丁甲,丙不可少。",
2148
+ "ch": 72,
2149
+ "qs": "丁甲丙"
2150
+ },
2151
+ {
2152
+ "b": "戌",
2153
+ "m": "九月",
2154
+ "y": "甲壬",
2155
+ "q": "九月庚金,戊土司令,最怕土厚埋金。宜先用甲疏,后用壬洗,则金自出矣,忌见己土浊壬。",
2156
+ "ch": 73,
2157
+ "qs": "戊甲壬己"
2158
+ },
2159
+ {
2160
+ "b": "亥",
2161
+ "m": "十月",
2162
+ "y": "丁丙",
2163
+ "q": "十月庚金,水冷性寒,非丁莫造,非丙不暖。",
2164
+ "ch": 74,
2165
+ "qs": "丁丙"
2166
+ },
2167
+ {
2168
+ "b": "子",
2169
+ "m": "十一月",
2170
+ "y": "丁甲丙",
2171
+ "q": "十一月庚金,天气严寒,仍取丁甲,次取丙火照暖。",
2172
+ "ch": 75,
2173
+ "qs": "丁甲丙"
2174
+ },
2175
+ {
2176
+ "b": "丑",
2177
+ "m": "十二月",
2178
+ "y": "丙丁甲",
2179
+ "q": "十二月庚金,寒气太重,丑为湿泥,愈寒愈冻,先取丙火解冻,次取丁火炼金,甲亦不可少。",
2180
+ "ch": 76,
2181
+ "qs": "丙丁甲"
2182
+ }
2183
+ ],
2184
+ "辛": [
2185
+ {
2186
+ "b": "寅",
2187
+ "m": "正月",
2188
+ "y": "己壬庚",
2189
+ "q": "正月辛金,阳气舒升寒气未除。然正月建寅,中有长生之丙,可解寒气。但忌甲木司权,辛金失令。性爱湿泥滋养,取己土为身之本。次用壬水淘洗,欲得辛金发现,全赖壬水之功。",
2190
+ "ch": 77,
2191
+ "qs": "丙甲己壬"
2192
+ },
2193
+ {
2194
+ "b": "卯",
2195
+ "m": "二月",
2196
+ "y": "壬甲",
2197
+ "q": "二月辛金,阳和之际,壬水为尊。见戊己为病,得甲制伏,则辛金不致埋没,壬水不致混浊,合此者,必身入玉堂。故二月庚金,有壬甲透者贵显;否则,乡绅。或壬坐亥支,不见土出,可能入芥,家亦小康。得申中之",
2198
+ "ch": 78,
2199
+ "qs": "壬戊己甲庚"
2200
+ },
2201
+ {
2202
+ "b": "辰",
2203
+ "m": "三月",
2204
+ "y": "壬甲",
2205
+ "q": "三月辛金,戊土司令,辛承正气,母旺子相。",
2206
+ "ch": 79,
2207
+ "qs": "戊"
2208
+ },
2209
+ {
2210
+ "b": "巳",
2211
+ "m": "四月",
2212
+ "y": "壬甲癸",
2213
+ "q": "四月辛金,时道首夏,忌丙火之燥烈,喜壬水之洗淘。",
2214
+ "ch": 80,
2215
+ "qs": "丙壬"
2216
+ },
2217
+ {
2218
+ "b": "午",
2219
+ "m": "五月",
2220
+ "y": "壬己癸",
2221
+ "q": "五月辛金,丁火司权,辛金失令,阴柔之极,不宜煅炼,须己壬兼用。何也?己为泥沙,壬为湖海,己无壬不湿,辛无己不生,故壬己并用。无壬,癸亦可用,但癸力小。",
2222
+ "ch": 81,
2223
+ "qs": "丁己壬癸"
2224
+ },
2225
+ {
2226
+ "b": "未",
2227
+ "m": "六月",
2228
+ "y": "壬庚甲",
2229
+ "q": "六月己土当权,滋扶太过,恐污金不耀,专用壬水为妙,次取庚金佐之。",
2230
+ "ch": 82,
2231
+ "qs": "己壬庚"
2232
+ },
2233
+ {
2234
+ "b": "申",
2235
+ "m": "七月",
2236
+ "y": "壬甲戊",
2237
+ "q": "七月辛金,值庚秉令,不旺自旺。且申中有长生之壬,四柱不见戊土透干,胎元亦无戊制,唯申中一戊,为壬堤岸,人命得此,为官清正,但不富耳。",
2238
+ "ch": 83,
2239
+ "qs": "庚壬戊"
2240
+ },
2241
+ {
2242
+ "b": "酉",
2243
+ "m": "八月",
2244
+ "y": "壬甲",
2245
+ "q": "八月辛金,当权,得令,旺之极矣,专用壬水淘之泄之为贵,故云:金见水以流通。",
2246
+ "ch": 84,
2247
+ "qs": "壬"
2248
+ },
2249
+ {
2250
+ "b": "戌",
2251
+ "m": "九月",
2252
+ "y": "壬甲",
2253
+ "q": "九月辛金,戊土司令,母旺子相,须甲疏土,壬泄旺金,先壬后甲。壬甲两透,桃洞之仙。",
2254
+ "ch": 85,
2255
+ "qs": "戊甲壬"
2256
+ },
2257
+ {
2258
+ "b": "亥",
2259
+ "m": "十月",
2260
+ "y": "壬丙",
2261
+ "q": "十月时值小阳,阳气初潜,寒气未盛,先用壬水,次用丙火,暖壬温辛。",
2262
+ "ch": 86,
2263
+ "qs": "壬丙"
2264
+ },
2265
+ {
2266
+ "b": "子",
2267
+ "m": "十一月",
2268
+ "y": "丙戊壬甲",
2269
+ "q": "十一月辛金,癸水司令,为寒冬雨露,最忌癸水出干,冻金而困丙火。",
2270
+ "ch": 87,
2271
+ "qs": "癸丙"
2272
+ },
2273
+ {
2274
+ "b": "丑",
2275
+ "m": "十二月",
2276
+ "y": "丙壬戊己",
2277
+ "q": "十二月辛金,寒冻之极,先丙后壬。无丙不能解冻,无壬不能洗淘。",
2278
+ "ch": 88,
2279
+ "qs": "丙壬"
2280
+ }
2281
+ ],
2282
+ "壬": [
2283
+ {
2284
+ "b": "寅",
2285
+ "m": "正月",
2286
+ "y": "庚丙戊",
2287
+ "q": "正月壬水,汪洋之象,能并百川之流。然水性柔弱,宜用庚金之源,次取丙火以除寒气,又次取戊土以止其流,庶不致汪洋无度。",
2288
+ "ch": 90,
2289
+ "qs": "庚丙戊"
2290
+ },
2291
+ {
2292
+ "b": "卯",
2293
+ "m": "二月",
2294
+ "y": "戊辛庚",
2295
+ "q": "二月壬水,寒气初除,清流湛深,不用丙暖,专取戊土为堤岸,辛发其源,庚金次之。",
2296
+ "ch": 91,
2297
+ "qs": "丙戊辛庚"
2298
+ },
2299
+ {
2300
+ "b": "辰",
2301
+ "m": "三月",
2302
+ "y": "甲庚",
2303
+ "q": "三月壬水,戊土司权,死有推山塞海之患,先用甲疏季土,次取庚发水源。",
2304
+ "ch": 92,
2305
+ "qs": "戊甲庚"
2306
+ },
2307
+ {
2308
+ "b": "巳",
2309
+ "m": "四月",
2310
+ "y": "壬辛庚癸",
2311
+ "q": "四月壬水,丙火司权,水弱极矣。专取壬水比肩为助,次取辛金发源,忌与丙火合化,又以庚金为佐。",
2312
+ "ch": 93,
2313
+ "qs": "丙辛庚"
2314
+ },
2315
+ {
2316
+ "b": "午",
2317
+ "m": "五月",
2318
+ "y": "癸庚辛",
2319
+ "q": "五月壬水,丁旺壬弱,取庚为用,取癸为佐。无庚不能蓄源,无癸不能伤丁。",
2320
+ "ch": 94,
2321
+ "qs": "丁庚癸"
2322
+ },
2323
+ {
2324
+ "b": "未",
2325
+ "m": "六月",
2326
+ "y": "辛甲",
2327
+ "q": "六月壬水,己土当权,丁火退气,用辛蓄源,用甲劈土;先辛后甲,次取癸水。",
2328
+ "ch": 95,
2329
+ "qs": "己丁辛甲癸"
2330
+ },
2331
+ {
2332
+ "b": "申",
2333
+ "m": "七月",
2334
+ "y": "戊丁",
2335
+ "q": "七月壬水,庚金司令,壬得申之长生,源流自远,转弱为强。专用戊土,次取丁火,佐戊制庚,但用辰戌之戊,不用申中受病之戊。",
2336
+ "ch": 96,
2337
+ "qs": "庚戊丁"
2338
+ },
2339
+ {
2340
+ "b": "酉",
2341
+ "m": "八月",
2342
+ "y": "甲庚",
2343
+ "q": "八月壬水,辛金司权,金白水清之时,忌戊己为病,专取甲木。",
2344
+ "ch": 97,
2345
+ "qs": "辛戊己甲"
2346
+ },
2347
+ {
2348
+ "b": "戌",
2349
+ "m": "九月",
2350
+ "y": "甲丙",
2351
+ "q": "九月亥水进气,其性将厚。若一派壬水,见一甲制戌中之戊,又见一戊出干,斯用丙火,此格清贵极矣,正谓一将当关,群邪自伏。见丙,便主衣禄,或不见丙戊,终为下格。",
2352
+ "ch": 98,
2353
+ "qs": "甲戊丙"
2354
+ },
2355
+ {
2356
+ "b": "亥",
2357
+ "m": "十月",
2358
+ "y": "戊丙庚",
2359
+ "q": "十月壬水司权,至旺之极,取戊为用。",
2360
+ "ch": 99,
2361
+ "qs": "戊"
2362
+ },
2363
+ {
2364
+ "b": "子",
2365
+ "m": "十一月",
2366
+ "y": "戊丙",
2367
+ "q": "十一月壬水,阳刃帮身,较前更旺,先取戊土,次用丙火。",
2368
+ "ch": 100,
2369
+ "qs": "戊丙"
2370
+ },
2371
+ {
2372
+ "b": "丑",
2373
+ "m": "十二月",
2374
+ "y": "丙丁甲",
2375
+ "q": "十二月壬水,旺极复衰,何也?上半月癸辛主事,壬水稍旺,专用丙火解冻,下半月己土主事,故衰,亦用丙火,甲木佐之;故有丙,名利两全。",
2376
+ "ch": 101,
2377
+ "qs": "癸辛丙己甲"
2378
+ }
2379
+ ],
2380
+ "癸": [
2381
+ {
2382
+ "b": "寅",
2383
+ "m": "正月",
2384
+ "y": "辛丙",
2385
+ "q": "正月癸水,值三阳之候,为雨露之精,其性至柔。先用辛金,生癸水之源,次用丙火照暖,名阴阳和合,万物发生。",
2386
+ "ch": 102,
2387
+ "qs": "辛丙"
2388
+ },
2389
+ {
2390
+ "b": "卯",
2391
+ "m": "二月",
2392
+ "y": "庚辛",
2393
+ "q": "二月癸水,不刚不柔,乙木司令,泄弱元神,专用庚金为用,辛金次之。",
2394
+ "ch": 103,
2395
+ "qs": "乙庚辛"
2396
+ },
2397
+ {
2398
+ "b": "辰",
2399
+ "m": "三月",
2400
+ "y": "丙辛甲",
2401
+ "q": "三月癸水,要分清明鼓雨,清明后火气未炽,专用丙火,名阴阳承蔼。谷雨后虽用丙火,还宜辛金佐之,富贵;次看何神高透无伤,便可定格局高低。如",
2402
+ "ch": 104,
2403
+ "qs": "丙辛"
2404
+ },
2405
+ {
2406
+ "b": "巳",
2407
+ "m": "四月",
2408
+ "y": "辛",
2409
+ "q": "四月癸水,喜见新母,无辛,庚亦可用,但不自然。",
2410
+ "ch": 105,
2411
+ "qs": "辛庚"
2412
+ },
2413
+ {
2414
+ "b": "午",
2415
+ "m": "五月",
2416
+ "y": "庚辛壬癸",
2417
+ "q": "五月癸水,至弱无根,必须庚辛为生身之本,但丁火司权,金难敌火,安能滋养癸水?宜见比劫,方得庚辛妙用。",
2418
+ "ch": 106,
2419
+ "qs": "庚辛丁"
2420
+ },
2421
+ {
2422
+ "b": "未",
2423
+ "m": "六月",
2424
+ "y": "庚辛壬癸",
2425
+ "q": "六月癸水,有上下月之分,上半月庚辛无气,下半月庚辛有气。凡六癸日,人多推此月多不验者,何也?俗士不知此理,不知未中有乙,与己同宫,破而不破,故癸水不能从煞,所以专用庚辛。如上半月,金神衰弱,火",
2426
+ "ch": 107,
2427
+ "qs": "庚辛乙己",
2428
+ "note": "原文全章未见「壬」,此格按整理表录入,待以善本核对"
2429
+ },
2430
+ {
2431
+ "b": "申",
2432
+ "m": "七月",
2433
+ "y": "丁",
2434
+ "q": "七月癸水,正母旺子相之时。癸虽死申,殊不知申中有庚生之,名死处逢生,弱中复强,即运行西北,亦不死也。但庚司令,刚锐极矣,必取丁火为用。",
2435
+ "ch": 108,
2436
+ "qs": "庚丁"
2437
+ },
2438
+ {
2439
+ "b": "酉",
2440
+ "m": "八月",
2441
+ "y": "辛丙",
2442
+ "q": "八月癸水,辛金虚灵,非顽金可比,正金白水清。故取辛金为用,丙火佐之,名水暖金温。",
2443
+ "ch": 109,
2444
+ "qs": "辛丙"
2445
+ },
2446
+ {
2447
+ "b": "戌",
2448
+ "m": "九月",
2449
+ "y": "辛甲壬癸",
2450
+ "q": "九月癸水,失令无根,戊土司权,克制太过,专用辛金发癸水之源,次用癸甲,要比肩滋甲制戊方妙。",
2451
+ "ch": 110,
2452
+ "qs": "戊辛甲"
2453
+ },
2454
+ {
2455
+ "b": "亥",
2456
+ "m": "十月",
2457
+ "y": "庚辛戊丁",
2458
+ "q": "十月癸水,旺中有弱,何也?因亥摇木,泄散元神,宜用庚辛为妙。",
2459
+ "ch": 111,
2460
+ "qs": "庚辛"
2461
+ },
2462
+ {
2463
+ "b": "子",
2464
+ "m": "十一月",
2465
+ "y": "丙辛",
2466
+ "q": "十一月癸水,值冰冻之时,金水无交欢之象,专用丙火解冻,庶不致变雨为雪,结露为霜。又要辛金滋扶,然无丙火,辛亦不妙。凡冬季癸水,有丙透解冻,则金温水暖,两两相生,要不见壬透,自然登科及第,紫诰金",
2467
+ "ch": 112,
2468
+ "qs": "丙辛壬"
2469
+ },
2470
+ {
2471
+ "b": "丑",
2472
+ "m": "十二月",
2473
+ "y": "丙丁",
2474
+ "q": "十二月癸水,落地成冰,万物不能舒泰,专用丙火解冻。",
2475
+ "ch": 113,
2476
+ "qs": "丙"
2477
+ }
2478
+ ]
2479
+ };
2480
+
2481
+ function qtOf(dayStem, monthBranch) {
2482
+ const arr = QT[dayStem];
2483
+ if (!arr) return null;
2484
+ const i = QT_BRANCHES.indexOf(monthBranch);
2485
+ if (i < 0) return null;
2486
+ const e = arr[i];
2487
+ if (!e) return null;
2488
+ const yong = [...e.y];
2489
+ return {
2490
+ stem: dayStem,
2491
+ branch: e.b,
2492
+ month: e.m,
2493
+ yong,
2494
+ primary: yong[0] || null,
2495
+ quote: e.q,
2496
+ quoteStems: [...e.qs],
2497
+ chapter: e.ch,
2498
+ url: QT_BASE_URL + String(e.ch).padStart(3, '0') + '/',
2499
+ note: e.note || '',
2500
+ label: dayStem + '日生于' + e.m + '(' + e.m + e.b + '月)',
2501
+ };
2502
+ }
2503
+
2504
+ function qtLine(e) {
2505
+ if (!e) return '';
2506
+ return e.label + ':用神 ' + e.yong.join('、') + '(首取 ' + e.primary + ')';
2507
+ }
2508
+
2509
+ return { QT_BRANCHES, QT_MONTHS, QT_BASE_URL, QT_NOTE, QT, qtOf, qtLine };
2510
+ })();
2511
+
1283
2512
  __mods.geju = (function () {
1284
2513
 
2514
+ const { judgeClimate, arbitrate } = __mods.tiaohou;
2515
+ const { qtOf } = __mods.qiongtong;
2516
+
1285
2517
  const STEMS = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸'];
1286
2518
  const BRANCHES = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥'];
1287
2519
 
@@ -1459,38 +2691,36 @@ function specialPatterns(pillars, dayStem, monthBranch, strength, wuxing, gods)
1459
2691
  return out;
1460
2692
  }
1461
2693
 
1462
- const TIAOHOU = {
1463
- 亥: ['火', '冬月寒水当令,最喜火暖局'],
1464
- 子: ['火', '仲冬水旺,最喜火暖局'],
1465
- 丑: ['火', '季冬湿寒,喜火解冻'],
1466
- 巳: ['水', '初夏火旺,喜水制衡'],
1467
- 午: ['水', '仲夏火炎,最喜水调候'],
1468
- 未: ['水', '季夏燥土,喜水润局'],
1469
- 寅: ['火', '初春尚寒,得火而发'],
1470
- 卯: ['火', '仲春木旺,喜火吐秀'],
1471
- 辰: ['金', '季春湿土,喜金水疏泄'],
1472
- 申: ['火', '初秋金旺,喜火炼金'],
1473
- 酉: ['火', '仲秋金锐,喜火制'],
1474
- 戌: ['水', '季秋燥土,喜水润泽'],
1475
- };
1476
-
1477
- function yongshenOf(dayStem, monthBranch, strength, wuxing) {
2694
+ function yongshenOf(dayStem, monthBranch, strength, wuxing, branches = []) {
1478
2695
  const roles = elementRoles(dayStem);
1479
2696
  const me = roles.me;
1480
2697
  const weak = strength.level === '身弱' || strength.level === '偏弱';
1481
2698
  const strong = strength.level === '身强' || strength.level === '偏强';
1482
2699
 
1483
- const favor = weak ? [roles.inMe, me] : strong ? [roles.shi, roles.cai, roles.guan] : [roles.inMe, me, roles.shi];
1484
- const avoid = weak ? [roles.shi, roles.cai, roles.guan] : strong ? [me, roles.inMe] : [roles.guan, roles.cai];
1485
- const favorableTenGods = weak ? ['正印', '偏印', '比肩', '劫财'] : strong
1486
- ? ['食神', '伤官', '正财', '偏财', '正官', '七杀']
1487
- : ['正印', '偏印', '食神', '伤官'];
2700
+ const baseFavor = weak ? [roles.inMe, me] : strong ? [roles.shi, roles.cai, roles.guan] : [roles.inMe, me, roles.shi];
2701
+ const baseAvoid = weak ? [roles.shi, roles.cai, roles.guan] : strong ? [me, roles.inMe] : [roles.guan, roles.cai];
2702
+ let favor = baseFavor.slice();
2703
+ let avoid = baseAvoid.slice();
1488
2704
 
1489
- const th = TIAOHOU[monthBranch];
1490
- const tiaohou = th ? { element: th[0], note: th[1] } : null;
2705
+ const climate = judgeClimate({ monthBranch, dayStem, wuxing, branches });
2706
+ const qt = qtOf(dayStem, monthBranch);
2707
+ const arb = arbitrate(climate, baseFavor, baseAvoid);
2708
+ if (climate.need && climate.priority === '调候优先') {
2709
+ const needEl = climate.need.element;
2710
+ if (!favor.includes(needEl)) favor.unshift(needEl);
2711
+ avoid = avoid.filter((e) => e !== needEl);
2712
+ if (climate.avoidElement && !avoid.includes(climate.avoidElement)) avoid.unshift(climate.avoidElement);
2713
+ }
1491
2714
 
1492
2715
  const roleName = (el) => (el === me ? '比劫' : el === roles.inMe ? '印'
1493
2716
  : el === roles.shi ? '食伤' : el === roles.cai ? '财' : '官杀');
2717
+ const expand = {
2718
+ 比劫: ['比肩', '劫财'], 印: ['正印', '偏印'], 食伤: ['食神', '伤官'],
2719
+ 财: ['正财', '偏财'], 官杀: ['正官', '七杀'],
2720
+ };
2721
+ const favorTenGods = Array.from(new Set(favor.flatMap((el) => expand[roleName(el)] || [])));
2722
+ const avoidTenGods = Array.from(new Set(avoid.flatMap((el) => expand[roleName(el)] || [])));
2723
+
1494
2724
  const detail = [
1495
2725
  `日主${dayStem}${me},${strength.level}(${strength.score} 分):`,
1496
2726
  weak
@@ -1498,24 +2728,24 @@ function yongshenOf(dayStem, monthBranch, strength, wuxing) {
1498
2728
  : strong
1499
2729
  ? `喜${roles.shi}(食伤)泄秀、${roles.cai}(财)耗、${roles.guan}(官杀)制;忌${me}(比劫)与${roles.inMe}(印)再助。`
1500
2730
  : '身中和,先取调候与通关,喜忌随大运流年动态变化。',
1501
- tiaohou ? `调候(简化):${tiaohou.note},宜${tiaohou.element}。` : '',
1502
- '扶抑法为主;调候未用穷通宝鉴全表,各派取用不同,仅作方向提示。',
2731
+ `调候:${climate.label}(${(climate.evidence || []).join('、')})${climate.need ? `,取${climate.need.stem}${climate.need.element},忌${climate.avoidElement}` : ',气候平和'}。`,
2732
+ qt ? `穷通宝鉴:${qt.month}${dayStem}${me},用神${qt.yong.join('、')}(首取${qt.primary})。` : '',
2733
+ arb.text,
2734
+ arb.clash ? '取舍:本盘按「调候优先、扶抑次之」取用;若你更认同扶抑派,可把调候当环境偏好,强弱判断不受影响。' : '',
1503
2735
  ].filter(Boolean).join('');
1504
2736
 
1505
2737
  return {
1506
- method: '扶抑为主 + 调候简化提示',
2738
+ method: climate.priority === '调候优先' ? '调候优先 + 扶抑校验' : '扶抑为主 + 调候校验',
1507
2739
  level: strength.level,
1508
2740
  favor,
1509
2741
  avoid,
1510
2742
  favorRoles: favor.map(roleName),
1511
2743
  avoidRoles: avoid.map(roleName),
1512
- favorTenGods: favorableTenGods,
1513
- avoidTenGods: weak
1514
- ? ['食神', '伤官', '正财', '偏财', '正官', '七杀']
1515
- : strong
1516
- ? ['比肩', '劫财', '正印', '偏印']
1517
- : ['正官', '七杀', '正财', '偏财'],
1518
- tiaohou,
2744
+ favorTenGods,
2745
+ avoidTenGods,
2746
+ tiaohou: { ...climate, ...arb, element: climate.need ? climate.need.element : null },
2747
+ climate,
2748
+ qt,
1519
2749
  detail,
1520
2750
  };
1521
2751
  }
@@ -1534,33 +2764,64 @@ function scoreLuck(ganzhi, frame) {
1534
2764
  const branch = ganzhi[1];
1535
2765
  const stemEl = STEM_ELEMENT[stem];
1536
2766
  const branchEl = BRANCH_ELEMENT[branch];
2767
+ const th = ys.tiaohou || ys.climate || null;
1537
2768
  const scoreEl = (el) => {
1538
2769
  let s = 0;
1539
2770
  if (ys.favor.includes(el)) s += 1;
1540
2771
  if (ys.avoid.includes(el)) s -= 1;
1541
- if (ys.tiaohou && el === ys.tiaohou.element) s += 0.4;
1542
2772
  return s;
1543
2773
  };
1544
2774
  let score = scoreEl(stemEl) * 1.0 + scoreEl(branchEl) * 0.8;
1545
2775
  for (const h of (HIDDEN[branch] || []).slice(1)) {
1546
2776
  score += scoreEl(STEM_ELEMENT[h]) * 0.2;
1547
2777
  }
1548
- score = Math.round(score * 10) / 10;
1549
-
1550
- const godStem = tenGod(frame.dayStem, stem);
1551
- const bonus = ys.favorTenGods.includes(godStem) ? 0.3 : 0;
1552
- const total = Math.round((score + bonus) * 10) / 10;
1553
2778
 
1554
- const tier = TIERS.find(([min]) => total >= min)[1];
1555
2779
  const reasons = [];
1556
2780
  if (ys.favor.includes(stemEl)) reasons.push(`天干${stem}${stemEl}为用神`);
1557
2781
  else if (ys.avoid.includes(stemEl)) reasons.push(`天干${stem}${stemEl}为忌神`);
1558
2782
  else reasons.push(`天干${stem}${stemEl}不喜不忌`);
1559
2783
  if (ys.favor.includes(branchEl)) reasons.push(`地支${branch}${branchEl}助用`);
1560
2784
  else if (ys.avoid.includes(branchEl)) reasons.push(`地支${branch}${branchEl}助忌`);
1561
- if (ys.tiaohou && (stemEl === ys.tiaohou.element || branchEl === ys.tiaohou.element)) {
1562
- reasons.push(`合调候(${ys.tiaohou.element})`);
2785
+
2786
+ if (th && th.need && th.priority === '调候优先') {
2787
+ const needEl = th.need.element;
2788
+ const oppEl = th.avoidElement;
2789
+ const cold = String(th.kind).includes('寒');
2790
+ if (stemEl === needEl) {
2791
+ score += 1.1;
2792
+ reasons.push(`${th.label}之局得${stem}${stemEl},${cold ? '解冻' : '得润'}`);
2793
+ } else if (stemEl === oppEl) {
2794
+ score -= 0.9;
2795
+ reasons.push(`${th.label}之局再逢${stem}${stemEl},${cold ? '冻木难生' : '燥上加燥'}`);
2796
+ }
2797
+ if (branchEl === needEl) {
2798
+ score += 0.9;
2799
+ reasons.push(`地支${branch}${branchEl}合调候`);
2800
+ } else if (branchEl === oppEl) {
2801
+ score -= 1.0;
2802
+ reasons.push(`地支${branch}${branchEl}加重${th.label}`);
2803
+ }
2804
+ if (cold && (stemEl === '水' || branchEl === '水')) score -= 0.3;
2805
+ } else if (th && th.need && (stemEl === th.need.element || branchEl === th.need.element)) {
2806
+ reasons.push(`合调候(${th.need.element})`);
2807
+ }
2808
+
2809
+ const godStem = tenGod(frame.dayStem, stem);
2810
+ const bonus = ys.favorTenGods.includes(godStem) ? 0.3 : 0;
2811
+ const qt = ys.qt || null;
2812
+ if (qt && qt.primary && !ys.avoid.includes(STEM_ELEMENT[qt.primary])) {
2813
+ if (stem === qt.primary) {
2814
+ score += 0.3;
2815
+ reasons.push(`天干${stem}正是${qt.branch}月${qt.stem}日的首取(穷通宝鉴)`);
2816
+ } else if (qt.yong.includes(stem) && !ys.avoid.includes(STEM_ELEMENT[stem])) {
2817
+ score += 0.15;
2818
+ reasons.push(`天干${stem}为穷通宝鉴次取`);
2819
+ }
1563
2820
  }
2821
+ let total = Math.round((score + bonus) * 10) / 10;
2822
+ total = Math.max(-4, Math.min(4, total));
2823
+
2824
+ const tier = TIERS.find(([min]) => total >= min)[1];
1564
2825
  return { ganzhi, score: total, tier, stemTenGod: godStem, reasons, note: `${godStem}运,${tier}(${total})` };
1565
2826
  }
1566
2827
 
@@ -1569,7 +2830,7 @@ function analyzeBaziFrame({ pillars, dayStem, monthBranch, strength, wuxing }) {
1569
2830
  const month = monthPattern(pillars, dayStem, monthBranch);
1570
2831
  const special = specialPatterns(pillars, dayStem, monthBranch, strength, wuxing, gods);
1571
2832
  const geju = [month, ...special];
1572
- const yongshen = yongshenOf(dayStem, monthBranch, strength, wuxing);
2833
+ const yongshen = yongshenOf(dayStem, monthBranch, strength, wuxing, Object.values(pillars).map((p) => p.branch));
1573
2834
  return {
1574
2835
  geju,
1575
2836
  primary: month,
@@ -2042,6 +3303,7 @@ function buildBazi(input) {
2042
3303
  },
2043
3304
  strength,
2044
3305
  frame,
3306
+ climate: frame.yongshen.climate || frame.yongshen.tiaohou || null,
2045
3307
  liunian,
2046
3308
  liunianFrom: thisYear,
2047
3309
  };
@@ -7276,6 +8538,7 @@ function baziInterpret(r) {
7276
8538
  const st = isObj(r.strength) ? r.strength : {};
7277
8539
  const frame = isObj(r.frame) ? r.frame : {};
7278
8540
  const ys = isObj(frame.yongshen) ? frame.yongshen : {};
8541
+ const cli = r.climate || (isObj(ys.climate) ? ys.climate : (isObj(ys.tiaohou) ? ys.tiaohou : null));
7279
8542
  const wx = isObj(r.wuxing) ? r.wuxing : {};
7280
8543
  const level = pick(st, 'level', '中和');
7281
8544
  const favor = Array.isArray(ys.favor) ? ys.favor : [];
@@ -7459,10 +8722,12 @@ function baziInterpret(r) {
7459
8722
  else if (!good.includes(curTier) && !good.includes(lnTier)) out.push('大运与流年都偏逆:以守住基本盘为主,减少新增承诺。');
7460
8723
  else out.push('大运与流年同向偏顺:可以把想做但一直拖着的事排上日程。');
7461
8724
  }
7462
- const tiao = ys.tiaohou && ys.tiaohou.element;
7463
- if (tiao) out.push(favor.includes(tiao)
7464
- ? `调候喜${tiao},与扶抑用神同向:取用上不打架,${tiao}相关的行业与环境优先。`
7465
- : `调候喜${tiao},不在扶抑的喜用里:两套取法有分歧,这里以扶抑为主,${tiao}只作环境上的小幅偏好。`);
8725
+ const th = ys.tiaohou && ys.tiaohou.need ? ys.tiaohou : null;
8726
+ if (th) {
8727
+ out.push(th.clash
8728
+ ? `调候要${th.need.stem}${th.need.element},扶抑不在喜用里:两套取法有分歧,本盘按调候优先——寒暖失衡时,再补强弱也难受。`
8729
+ : `调候要${th.need.stem}${th.need.element},与扶抑用神同向:取用上不打架,${th.need.element}相关的行业与环境优先。`);
8730
+ }
7466
8731
  return out.join(' ');
7467
8732
  })(),
7468
8733
  },
@@ -7471,6 +8736,17 @@ function baziInterpret(r) {
7471
8736
  text: `喜用:${join(favor)}(对应十神:${join(ys.favorTenGods || ys.favorRoles || [])});忌:${join(avoid)}(对应十神:${join(ys.avoidTenGods || ys.avoidRoles || [])})。` +
7472
8737
  `${pick(ys, 'detail', '')}`,
7473
8738
  },
8739
+ ...(cli ? [{
8740
+ key: 'climate', label: '寒暖燥湿',
8741
+ text: `${cli.narration}${cli.need
8742
+ ? `调候取${cli.need.stem}${cli.need.element},忌${cli.avoidElement};${cli.clash ? '与扶抑冲突,本盘以调候为先' : '与扶抑同向'}`
8743
+ : '气候平和,调候不作主取'}。`,
8744
+ }] : []),
8745
+ ...(ys.qt ? [{
8746
+ key: 'qiongtong', label: '穷通宝鉴',
8747
+ text: `${ys.qt.label}:用神 ${ys.qt.yong.join('、')}(首取 ${ys.qt.primary})。原文:「${ys.qt.quote}」` +
8748
+ `(《穷通宝鉴》第 ${ys.qt.chapter} 章${ys.qt.note ? ';' + ys.qt.note : ''})`,
8749
+ }] : []),
7474
8750
  {
7475
8751
  key: 'geju', label: '格局依据',
7476
8752
  text: (Array.isArray(frame.geju) ? frame.geju : []).map((g) => `${g.name}(${g.kind}):${g.evidence}`).join(';') || '未取到格局',
@@ -7481,7 +8757,7 @@ function baziInterpret(r) {
7481
8757
  },
7482
8758
  {
7483
8759
  key: 'limits', label: '未纳入',
7484
- text: '本盘没有计算:流月与流日、神煞的加权轻重、地支藏干的动态引化(合冲后再论)。取用以扶抑为主、调候只做简化提示,各派取法不同;真太阳时未含历史时区与夏令时。把这些补上会改变"强弱"的边际判断,所以这里只给方向,不下断语。',
8760
+ text: '本盘没有计算:流月与流日、神煞的加权轻重、地支藏干的动态引化(合冲后再论)。取用按「调候优先、扶抑校验」;调候由月令与全局寒暖燥湿判定,并按《穷通宝鉴》120 格给出用神顺序(整理表口径,原文摘句照录,异文处已标 note);各派取法仍有分歧;真太阳时未含历史时区与夏令时。把这些补上会改变"强弱"的边际判断,所以这里只给方向,不下断语。',
7485
8761
  },
7486
8762
  ];
7487
8763
 
@@ -8943,6 +10219,8 @@ function baziText(r) {
8943
10219
  `   ${r.frame.geju.map((g) => `${g.name}[${g.kind}]`).join(' ')}`,
8944
10220
  `用神:喜${r.frame.yongshen.favor.join('')}(${r.frame.yongshen.favorTenGods.join('、')}) 忌${r.frame.yongshen.avoid.join('')}(${r.frame.yongshen.avoidTenGods.join('、')}) ${r.frame.yongshen.method}`,
8945
10221
  `   ${r.frame.yongshen.detail}`,
10222
+ `寒暖:${r.climate ? `${r.climate.label}(${(r.climate.evidence || []).join('、')})${r.climate.need ? ` 调候取${r.climate.need.stem}${r.climate.need.element} 忌${r.climate.avoidElement}` : ''}` : '—'}` +
10223
+ (r.frame.yongshen.qt ? ` 穷通:${r.frame.yongshen.qt.month}${r.frame.yongshen.qt.stem}取${r.frame.yongshen.qt.yong.join('、')}(首取${r.frame.yongshen.qt.primary})` : ''),
8946
10224
  `十神权重:${Object.entries(r.frame.godStats.groups).map(([k, v]) => `${k}${v}`).join(' ')}`,
8947
10225
  ] : [];
8948
10226
  return [
@@ -10241,6 +11519,30 @@ return { interpret, DIRECTIONS, DIRECTION_DEFAULT, BRIGHTNESS, flowOf, geocodeAd
10241
11519
  @media print{.mp-cg{break-inside:avoid}}
10242
11520
  @media (max-width:640px){.mp-cg-w{grid-template-columns:repeat(2,minmax(0,1fr))}}
10243
11521
  .mp-quick-h{font-size:13px;color:var(--lu);margin-bottom:6px;font-family:system-ui,sans-serif}
11522
+ .mp-cli{margin:10px 0;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card)}
11523
+ .mp-cli-h{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink)}
11524
+ .mp-cli-h b{font-size:13px}
11525
+ .mp-cli-k{font-weight:700;color:var(--lu)}
11526
+ .mp-cli-p{margin-left:auto;font-size:11.5px;color:var(--quan);background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:1px 8px}
11527
+ .mp-cli-bar{position:relative;margin:9px 0 4px;height:8px;border-radius:999px;background:linear-gradient(90deg,var(--quan) 0%,var(--line) 50%,var(--ji) 100%)}
11528
+ .mp-cli-bar i{position:absolute;top:-3px;width:14px;height:14px;margin-left:-7px;border-radius:50%;background:var(--card);border:2px solid var(--ink);box-shadow:0 0 0 2px var(--card)}
11529
+ .mp-cli-axis{display:flex;justify-content:space-between;font-size:11px;color:var(--ink3);margin-bottom:8px}
11530
+ .mp-cli-row{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;font-size:12.5px;color:var(--ink2)}
11531
+ .mp-cli-row em{font-style:normal;color:var(--ink3)}
11532
+ .mp-cli-row b{color:var(--ink)}
11533
+ .mp-cli-narr{margin-top:8px;font-size:13px;line-height:1.85;color:var(--ink2);border-left:2px solid var(--quan);padding-left:9px}
11534
+ .mp-qt{margin-top:10px;padding-top:9px;border-top:1px dashed var(--line)}
11535
+ .mp-qt-h{display:flex;gap:8px;align-items:baseline;font-size:12.5px}
11536
+ .mp-qt-h b{color:var(--ink);letter-spacing:.02em}
11537
+ .mp-qt-h span{color:var(--ink2)}
11538
+ .mp-qt-y{display:flex;gap:6px;align-items:center;margin-top:6px;font-size:12.5px;color:var(--ink2);flex-wrap:wrap}
11539
+ .mp-qt-y em{font-style:normal;color:var(--ink3)}
11540
+ .mp-qt-y b{font-family:var(--fx);font-size:15px;color:var(--lu);font-weight:600;line-height:1.1}
11541
+ .mp-qt-y b.first{color:var(--ji);border-bottom:2px solid var(--ji);padding-bottom:1px}
11542
+ .mp-qt-q{margin-top:6px;font-size:12.5px;line-height:1.8;color:var(--ink2);font-family:var(--fx)}
11543
+ .mp-qt-q span{display:block;font-size:11px;color:var(--ink3);font-family:var(--sans);margin-top:2px}
11544
+ @media print{.mp-cli{break-inside:avoid}}
11545
+ @media print{.mp-cli{break-inside:avoid}}
10244
11546
  .mp-quick-pre{margin:0;white-space:pre-wrap;word-break:break-word;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;line-height:1.9;color:var(--ink2)}
10245
11547
  .mp-al{margin:12px 16px;border:1px solid var(--line);border-radius:8px;background:var(--card);padding:12px 14px;font-family:system-ui,sans-serif}
10246
11548
  .mp-al-h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;border-bottom:1px solid var(--hair);padding-bottom:8px;margin-bottom:9px}
@@ -11067,7 +12369,7 @@ return { interpret, DIRECTIONS, DIRECTION_DEFAULT, BRIGHTNESS, flowOf, geocodeAd
11067
12369
  const num = (v) => (typeof v === 'number' && isFinite(v) ? v : 0);
11068
12370
  const dyScore = (d) => (d.luck ? num(d.luck.score) : 0);
11069
12371
 
11070
- const VMAX = 3.2;
12372
+ const VMAX = 4.2;
11071
12373
  const VMIN = -2.2;
11072
12374
  const startAge = num(r.dayun.startAge && r.dayun.startAge.years);
11073
12375
  const dyEnd = dyList.length
@@ -11083,7 +12385,7 @@ return { interpret, DIRECTIONS, DIRECTION_DEFAULT, BRIGHTNESS, flowOf, geocodeAd
11083
12385
  const pw = W - M.l - M.r;
11084
12386
  const ph = H - M.t - M.b;
11085
12387
  const X = (age) => M.l + ((age - a0) / span) * pw;
11086
- const Y = (v) => M.t + ph - ((v - VMIN) / (VMAX - VMIN)) * ph;
12388
+ const Y = (v) => M.t + ph - ((Math.max(VMIN, Math.min(VMAX, v)) - VMIN) / (VMAX - VMIN)) * ph;
11087
12389
 
11088
12390
  const BANDS = [
11089
12391
  { from: 1.2, to: VMAX, cls: 'b-good' },
@@ -11408,6 +12710,28 @@ return { interpret, DIRECTIONS, DIRECTION_DEFAULT, BRIGHTNESS, flowOf, geocodeAd
11408
12710
  <div class="pp-tl">喜 ${fr.yongshen.favor.map(el).join('')} 忌 ${fr.yongshen.avoid.map(el).join('')} <span class="pp-dim">${esc(fr.yongshen.method)}</span></div>
11409
12711
  <div class="pp-chips">${fr.yongshen.favorTenGods.map((t) => `<span class="pp-chip ok">${esc(t)}</span>`).join('')}${fr.yongshen.avoidTenGods ? fr.yongshen.avoidTenGods.map((t) => `<span class="pp-chip warn">${esc(t)}</span>`).join('') : ''}</div>
11410
12712
  <div class="pp-tl pp-dim">${esc(fr.yongshen.detail)}</div>` : '';
12713
+ const cli = r.climate || (fr.yongshen && fr.yongshen.climate) || null;
12714
+ const cliCard = cli ? (() => {
12715
+ const pct = Math.max(2, Math.min(98, Math.round(((Number(cli.temp) || 0) + 3) / 6 * 100)));
12716
+ const need = cli.need ? `<em>调候取</em><b>${esc(cli.need.stem + cli.need.element)}</b>` : '<em>气候平和</em>';
12717
+ const avoid = cli.need ? `<em>忌</em><b>${esc(cli.avoidElement)}</b>` : '';
12718
+ const ev = (cli.evidence || []).length ? `<em>依据</em><span>${esc(cli.evidence.join('、'))}</span>` : '';
12719
+ const pri = cli.priority === '调候优先' ? '<span class="mp-cli-p">调候优先</span>' : '<span class="mp-cli-p">扶抑为主</span>';
12720
+ const qt = r.frame && r.frame.yongshen && r.frame.yongshen.qt;
12721
+ const qtCard = qt ? `<div class="mp-qt">
12722
+ <div class="mp-qt-h"><b>穷通宝鉴</b><span>${esc(qt.label)}</span></div>
12723
+ <div class="mp-qt-y"><em>用神</em>${qt.yong.map((y, i) => `<b class="${i === 0 ? 'first' : ''}">${esc(y)}</b>`).join('')}<em>首取 ${esc(qt.primary)}</em></div>
12724
+ <div class="mp-qt-q" title="${esc(qt.quote)}">「${esc(qt.quote)}」<span>第 ${qt.chapter} 章${qt.note ? ' · ' + esc(qt.note) : ''}</span></div>
12725
+ </div>` : '';
12726
+ return `<section class="mp-cli" aria-label="寒暖燥湿">
12727
+ <div class="mp-cli-h"><b>寒暖燥湿</b><span class="mp-cli-k">${esc(cli.label || '')}</span>${pri}</div>
12728
+ <div class="mp-cli-bar" title="寒 ← → 热"><i style="left:${pct}%"></i></div>
12729
+ <div class="mp-cli-axis"><span>寒</span><span>平</span><span>热</span></div>
12730
+ <div class="mp-cli-row">${need}${avoid}${ev}</div>
12731
+ <div class="mp-cli-narr">${esc(cli.narration || '')}</div>
12732
+ ${qtCard}
12733
+ </section>`;
12734
+ })() : '';
11411
12735
  const gods = fr.godStats ? `<div class="pp-chips">${Object.entries(fr.godStats.groups).map(([k, v]) => `<span class="pp-chip">${k} ${v}</span>`).join('')}</div>` : '';
11412
12736
 
11413
12737
  const dy = r.dayun.list.map((d) => {
@@ -11433,6 +12757,7 @@ return { interpret, DIRECTIONS, DIRECTION_DEFAULT, BRIGHTNESS, flowOf, geocodeAd
11433
12757
  ${str}
11434
12758
  ${sect('格局', gj)}
11435
12759
  ${sect('用神', ys)}
12760
+ ${cliCard}
11436
12761
  ${sect('五行与十神', `<div class="pp-chips">${wx}</div>${gods}`)}
11437
12762
  ${sect('大运', `${pp.curveHTML(r)}<div class="pp-chips">${dy}</div>`)}
11438
12763
  ${ln ? sect('流年', ln) : ''}