guanwei 1.1.1
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/LICENSE +21 -0
- package/README.en.md +202 -0
- package/README.md +247 -0
- package/dist/assets/index-CsOD5rSo.js +102 -0
- package/dist/assets/index-CsOD5rSo.js.map +1 -0
- package/dist/assets/index-DQx62TUr.css +1 -0
- package/dist/favicon.svg +12 -0
- package/dist/index.html +15 -0
- package/eslint.config.js +28 -0
- package/index.html +25 -0
- package/package.json +96 -0
- package/postcss.config.js +10 -0
- package/public/favicon.svg +12 -0
- package/scripts/guanwei +245 -0
- package/scripts/install.sh +79 -0
- package/scripts/release.sh +42 -0
- package/scripts/setup.bat +36 -0
- package/scripts/setup.sh +123 -0
- package/server/src/data/db.json +12059 -0
- package/server/src/data/guanwei.db +0 -0
- package/server/src/data/lifeContext.ts +423 -0
- package/server/src/data/spreads.ts +255 -0
- package/server/src/data/tarotCards.ts +2353 -0
- package/server/src/index.ts +71 -0
- package/server/src/routes/ai.ts +376 -0
- package/server/src/routes/divine.ts +140 -0
- package/server/src/routes/hour.ts +40 -0
- package/server/src/routes/tarot.ts +129 -0
- package/server/src/routes/users.ts +140 -0
- package/server/src/services/chartBrief.ts +131 -0
- package/server/src/services/divineStore.ts +188 -0
- package/server/src/services/hourInference.ts +150 -0
- package/server/src/services/llmProvider.ts +181 -0
- package/server/src/services/promptBuilder.ts +327 -0
- package/server/src/services/relativesCheck.ts +139 -0
- package/server/src/services/sixRelatives.ts +70 -0
- package/server/src/services/skills.ts +116 -0
- package/server/src/types/index.ts +104 -0
- package/server/src/utils/semanticAnalyzer.ts +555 -0
- package/server/src/utils/tarotEngine.ts +849 -0
- package/server/tsconfig.json +18 -0
- package/shared/core/data/classics.ts +276 -0
- package/shared/core/data/courses.ts +211 -0
- package/shared/core/data/duanyu.ts +148 -0
- package/shared/core/data/ganzhi.ts +53 -0
- package/shared/core/data/gua64.ts +93 -0
- package/shared/core/data/liuren.ts +18 -0
- package/shared/core/data/liuyao.ts +73 -0
- package/shared/core/data/qimen.ts +27 -0
- package/shared/core/data/region-full.ts +3 -0
- package/shared/core/data/region.ts +310 -0
- package/shared/core/data/tarotSpreads.ts +78 -0
- package/shared/core/data/xiaoliuren.ts +18 -0
- package/shared/core/data/ziwei.ts +97 -0
- package/shared/core/data/zodiac.ts +20 -0
- package/shared/core/engine/astrology.ts +169 -0
- package/shared/core/engine/bazi.ts +306 -0
- package/shared/core/engine/calendar.ts +127 -0
- package/shared/core/engine/daily.ts +133 -0
- package/shared/core/engine/liuren.ts +86 -0
- package/shared/core/engine/liuyao.ts +93 -0
- package/shared/core/engine/meihua.ts +87 -0
- package/shared/core/engine/qimen.ts +78 -0
- package/shared/core/engine/questionFit.ts +94 -0
- package/shared/core/engine/tarot.ts +69 -0
- package/shared/core/engine/trueSolarTime.ts +86 -0
- package/shared/core/engine/xiaoliuren.ts +19 -0
- package/shared/core/engine/ziwei.ts +217 -0
- package/shared/core/engine/ziweiInterpret.ts +161 -0
- package/shared/core/types.ts +206 -0
- package/src/App.tsx +69 -0
- package/src/arts/registry.ts +31 -0
- package/src/assets/react.svg +1 -0
- package/src/components/Backdrop.tsx +27 -0
- package/src/components/BambooArt.tsx +41 -0
- package/src/components/CalendarInput.tsx +131 -0
- package/src/components/DateInput.tsx +103 -0
- package/src/components/Disclaimer.tsx +12 -0
- package/src/components/Empty.tsx +8 -0
- package/src/components/ErrorBoundary.tsx +38 -0
- package/src/components/HomeSideAnchor.tsx +62 -0
- package/src/components/InkVein.tsx +10 -0
- package/src/components/LifeEventsInput.tsx +47 -0
- package/src/components/LocationPicker.tsx +117 -0
- package/src/components/Motes.tsx +65 -0
- package/src/components/Navigation.tsx +80 -0
- package/src/components/ProfileForm.tsx +40 -0
- package/src/components/ProfilePicker.tsx +40 -0
- package/src/components/QuestionFields.tsx +47 -0
- package/src/components/ReportView.tsx +211 -0
- package/src/components/ResultCard.tsx +40 -0
- package/src/components/SealButton.tsx +18 -0
- package/src/components/SiteFooter.tsx +17 -0
- package/src/components/SiteNav.tsx +103 -0
- package/src/components/SongDialog.tsx +64 -0
- package/src/components/SongSearchSelect.tsx +81 -0
- package/src/components/SongSelect.tsx +61 -0
- package/src/components/StarField.tsx +119 -0
- package/src/components/TarotCard.tsx +129 -0
- package/src/components/TimeShichenInput.tsx +29 -0
- package/src/components/arts/AstrologyArt.tsx +141 -0
- package/src/components/arts/BaziArt.tsx +269 -0
- package/src/components/arts/LiurenArt.tsx +87 -0
- package/src/components/arts/LiuyaoArt.tsx +111 -0
- package/src/components/arts/MeihuaArt.tsx +105 -0
- package/src/components/arts/QimenArt.tsx +86 -0
- package/src/components/arts/TarotArt.tsx +110 -0
- package/src/components/arts/XiaoliurenArt.tsx +93 -0
- package/src/components/arts/ZiweiArt.tsx +296 -0
- package/src/data/arts.ts +84 -0
- package/src/data/lifeContext.ts +423 -0
- package/src/data/sample-report.json +146 -0
- package/src/data/shichen.ts +21 -0
- package/src/data/spreads.ts +255 -0
- package/src/data/tarotCards.ts +2353 -0
- package/src/hooks/useAIInterpret.ts +76 -0
- package/src/hooks/useDivine.ts +39 -0
- package/src/hooks/useTheme.ts +29 -0
- package/src/index.css +190 -0
- package/src/lib/utils.ts +6 -0
- package/src/main.tsx +12 -0
- package/src/pages/AboutPage.tsx +25 -0
- package/src/pages/AcademyPage.tsx +128 -0
- package/src/pages/AstrologyPage.tsx +33 -0
- package/src/pages/AuthPage.tsx +263 -0
- package/src/pages/BaZiPage.tsx +33 -0
- package/src/pages/ClassicsPage.tsx +120 -0
- package/src/pages/DemoPage.tsx +161 -0
- package/src/pages/HistoryPage.tsx +133 -0
- package/src/pages/Home.tsx +179 -0
- package/src/pages/HomePage.tsx +174 -0
- package/src/pages/ModulePage.tsx +320 -0
- package/src/pages/SpreadEditor.tsx +230 -0
- package/src/pages/SpreadEditorPage.tsx +105 -0
- package/src/pages/SpreadLibrary.tsx +199 -0
- package/src/pages/SpreadLibraryPage.tsx +17 -0
- package/src/pages/TarotPage.tsx +738 -0
- package/src/pages/ZiWeiPage.tsx +33 -0
- package/src/services/api.ts +342 -0
- package/src/stores/useDivinationStore.ts +22 -0
- package/src/styles/song.css +1066 -0
- package/src/styles/tokens.css +60 -0
- package/src/types/index.ts +104 -0
- package/src/utils/astrologyCalc.ts +61 -0
- package/src/utils/comboEngine.ts +134 -0
- package/src/utils/dst.ts +24 -0
- package/src/utils/panTone.ts +206 -0
- package/src/utils/recordStore.ts +60 -0
- package/src/utils/semanticAnalyzer.ts +555 -0
- package/src/utils/spreadStorage.ts +32 -0
- package/src/utils/storage.ts +27 -0
- package/src/utils/tarotEngine.ts +849 -0
- package/src/utils/userStore.ts +234 -0
- package/src/vite-env.d.ts +1 -0
- package/tailwind.config.js +52 -0
- package/tsconfig.json +40 -0
- package/vite.config.ts +34 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
// 断语库 v1(种子版):结构化「原文 → 断语要点 → 适用因子」条目
|
|
2
|
+
// 定位:AI 解读的引证源(排盘 → 断语匹配 → 解读引用「《书·篇》:原文」),未来接考时校准
|
|
3
|
+
// 收录规范 / 版权核查 / 处理清单:见 docs/古籍参考库收录规范.md
|
|
4
|
+
// ⚠️ 全部条目 status: 'seed'(待逐字校核),未 reviewed 前不得注入 AI prompt
|
|
5
|
+
// 来源 URL 为 2026-08-20 检索核实的公有领域在线底本
|
|
6
|
+
|
|
7
|
+
export type DuanyuStatus = 'seed' | 'reviewed';
|
|
8
|
+
|
|
9
|
+
export interface DuanyuEntry {
|
|
10
|
+
id: string; // 稳定 ID,如 'yhpz-jishan-01'
|
|
11
|
+
bookId: string; // 关联 shared/core/data/classics.ts 的 ClassicBook.id(民间口诀为 '')
|
|
12
|
+
art: string; // 术数 id(与 shared/core/data/arts.ts 一致)
|
|
13
|
+
chapter: string; // 卷/篇(引证出处)
|
|
14
|
+
original: string; // 原文摘录(公有领域古籍原文,逐字为准)
|
|
15
|
+
duanyu: string; // 断语要点(白话断法,供 AI 引用时释义)
|
|
16
|
+
factors?: string[]; // 适用因子(断语生效条件,用于消冲突)
|
|
17
|
+
tags: string[]; // 主题标签
|
|
18
|
+
sources: string[]; // 校对底本来源(URL 或版本说明)
|
|
19
|
+
note?: string; // 备注:出处争议 / 多版本差异 / 待校核点
|
|
20
|
+
status: DuanyuStatus;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export const DUANYU: DuanyuEntry[] = [
|
|
24
|
+
// ─── 八字 bazi ───
|
|
25
|
+
{
|
|
26
|
+
id: 'yhpz-jishan-01', bookId: 'yuanhai-ziping', art: 'bazi', chapter: '继善篇',
|
|
27
|
+
original: '人禀天地,命属阴阳。生居覆载之内,尽在五行之中。欲知贵贱,先观月令乃提纲。',
|
|
28
|
+
duanyu: '论命首重月令:先以月支定旺衰提纲,再论格局贵贱。月令为子平断命第一步。',
|
|
29
|
+
factors: ['月令', '提纲'], tags: ['格局', '月令', '旺衰'],
|
|
30
|
+
sources: ['https://ctext.org/wiki.pl?if=gb&chapter=524726'], status: 'seed',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
id: 'dts-tiandao-01', bookId: 'ditian-sui', art: 'bazi', chapter: '天道',
|
|
34
|
+
original: '欲识三元万法宗,先观帝载与神功。',
|
|
35
|
+
duanyu: '断命先察三元(天干/地支/人元藏干)之体用与造化之枢机,体用立而后吉凶可论。',
|
|
36
|
+
factors: ['三元', '体用'], tags: ['体用', '三元'],
|
|
37
|
+
sources: ['https://zh.wikisource.org/zh-hant/%E6%BB%B4%E5%A4%A9%E9%AB%93%E9%97%A1%E5%BE%AE'], status: 'seed',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
id: 'dts-tiangan-01', bookId: 'ditian-sui', art: 'bazi', chapter: '天干(甲木)',
|
|
41
|
+
original: '甲木参天,脱胎要火。春不容金,秋不容土。火炽乘龙,水宕骑虎。地润天和,植立千古。',
|
|
42
|
+
duanyu: '甲木调候总诀:春木需火暖,秋木忌土埋;火旺需湿土(辰)调济,水泛需燥土(寅)制衡。',
|
|
43
|
+
factors: ['调候', '生克制化'], tags: ['天干', '调候'],
|
|
44
|
+
sources: ['https://zh.wikisource.org/zh-hans/%E6%BB%B4%E5%A4%A9%E9%AB%93/02'],
|
|
45
|
+
note: '此诀《穷通宝鉴》亦引(转引);classics.ts 已修正:滴天髓收本源段,穷通宝鉴段注明转引(处理清单 #2 ✅)。',
|
|
46
|
+
status: 'seed',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
id: 'zpzq-yongshen-01', bookId: 'ziping-zhenquan', art: 'bazi', chapter: '论用神',
|
|
50
|
+
original: '八字用神,专求月令。以日干配月令地支,而生克不同,格局分焉。',
|
|
51
|
+
duanyu: '格局派核心:用神专取月令,日干与月支生克关系定格局。',
|
|
52
|
+
factors: ['月令', '格局'], tags: ['用神', '格局'],
|
|
53
|
+
sources: ['(通行本整理;权威在线底本待补)'],
|
|
54
|
+
note: '待补维基文库《子平真诠》底本链接后校核。', status: 'seed',
|
|
55
|
+
},
|
|
56
|
+
// ─── 六爻 liuyao ───
|
|
57
|
+
{
|
|
58
|
+
id: 'zsby-yongshen-01', bookId: 'zengshan-buyi', art: 'liuyao', chapter: '用神章',
|
|
59
|
+
original: '用神者,卦之体也。凡占必先寻用神,用神不现,须寻伏神。',
|
|
60
|
+
duanyu: '六爻断卦第一步取用神:按所问之事定六亲取用;用神不上卦则寻伏神。',
|
|
61
|
+
factors: ['用神', '伏神'], tags: ['用神', '六亲'],
|
|
62
|
+
sources: ['https://www.shidianguji.com/zh/book/XYXZSBY/chapter/1lzxsn553hcfm'], status: 'seed',
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
id: 'bszz-yongshen-01', bookId: 'bushe-zhengzong', art: 'liuyao', chapter: '启蒙节要',
|
|
66
|
+
original: '凡占必以用神为主,有根有气则吉,无根无气则凶。',
|
|
67
|
+
duanyu: '用神有根(得月日生扶)有气(不遭刑冲克害)为吉,反之则凶。',
|
|
68
|
+
factors: ['旺衰', '生扶'], tags: ['用神', '旺衰'],
|
|
69
|
+
sources: ['https://ctext.org/wiki.pl?if=gb&chapter=801184'], status: 'seed',
|
|
70
|
+
},
|
|
71
|
+
// ─── 梅花易数 meihua ───
|
|
72
|
+
{
|
|
73
|
+
id: 'mhys-tiyong-01', bookId: 'meihua-yishu', art: 'meihua', chapter: '卷二 · 体用论',
|
|
74
|
+
original: '体克用,诸事吉;用克体,诸事凶。体生用,有进益之喜;用生体,有耗失之忧。体用比和,谋为皆成。',
|
|
75
|
+
duanyu: '梅花体用断诀:体为己、用为事——体克用事可成,用克体事有阻;体生用有耗失,用生体有进益;比和则诸事顺遂。',
|
|
76
|
+
factors: ['体用', '生克'], tags: ['体用', '生克'],
|
|
77
|
+
sources: ['https://ctext.org/wiki.pl?if=gb&chapter=475043', 'https://zh.wikisource.org/zh-hans/%E6%A2%85%E8%8A%B1%E6%98%93%E6%95%B8/%E5%8D%B7%E4%BA%8C'],
|
|
78
|
+
note: '通行本断诀措辞,需按 ctext 卷二逐字校核。', status: 'seed',
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
id: 'mhys-budong-01', bookId: 'meihua-yishu', art: 'meihua', chapter: '观梅占',
|
|
82
|
+
original: '不动不占,不因事不占。',
|
|
83
|
+
duanyu: '起占原则:无异常变动不起卦、无事由不起卦,心动则应机而占。',
|
|
84
|
+
factors: ['起卦原则'], tags: ['起卦', '原则'],
|
|
85
|
+
sources: ['https://ctext.org/wiki.pl?if=gb&chapter=475043'], status: 'seed',
|
|
86
|
+
},
|
|
87
|
+
// ─── 奇门遁甲 qimen ───
|
|
88
|
+
{
|
|
89
|
+
id: 'ypdsw-zonggang-01', bookId: 'yanpo-diaosou', art: 'qimen', chapter: '总纲',
|
|
90
|
+
original: '阴阳顺逆妙难穷,二至还乡一九宫。若能了达阴阳理,天地都来一掌中。',
|
|
91
|
+
duanyu: '奇门总纲:冬至后阳遁顺布(一宫起)、夏至后阴遁逆布(九宫起),阴阳二遁为起局之枢。',
|
|
92
|
+
factors: ['阴阳遁', '起局'], tags: ['阴阳遁', '九宫'],
|
|
93
|
+
sources: ['https://zh.wikisource.org/wiki/%E7%85%99%E6%B3%A2%E9%87%A3%E5%8F%9F%E6%AD%8C'], status: 'seed',
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
id: 'ypdsw-sanqi-01', bookId: 'yanpo-diaosou', art: 'qimen', chapter: '三奇六仪',
|
|
97
|
+
original: '六甲元号六仪名,三奇即是乙丙丁。阳遁顺仪奇逆布,阴遁逆仪奇顺行。',
|
|
98
|
+
duanyu: '三奇六仪布局:乙丙丁为三奇,六甲遁于六仪;阳遁仪顺奇逆、阴遁反之——局中排布的根本口诀。',
|
|
99
|
+
factors: ['三奇六仪', '阴阳遁'], tags: ['三奇', '六仪', '布局'],
|
|
100
|
+
sources: ['https://zh.wikisource.org/wiki/%E7%85%99%E6%B3%A2%E9%87%A3%E5%8F%9F%E6%AD%8C'],
|
|
101
|
+
note: '待按维基文库全文逐字校核。', status: 'seed',
|
|
102
|
+
},
|
|
103
|
+
// ─── 大六壬 liuren ───
|
|
104
|
+
{
|
|
105
|
+
id: 'lrdq-bifa-01', bookId: 'liuren-daquan', art: 'liuren', chapter: '卷九 · 毕法赋',
|
|
106
|
+
original: '前后引从升迁吉,首尾相见始终宜。',
|
|
107
|
+
duanyu: '毕法之一:三传中初末传夹拱中传(引从)主升迁之喜;首尾同气则事有始终。',
|
|
108
|
+
factors: ['三传', '引从'], tags: ['毕法赋', '三传'],
|
|
109
|
+
sources: ['https://www.shidianguji.com/zh/book/SK1599/chapter/1k1lql7vm29te'], status: 'seed',
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
id: 'lrdq-kezhuan-01', bookId: 'liuren-daquan', art: 'liuren', chapter: '起课',
|
|
113
|
+
original: '课传既定,先视四课之生克,次观三传之发用。天地盘加临,日月星为纬。',
|
|
114
|
+
duanyu: '断课次序:四课定生克、三传察发用,天地盘加临为纲。',
|
|
115
|
+
factors: ['四课', '三传'], tags: ['四课', '三传', '断课'],
|
|
116
|
+
sources: ['https://www.shidianguji.com/zh/book/SK1599/chapter/1k1lql7vm29te'], status: 'seed',
|
|
117
|
+
},
|
|
118
|
+
// ─── 紫微斗数 ziwei ───
|
|
119
|
+
{
|
|
120
|
+
id: 'zwqs-taiwei-01', bookId: 'ziwei-quanshu', art: 'ziwei', chapter: '卷一 · 太微赋第一',
|
|
121
|
+
original: '斗数至玄至微,理旨难明,虽设问于百篇之中,犹有言而未尽。其星分布于十二垣,数定乎三十六位,入庙为奇,失度为虚。星临庙旺,再观生克之机;命坐强宫,细察制化之理。',
|
|
122
|
+
duanyu: '斗数断命以庙旺落陷与生克制化为枢:星入庙为奇、失度为虚;星临庙旺之位再观生克之机,命坐强宫细察制化之理。',
|
|
123
|
+
factors: ['庙旺落陷', '星曜生克'], tags: ['太微赋', '庙陷', '生克'],
|
|
124
|
+
sources: ['https://www.shidianguji.com/mid-page/7356346219641356314', 'https://m.gushiwen.cn/guwen/bookv_46653FD803893E4F4F9BB8FD2D9C9B7F.aspx'],
|
|
125
|
+
note: '2026-08-20 已按《紫微斗数全书》卷一·太微赋第一原文替换意译段(classics.ts 同步修正);断句待与刻本终校。', status: 'seed',
|
|
126
|
+
},
|
|
127
|
+
// ─── 小六壬 xiaoliuren(民间口诀,无成书古籍)───
|
|
128
|
+
{
|
|
129
|
+
id: 'xln-koujue-01', bookId: '', art: 'xiaoliuren', chapter: '(民间掌诀口诀,无成书古籍)',
|
|
130
|
+
original: '大安身不动,留连事难成;速喜人便至,赤口官事凶;小吉人来喜,空亡事不长。',
|
|
131
|
+
duanyu: '小六壬六神断语总诀:大安主安顺、留连主迟滞、速喜主喜讯、赤口主口舌官非、小吉主吉庆、空亡主事不成。',
|
|
132
|
+
factors: ['六神', '掌诀'], tags: ['六神', '口诀'],
|
|
133
|
+
sources: ['(民间流传口诀,多版本并存)'],
|
|
134
|
+
note: '小六壬无传世成书古籍,属民间掌诀;多版本措辞有差异,需对照版本并注明采录来源。', status: 'seed',
|
|
135
|
+
},
|
|
136
|
+
// ─── 周易(卦术总纲)───
|
|
137
|
+
{
|
|
138
|
+
id: 'zhouyi-xici-01', bookId: 'zhouyi', art: 'meihua', chapter: '系辞上传',
|
|
139
|
+
original: '易与天地准,故能弥纶天地之道。仰以观于天文,俯以察于地理,是故知幽明之故。',
|
|
140
|
+
duanyu: '易学认识论总纲:卦象法天地,观天文察地理而知幽明——一切卦术「观物取象」的理据。',
|
|
141
|
+
factors: ['观物取象'], tags: ['系辞', '取象'],
|
|
142
|
+
sources: ['https://ctext.org/book-of-changes/zh'], status: 'seed',
|
|
143
|
+
},
|
|
144
|
+
];
|
|
145
|
+
|
|
146
|
+
export const duanyuByArt = (art: string): DuanyuEntry[] => DUANYU.filter(d => d.art === art);
|
|
147
|
+
|
|
148
|
+
export const duanyuReviewed = (): DuanyuEntry[] => DUANYU.filter(d => d.status === 'reviewed');
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// 干支 / 五行 / 纳音 / 六十甲子(移植参考项目 data.js)
|
|
2
|
+
|
|
3
|
+
export const GAN = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸'] as const;
|
|
4
|
+
export const ZHI = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥'] as const;
|
|
5
|
+
|
|
6
|
+
export const WUXING: Record<string, string> = {
|
|
7
|
+
甲: '木', 乙: '木', 丙: '火', 丁: '火', 戊: '土', 己: '土', 庚: '金', 辛: '金', 壬: '水', 癸: '水',
|
|
8
|
+
子: '水', 丑: '土', 寅: '木', 卯: '木', 辰: '土', 巳: '火', 午: '火', 未: '土', 申: '金', 酉: '金', 戌: '土', 亥: '水',
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export const SHISHEN_MAP: Record<string, string> = {
|
|
12
|
+
比肩: '同类', 劫财: '同类', 食神: '我生', 伤官: '我生',
|
|
13
|
+
偏财: '我克', 正财: '我克', 七杀: '克我', 正官: '克我', 偏印: '生我', 正印: '生我',
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export const NAYIN = [
|
|
17
|
+
'海中金', '炉中火', '大林木', '路旁土', '剑锋金', '山头火', '涧下水', '城头土',
|
|
18
|
+
'白蜡金', '杨柳木', '泉中水', '屋上土', '霹雳火', '松柏木', '长流水', '沙中金',
|
|
19
|
+
'山下火', '平地木', '壁上土', '金箔金', '覆灯火', '天河水', '大驿土', '钗钏金',
|
|
20
|
+
'桑柘木', '大溪水', '沙中土', '天上火', '石榴木', '大海水',
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
// 五行局(纳音 → 局)
|
|
24
|
+
export const NAYIN_JU: Record<string, string> = {
|
|
25
|
+
海中金: '金四局', 剑锋金: '金四局', 白蜡金: '金四局', 沙中金: '金四局', 金箔金: '金四局', 钗钏金: '金四局',
|
|
26
|
+
炉中火: '火六局', 山头火: '火六局', 霹雳火: '火六局', 山下火: '火六局', 覆灯火: '火六局', 天上火: '火六局',
|
|
27
|
+
大林木: '木三局', 杨柳木: '木三局', 松柏木: '木三局', 平地木: '木三局', 桑柘木: '木三局', 石榴木: '木三局',
|
|
28
|
+
路旁土: '土五局', 城头土: '土五局', 屋上土: '土五局', 壁上土: '土五局', 大驿土: '土五局', 沙中土: '土五局',
|
|
29
|
+
涧下水: '水二局', 泉中水: '水二局', 长流水: '水二局', 天河水: '水二局', 大溪水: '水二局', 大海水: '水二局',
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export const mod = (a: number, n: number) => ((a % n) + n) % n;
|
|
33
|
+
|
|
34
|
+
export function jiaziIndex(year: number): number {
|
|
35
|
+
return ((year - 4) % 60 + 60) % 60;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function nayinOf(year: number): string {
|
|
39
|
+
return NAYIN[Math.floor(jiaziIndex(year) / 2) % 30];
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function ganzhiOfYear(year: number): string {
|
|
43
|
+
const i = jiaziIndex(year);
|
|
44
|
+
return GAN[i % 10] + ZHI[i % 12];
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// 60 甲子序(0-59),用于紫微五行局
|
|
48
|
+
export function ganZhiIndex(gz: string): number {
|
|
49
|
+
const g = GAN.indexOf(gz[0] as any);
|
|
50
|
+
const z = ZHI.indexOf(gz[1] as any);
|
|
51
|
+
for (let k = 0; k < 6; k++) if (mod(g + 10 * k, 12) === z) return g + 10 * k;
|
|
52
|
+
return g;
|
|
53
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
// 八卦与六十四卦(移植参考项目 data.js GUA64)
|
|
2
|
+
|
|
3
|
+
export const BAGUA: Record<number, { name: string; symbol: string; nature: string; wx: string }> = {
|
|
4
|
+
1: { name: '乾', symbol: '☰', nature: '天', wx: '金' },
|
|
5
|
+
2: { name: '兑', symbol: '☱', nature: '泽', wx: '金' },
|
|
6
|
+
3: { name: '离', symbol: '☲', nature: '火', wx: '火' },
|
|
7
|
+
4: { name: '震', symbol: '☳', nature: '雷', wx: '木' },
|
|
8
|
+
5: { name: '巽', symbol: '☴', nature: '风', wx: '木' },
|
|
9
|
+
6: { name: '坎', symbol: '☵', nature: '水', wx: '水' },
|
|
10
|
+
7: { name: '艮', symbol: '☶', nature: '山', wx: '土' },
|
|
11
|
+
8: { name: '坤', symbol: '☷', nature: '地', wx: '土' },
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
// key = 上卦先天数*10 + 下卦先天数
|
|
15
|
+
export interface GuaEntry {
|
|
16
|
+
up: number; down: number;
|
|
17
|
+
name: string; ci: string; xiang: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const RAW: [number, number, string, string, string][] = [
|
|
21
|
+
[1, 1, '乾为天', '元亨利贞。天行健,君子以自强不息。', '刚健中正,自强之象'],
|
|
22
|
+
[8, 8, '坤为地', '元亨,利牝马之贞。地势坤,君子以厚德载物。', '柔顺包容,厚德之象'],
|
|
23
|
+
[6, 4, '水雷屯', '元亨利贞,勿用有攸往,利建侯。', '始生维艰,草创之象'],
|
|
24
|
+
[7, 6, '山水蒙', '亨。匪我求童蒙,童蒙求我。', '蒙昧待启,求教之象'],
|
|
25
|
+
[6, 1, '水天需', '有孚,光亨,贞吉,利涉大川。', '云上于天,待时之象'],
|
|
26
|
+
[1, 6, '天水讼', '有孚窒惕,中吉,终凶。利见大人,不利涉大川。', '争讼之象,和为贵'],
|
|
27
|
+
[6, 8, '地水师', '贞,丈人吉,无咎。', '行险而顺,统众之象'],
|
|
28
|
+
[8, 6, '水地比', '吉。原筮,元永贞,无咎。', '亲附之象,众心所归'],
|
|
29
|
+
[5, 1, '风天小畜', '亨。密云不雨,自我西郊。', '小有蓄积,待时而动'],
|
|
30
|
+
[1, 2, '天泽履', '履虎尾,不咥人,亨。', '谨慎履险,如履薄冰'],
|
|
31
|
+
[8, 1, '地天泰', '小往大来,吉亨。天地交而万物通。', '通泰之象,上下交心'],
|
|
32
|
+
[1, 8, '天地否', '否之匪人,不利君子贞,大往小来。', '闭塞不通,守正待时'],
|
|
33
|
+
[1, 3, '天火同人', '同人于野,亨。利涉大川,利君子贞。', '和同于人,同心之象'],
|
|
34
|
+
[3, 1, '火天大有', '元亨。柔得尊位而上下应之。', '盛大丰有,光明普照'],
|
|
35
|
+
[8, 7, '地山谦', '亨,君子有终。天道亏盈而益谦。', '谦逊之象,卑以自牧'],
|
|
36
|
+
[4, 8, '雷地豫', '利建侯行师。雷出地奋。', '和乐之象,顺动而乐'],
|
|
37
|
+
[2, 4, '泽雷随', '元亨利贞,无咎。君子以向晦入宴息。', '随顺之象,随时而动'],
|
|
38
|
+
[7, 5, '山风蛊', '元亨,利涉大川。先甲三日,后甲三日。', '整饬之象,革故鼎新'],
|
|
39
|
+
[8, 2, '地泽临', '元亨利贞。至于八月有凶。', '临下之象,以上临下'],
|
|
40
|
+
[5, 8, '风地观', '盥而不荐,有孚颙若。', '观仰之象,静观其变'],
|
|
41
|
+
[3, 4, '火雷噬嗑', '亨。利用狱。雷电合而章。', '咬合之象,明罚敕法'],
|
|
42
|
+
[7, 3, '山火贲', '亨。小利有攸往。', '文饰之象,饰外修内'],
|
|
43
|
+
[7, 8, '山地剥', '不利有攸往。顺而止之。', '剥落之象,顺势而止'],
|
|
44
|
+
[8, 4, '地雷复', '亨。出入无疾,朋来无咎。', '复归之象,一阳来复'],
|
|
45
|
+
[1, 4, '天雷无妄', '元亨利贞。其匪正有眚,不利有攸往。', '无妄之象,守正勿妄'],
|
|
46
|
+
[7, 1, '山天大畜', '利贞。不家食吉,利涉大川。', '大蓄之象,厚积薄发'],
|
|
47
|
+
[7, 4, '山雷颐', '贞吉。观颐,自求口实。', '颐养之象,自养养人'],
|
|
48
|
+
[2, 5, '泽风大过', '栋桡,利有攸往,亨。', '大过之象,独立不惧'],
|
|
49
|
+
[6, 6, '坎为水', '习坎,有孚,维心亨,行有尚。', '重险之象,行险守正'],
|
|
50
|
+
[3, 3, '离为火', '利贞,亨。畜牝牛吉。', '附丽之象,光明相继'],
|
|
51
|
+
[2, 7, '泽山咸', '亨,利贞,取女吉。', '感应之象,以虚受人'],
|
|
52
|
+
[4, 5, '雷风恒', '亨,无咎,贞吉,利有攸往。', '恒久之象,守常不易'],
|
|
53
|
+
[1, 7, '天山遁', '亨,小利贞。', '退避之象,远小人之害'],
|
|
54
|
+
[4, 1, '雷天大壮', '利贞。大者壮也。', '强盛之象,壮而守正'],
|
|
55
|
+
[3, 8, '火地晋', '康侯用锡马蕃庶,昼日三接。', '晋升之象,光明上进'],
|
|
56
|
+
[8, 3, '地火明夷', '利艰贞。明入地中。', '光明受伤,晦而守正'],
|
|
57
|
+
[5, 3, '风火家人', '利女贞。', '一家之象,各正其位'],
|
|
58
|
+
[3, 2, '火泽睽', '小事吉。二女同居,其志不同行。', '乖离之象,求同存异'],
|
|
59
|
+
[6, 7, '水山蹇', '利西南,不利东北。利见大人,贞吉。', '艰难之象,见险知止'],
|
|
60
|
+
[4, 6, '雷水解', '利西南。无所往,其来复吉。', '解除之象,雷雨作而百果生'],
|
|
61
|
+
[7, 2, '山泽损', '有孚,元吉,无咎,可贞,利有攸往。', '减损之象,损下益上'],
|
|
62
|
+
[5, 4, '风雷益', '利有攸往,利涉大川。', '增益之象,损上益下'],
|
|
63
|
+
[2, 1, '泽天夬', '扬于王庭,孚号有厉。告自邑,不利即戎。', '决断之象,刚决柔也'],
|
|
64
|
+
[1, 5, '天风姤', '女壮,勿用取女。', '相遇之象,不期而会'],
|
|
65
|
+
[2, 8, '泽地萃', '亨。王假有庙,利见大人,亨,利贞。', '聚集之象,聚众守正'],
|
|
66
|
+
[8, 5, '地风升', '元亨,用见大人,勿恤,南征吉。', '上升之象,积小成高'],
|
|
67
|
+
[2, 6, '泽水困', '亨,贞,大人吉,无咎,有言不信。', '困顿之象,处困守正'],
|
|
68
|
+
[6, 5, '水风井', '改邑不改井,无丧无得,往来井井。', '井养之象,修己养人'],
|
|
69
|
+
[2, 3, '泽火革', '己日乃孚,元亨利贞,悔亡。', '变革之象,顺天应人'],
|
|
70
|
+
[3, 5, '火风鼎', '元吉,亨。', '鼎新之象,正位凝命'],
|
|
71
|
+
[4, 4, '震为雷', '亨。震来虩虩,笑言哑哑。', '震动之象,恐惧修省'],
|
|
72
|
+
[7, 7, '艮为山', '艮其背,不获其身;行其庭,不见其人。', '静止之象,安止其所'],
|
|
73
|
+
[5, 7, '风山渐', '女归吉,利贞。', '渐进之象,循序而行'],
|
|
74
|
+
[4, 2, '雷泽归妹', '征凶,无攸利。', '归妹之象,不可妄动'],
|
|
75
|
+
[4, 3, '雷火丰', '亨,王假之,勿忧,宜日中。', '丰盛之象,盛极当惜'],
|
|
76
|
+
[3, 7, '火山旅', '小亨,旅贞吉。', '行旅之象,柔顺处外'],
|
|
77
|
+
[5, 5, '巽为风', '小亨,利有攸往,利见大人。', '顺入之象,谦逊申命'],
|
|
78
|
+
[2, 2, '兑为泽', '亨,利贞。', '喜悦之象,朋友讲习'],
|
|
79
|
+
[5, 6, '风水涣', '亨。王假有庙,利涉大川,利贞。', '涣散之象,涣而复合'],
|
|
80
|
+
[6, 2, '水泽节', '亨。苦节不可贞。', '节制之象,节以制度'],
|
|
81
|
+
[5, 2, '风泽中孚', '豚鱼吉,利涉大川,利贞。', '诚信之象,信及豚鱼'],
|
|
82
|
+
[4, 7, '雷山小过', '亨,利贞。可小事,不可大事。', '小过之象,宜下不宜上'],
|
|
83
|
+
[6, 3, '水火既济', '亨小,利贞。初吉终乱。', '既济之象,守成防乱'],
|
|
84
|
+
[3, 6, '火水未济', '亨。小狐汔济,濡其尾,无攸利。', '未济之象,事未成而慎行'],
|
|
85
|
+
];
|
|
86
|
+
|
|
87
|
+
export const GUA64: GuaEntry[] = RAW.map(([up, down, name, ci, xiang]) => ({ up, down, name, ci, xiang }));
|
|
88
|
+
|
|
89
|
+
export const GUA_LOOKUP: Record<number, GuaEntry> = {};
|
|
90
|
+
GUA64.forEach(g => { GUA_LOOKUP[g.up * 10 + g.down] = g; });
|
|
91
|
+
|
|
92
|
+
export const GUA64_BY_NAME: Record<string, GuaEntry> = {};
|
|
93
|
+
GUA64.forEach(g => { GUA64_BY_NAME[g.name] = g; });
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// 大六壬数据(移植参考项目 data.js)
|
|
2
|
+
|
|
3
|
+
export const LR_JIANGS: [string, string][] = [
|
|
4
|
+
['登明', '亥'], ['河魁', '戌'], ['从魁', '酉'], ['传送', '申'], ['小吉', '未'], ['胜光', '午'],
|
|
5
|
+
['太乙', '巳'], ['天罡', '辰'], ['太冲', '卯'], ['功曹', '寅'], ['大吉', '丑'], ['神后', '子'],
|
|
6
|
+
];
|
|
7
|
+
|
|
8
|
+
// 月将随太阳过宫(中气定将,日期为近似)
|
|
9
|
+
export const LR_JIANG_SUN: [string, number, number, string][] = [
|
|
10
|
+
['雨水', 2, 19, '亥'], ['春分', 3, 21, '戌'], ['谷雨', 4, 20, '酉'], ['小满', 5, 21, '申'],
|
|
11
|
+
['夏至', 6, 21, '未'], ['大暑', 7, 23, '午'], ['处暑', 8, 23, '巳'], ['秋分', 9, 23, '辰'],
|
|
12
|
+
['霜降', 10, 23, '卯'], ['小雪', 11, 22, '寅'], ['冬至', 12, 22, '丑'], ['大寒', 1, 20, '子'],
|
|
13
|
+
];
|
|
14
|
+
|
|
15
|
+
export const LR_TIANJIANG = ['贵人', '腾蛇', '朱雀', '六合', '勾陈', '青龙', '天空', '白虎', '太常', '玄武', '太阴', '天后'];
|
|
16
|
+
export const LR_GANJI: Record<string, string> = { 甲: '寅', 乙: '辰', 丙: '巳', 丁: '未', 戊: '巳', 己: '未', 庚: '申', 辛: '戌', 壬: '亥', 癸: '丑' };
|
|
17
|
+
export const LR_JIANG_SYMBOL: Record<string, string> = { 亥: '猪', 戌: '犬', 酉: '鸡', 申: '猴', 未: '羊', 午: '马', 巳: '蛇', 辰: '龙', 卯: '兔', 寅: '虎', 丑: '牛', 子: '鼠' };
|
|
18
|
+
export const LR_JIANG_WX: Record<string, string> = { 亥: '水', 戌: '土', 酉: '金', 申: '金', 未: '土', 午: '火', 巳: '火', 辰: '土', 卯: '木', 寅: '木', 丑: '土', 子: '水' };
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// 六爻纳甲数据(补齐层 2026-08-20):八宫 64 卦宫属世位 + 纳甲干支 + 六亲六神
|
|
2
|
+
// 表源:通行纳甲筮法(《卜筮正宗》《增删卜易》系统)
|
|
3
|
+
|
|
4
|
+
// 64 卦 → 所属宫 + 世位(shi: 1-6 爻位;'游'=游魂(四爻);'归'=归魂(三爻))
|
|
5
|
+
export const GONG_SH: Record<string, { gong: string; shi: number }> = {
|
|
6
|
+
// 乾宫(金)
|
|
7
|
+
'乾为天': { gong: '乾', shi: 6 }, '天风姤': { gong: '乾', shi: 1 }, '天山遁': { gong: '乾', shi: 2 }, '天地否': { gong: '乾', shi: 3 },
|
|
8
|
+
'风地观': { gong: '乾', shi: 4 }, '山地剥': { gong: '乾', shi: 5 }, '火地晋': { gong: '乾', shi: 4 }, '火天大有': { gong: '乾', shi: 3 },
|
|
9
|
+
// 坎宫(水)
|
|
10
|
+
'坎为水': { gong: '坎', shi: 6 }, '水泽节': { gong: '坎', shi: 1 }, '水雷屯': { gong: '坎', shi: 2 }, '水火既济': { gong: '坎', shi: 3 },
|
|
11
|
+
'泽火革': { gong: '坎', shi: 4 }, '雷火丰': { gong: '坎', shi: 5 }, '地火明夷': { gong: '坎', shi: 4 }, '地水师': { gong: '坎', shi: 3 },
|
|
12
|
+
// 艮宫(土)
|
|
13
|
+
'艮为山': { gong: '艮', shi: 6 }, '山火贲': { gong: '艮', shi: 1 }, '山天大畜': { gong: '艮', shi: 2 }, '山泽损': { gong: '艮', shi: 3 },
|
|
14
|
+
'火泽睽': { gong: '艮', shi: 4 }, '天泽履': { gong: '艮', shi: 5 }, '风泽中孚': { gong: '艮', shi: 4 }, '风山渐': { gong: '艮', shi: 3 },
|
|
15
|
+
// 震宫(木)
|
|
16
|
+
'震为雷': { gong: '震', shi: 6 }, '雷地豫': { gong: '震', shi: 1 }, '雷水解': { gong: '震', shi: 2 }, '雷风恒': { gong: '震', shi: 3 },
|
|
17
|
+
'地风升': { gong: '震', shi: 4 }, '水风井': { gong: '震', shi: 5 }, '泽风大过': { gong: '震', shi: 4 }, '泽雷随': { gong: '震', shi: 3 },
|
|
18
|
+
// 巽宫(木)
|
|
19
|
+
'巽为风': { gong: '巽', shi: 6 }, '风天小畜': { gong: '巽', shi: 1 }, '风火家人': { gong: '巽', shi: 2 }, '风雷益': { gong: '巽', shi: 3 },
|
|
20
|
+
'天雷无妄': { gong: '巽', shi: 4 }, '火雷噬嗑': { gong: '巽', shi: 5 }, '山雷颐': { gong: '巽', shi: 4 }, '山风蛊': { gong: '巽', shi: 3 },
|
|
21
|
+
// 离宫(火)
|
|
22
|
+
'离为火': { gong: '离', shi: 6 }, '火山旅': { gong: '离', shi: 1 }, '火风鼎': { gong: '离', shi: 2 }, '火水未济': { gong: '离', shi: 3 },
|
|
23
|
+
'山水蒙': { gong: '离', shi: 4 }, '风水涣': { gong: '离', shi: 5 }, '天水讼': { gong: '离', shi: 4 }, '天火同人': { gong: '离', shi: 3 },
|
|
24
|
+
// 坤宫(土)
|
|
25
|
+
'坤为地': { gong: '坤', shi: 6 }, '地雷复': { gong: '坤', shi: 1 }, '地泽临': { gong: '坤', shi: 2 }, '地天泰': { gong: '坤', shi: 3 },
|
|
26
|
+
'雷天大壮': { gong: '坤', shi: 4 }, '泽天夬': { gong: '坤', shi: 5 }, '水天需': { gong: '坤', shi: 4 }, '水地比': { gong: '坤', shi: 3 },
|
|
27
|
+
// 兑宫(金)
|
|
28
|
+
'兑为泽': { gong: '兑', shi: 6 }, '泽水困': { gong: '兑', shi: 1 }, '泽地萃': { gong: '兑', shi: 2 }, '泽山咸': { gong: '兑', shi: 3 },
|
|
29
|
+
'水山蹇': { gong: '兑', shi: 4 }, '地山谦': { gong: '兑', shi: 5 }, '雷山小过': { gong: '兑', shi: 4 }, '雷泽归妹': { gong: '兑', shi: 3 },
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
// 八宫纳甲(初爻 → 上爻)
|
|
33
|
+
export const NAJIA: Record<string, string[]> = {
|
|
34
|
+
乾: ['甲子', '甲寅', '甲辰', '壬午', '壬申', '壬戌'],
|
|
35
|
+
坎: ['戊寅', '戊辰', '戊午', '戊申', '戊戌', '戊子'],
|
|
36
|
+
艮: ['丙辰', '丙午', '丙申', '丙戌', '丙子', '丙寅'],
|
|
37
|
+
震: ['庚子', '庚寅', '庚辰', '庚午', '庚申', '庚戌'],
|
|
38
|
+
巽: ['辛丑', '辛亥', '辛酉', '辛未', '辛巳', '辛卯'],
|
|
39
|
+
离: ['己卯', '己丑', '己亥', '己酉', '己未', '己巳'],
|
|
40
|
+
坤: ['乙未', '乙巳', '乙卯', '癸丑', '癸亥', '癸酉'],
|
|
41
|
+
兑: ['丁巳', '丁卯', '丁丑', '丁亥', '丁酉', '丁未'],
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
// 宫五行(六亲之「我」)
|
|
45
|
+
export const GONG_WX: Record<string, string> = { 乾: '金', 兑: '金', 坎: '水', 离: '火', 震: '木', 巽: '木', 艮: '土', 坤: '土' };
|
|
46
|
+
|
|
47
|
+
// 六神(日干起)
|
|
48
|
+
export const SHEN_LIU: Record<string, string[]> = {
|
|
49
|
+
甲: ['青龙', '朱雀', '勾陈', '腾蛇', '白虎', '玄武'],
|
|
50
|
+
乙: ['青龙', '朱雀', '勾陈', '腾蛇', '白虎', '玄武'],
|
|
51
|
+
丙: ['朱雀', '勾陈', '腾蛇', '白虎', '玄武', '青龙'],
|
|
52
|
+
丁: ['朱雀', '勾陈', '腾蛇', '白虎', '玄武', '青龙'],
|
|
53
|
+
戊: ['勾陈', '腾蛇', '白虎', '玄武', '青龙', '朱雀'],
|
|
54
|
+
己: ['腾蛇', '白虎', '玄武', '青龙', '朱雀', '勾陈'],
|
|
55
|
+
庚: ['白虎', '玄武', '青龙', '朱雀', '勾陈', '腾蛇'],
|
|
56
|
+
辛: ['白虎', '玄武', '青龙', '朱雀', '勾陈', '腾蛇'],
|
|
57
|
+
壬: ['玄武', '青龙', '朱雀', '勾陈', '腾蛇', '白虎'],
|
|
58
|
+
癸: ['玄武', '青龙', '朱雀', '勾陈', '腾蛇', '白虎'],
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
// 干支五行
|
|
62
|
+
export const GAN_WX: Record<string, string> = { 甲: '木', 乙: '木', 丙: '火', 丁: '火', 戊: '土', 己: '土', 庚: '金', 辛: '金', 壬: '水', 癸: '水' };
|
|
63
|
+
export const ZHI_WX: Record<string, string> = { 子: '水', 丑: '土', 寅: '木', 卯: '木', 辰: '土', 巳: '火', 午: '火', 未: '土', 申: '金', 酉: '金', 戌: '土', 亥: '水' };
|
|
64
|
+
|
|
65
|
+
// 六亲:以宫五行为「我」,爻支五行相对定亲
|
|
66
|
+
const WX_ORDER = ['木', '火', '土', '金', '水'];
|
|
67
|
+
export function liuqin(gongWx: string, zhiWx: string): string {
|
|
68
|
+
if (zhiWx === gongWx) return '兄弟';
|
|
69
|
+
const gi = WX_ORDER.indexOf(gongWx), zi = WX_ORDER.indexOf(zhiWx);
|
|
70
|
+
const rel = ((zi - gi) % 5 + 5) % 5;
|
|
71
|
+
// rel: 1=我生→子孙 2=我克→妻财 3=克我→官鬼 4=生我→父母
|
|
72
|
+
return rel === 1 ? '子孙' : rel === 2 ? '妻财' : rel === 3 ? '官鬼' : rel === 4 ? '父母' : '兄弟';
|
|
73
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// 奇门遁甲数据(移植参考项目 data.js)
|
|
2
|
+
|
|
3
|
+
export const QM_NAMES = ['坎', '坤', '震', '巽', '中', '乾', '兑', '艮', '离'];
|
|
4
|
+
export const QM_MEN = ['休', '死', '伤', '杜', '中', '开', '惊', '生', '景'];
|
|
5
|
+
export const QM_STARS = ['天蓬', '天芮', '天冲', '天辅', '天禽', '天心', '天柱', '天任', '天英'];
|
|
6
|
+
export const QM_SHEN = ['值符', '腾蛇', '太阴', '六合', '白虎', '玄武', '九地', '九天'];
|
|
7
|
+
export const QM_QIYI = ['戊', '己', '庚', '辛', '壬', '癸', '丁', '丙', '乙'];
|
|
8
|
+
|
|
9
|
+
// 节气 → 阴阳遁局数(简表:按节令三分)
|
|
10
|
+
export const QM_SEASONS: { name: string; yin: boolean; ju: number[] }[] = [
|
|
11
|
+
{ name: '冬至', yin: false, ju: [1, 2, 3] }, { name: '小寒', yin: false, ju: [2, 3, 4] }, { name: '大寒', yin: false, ju: [3, 4, 5] },
|
|
12
|
+
{ name: '立春', yin: false, ju: [8, 9, 1] }, { name: '雨水', yin: false, ju: [9, 1, 2] }, { name: '惊蛰', yin: false, ju: [1, 2, 3] },
|
|
13
|
+
{ name: '春分', yin: true, ju: [3, 2, 1] }, { name: '清明', yin: true, ju: [4, 3, 2] }, { name: '谷雨', yin: true, ju: [5, 4, 3] },
|
|
14
|
+
{ name: '立夏', yin: true, ju: [4, 3, 2] }, { name: '小满', yin: true, ju: [5, 4, 3] }, { name: '芒种', yin: true, ju: [6, 5, 4] },
|
|
15
|
+
{ name: '夏至', yin: true, ju: [9, 8, 7] }, { name: '小暑', yin: true, ju: [8, 7, 6] }, { name: '大暑', yin: true, ju: [7, 6, 5] },
|
|
16
|
+
{ name: '立秋', yin: true, ju: [2, 1, 9] }, { name: '处暑', yin: true, ju: [1, 9, 8] }, { name: '白露', yin: true, ju: [9, 8, 7] },
|
|
17
|
+
{ name: '秋分', yin: true, ju: [7, 8, 9] }, { name: '寒露', yin: true, ju: [6, 7, 8] }, { name: '霜降', yin: true, ju: [5, 6, 7] },
|
|
18
|
+
{ name: '立冬', yin: true, ju: [6, 7, 8] }, { name: '小雪', yin: true, ju: [5, 6, 7] }, { name: '大雪', yin: true, ju: [4, 5, 6] },
|
|
19
|
+
];
|
|
20
|
+
|
|
21
|
+
// 节气近似日期(公历,演示级排盘与奇门定遁用)
|
|
22
|
+
export const JIEQI_APPROX: [string, number, number][] = [
|
|
23
|
+
['小寒', 1, 6], ['立春', 2, 4], ['惊蛰', 3, 6], ['清明', 4, 5], ['立夏', 5, 6], ['芒种', 6, 6],
|
|
24
|
+
['小暑', 7, 7], ['立秋', 8, 8], ['白露', 9, 8], ['寒露', 10, 8], ['立冬', 11, 7], ['大雪', 12, 7],
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
export const LUOSHU = [1, 8, 3, 4, 9, 2, 7, 6]; // 绕中五
|