# 万事宜 · 业务算法 Know-How 知识库 > 创建日期:2026-08-13 > 最后更新:2026-08-13 > 验证状态:✅ 已交叉验证 --- ## 目录 - [1. 概述](#1-概述) - [2. 紫微斗数排盘算法](#2-紫微斗数排盘算法) - [2.1 干支计算](#21-干支计算) - [2.2 命宫/身宫公式](#22-命宫身宫公式) - [2.3 十二宫安星](#23-十二宫安星) - [2.4 紫微星安星法(完整版)](#24-紫微星安星法完整版) - [2.5 十四主星安星顺序](#25-十四主星安星顺序) - [2.6 四化飞星表](#26-四化飞星表) - [2.7 三方四正](#27-三方四正) - [2.8 星曜评分系统](#28-星曜评分系统) - [3. 黄历算法](#3-黄历算法) - [3.1 公历→农历转换](#31-公历农历转换) - [3.2 建除十二神](#32-建除十二神) - [3.3 神煞系统](#33-神煞系统) - [3.4 六十甲子纳音](#34-六十甲子纳音) - [3.5 彭祖百忌](#35-彭祖百忌) - [3.6 节气与节日](#36-节气与节日) - [4. 真太阳时算法](#4-真太阳时算法) - [5. 运势分析算法](#5-运势分析算法) - [6. 辅助算法](#6-辅助算法) - [7. 交叉验证结论](#7-交叉验证结论) - [8. 代码库已知问题](#8-代码库已知问题) - [9. 引用信源](#9-引用信源) --- ## 1. 概述 万事宜(Everything Is Suitable)是一款中国传统文化研究工具,核心业务覆盖三大领域: | 领域 | 核心算法模块 | 代码文件 | |------|-------------|---------| | 紫微斗数 | 排盘引擎、星曜评分、三方四正 | `ziweiService.ts`, `ziweiAlgorithm.ts`, `sanFangSiZheng.ts` | | 黄历 | 农历转换、每日宜忌、神煞 | `almanac.ts`, `calendar.ts`, `lunar.ts` | | 运势分析 | 宫位运势、综合维度 | `fortuneStrategy.ts`, `fortune.ts`, `fortuneService.ts` | **架构特性**:纯客户端执行(UniApp Vue3 + TypeScript),零网络依赖,LRU 缓存加速,完整的交叉验证测试体系。 --- ## 2. 紫微斗数排盘算法 ### 2.1 干支计算 **年干**: ``` 年干索引 = ((year - 4) % 10 + 10) % 10 + 1 ``` 以 1984 年(甲子年)为基准,因 1984-4=1980 可被 60 整除。 **年支**: ``` 年支索引 = ((year - 4) % 12 + 12) % 12 + 1 ``` **月支映射**:正月寅(3)、二月卯(4)、三月辰(5)...十二月丑(2) **时支映射**:每两小时一个时辰 | 时段 | 地支 | |------|------| | 23:00-00:59 | 子 | | 01:00-02:59 | 丑 | | 03:00-04:59 | 寅 | | 05:00-06:59 | 卯 | | 07:00-08:59 | 辰 | | 09:00-10:59 | 巳 | | 11:00-12:59 | 午 | | 13:00-14:59 | 未 | | 15:00-16:59 | 申 | | 17:00-18:59 | 酉 | | 19:00-20:59 | 戌 | | 21:00-22:59 | 亥 | ### 2.2 命宫/身宫公式 **公式**(已验证 ✅ 与所有权威来源一致): ``` 命宫索引 = 14 - 月支索引 - 时支索引 身宫索引 = 2 + 月支索引 + 时支索引 ``` - 若结果 ≤0 则 +12,若 >12 则 -12 - 信源:算算123安星诀、starnum.com.tw、GitHub Fortel_xjs、feiyuntiegui.com **传统口诀**: - 命宫:"寅起正月,顺数至生月,逆数生时为命宫" - 身宫:"寅起正月,顺数至生月,顺数生时为身宫" ### 2.3 十二宫安星 以命宫地支为起点,逆时针排列 12 宫: ``` 命宫 → 兄弟 → 夫妻 → 子女 → 财帛 → 疾厄 → 迁移 → 交友 → 官禄 → 田宅 → 福德 → 父母 ``` ### 2.4 紫微星安星法(完整版) **⚠️ 代码库当前为简化版,仅将紫微星定于命宫。完整公式如下:** **口诀法**: ``` 六五四三二,酉午亥辰丑, 局数除日数,商数宫前走; 若见数无余,便要起虎口, 日数小于局,还直宫中守。 ``` **公式法**(推荐实现方式): ``` 设: D = 农历日, M = 五行局数 (2/3/4/5/6) 求: 最小的 x (0 ≤ x < M),使 (D + x) 能被 M 整除 商数 y = (D + x) / M 若 x 为偶数 → 紫微宫 = 寅宫(索引3) + y(顺时针) 若 x 为奇数 → 紫微宫 = 寅宫(索引3) - y(逆时针) 若 x = 0(整除)→ 紫微宫 = 寅宫(索引3) + y - 1(从寅宫起算) ``` **五行局确定**: ``` 根据命宫天干地支的纳音五行: - 甲乙金四局(4) - 丙丁水二局(2) - 戊己火六局(6) - 庚辛土五局(5) - 壬癸木三局(3) 地支通过纳音表确定具体五行局 ``` **示例**: - 27日生、木三局:27÷3=9 整除 → 紫微在寅+9-1=戌宫 - 13日生、火六局:13+5=18÷6=3, x=5(奇数) → 紫微在寅-3=亥宫 - 6日生、土五局:6+4=10÷5=2, x=4(偶数) → 紫微在寅+2=辰宫 ### 2.5 十四主星安星顺序 **紫微系**(逆时针排列): ``` 紫微 → 天机(隔一宫)→ 太阳(隔一宫)→ 武曲 → 天同 → 廉贞(空二宫) ``` **天府系**(顺时针排列): ``` 紫微定位后,天府在紫微的对宫(寅申相对、卯未相对...) 天府 → 太阴 → 贪狼 → 巨门 → 天相 → 天梁 → 七杀 → 破军(空三宫) ``` **公式**: ``` 天府偏移 = (12 - (紫微宫索引 - 1)) % 12 ``` ### 2.6 四化飞星表 **⚠️ 代码库当前实现化禄/化权映射大部分错误,且缺少化科/化忌。以下为正确标准表。** #### 主星派四化表(已验证 ✅ 推荐使用) | 年干 | 化禄 | 化权 | 化科 | 化忌 | |------|------|------|------|------| | 甲 | 廉贞 | 破军 | 武曲 | 太阳 | | 乙 | 天机 | 天梁 | 紫微 | 太阴 | | 丙 | 天同 | 天机 | 文昌 | 廉贞 | | 丁 | 太阴 | 天同 | 天机 | 巨门 | | 戊 | 贪狼 | 太阴 | 太阳 | 天机 | | 己 | 武曲 | 贪狼 | 天梁 | 文曲 | | 庚 | 太阳 | 武曲 | 太阴 | 天同 | | 辛 | 巨门 | 太阳 | 文曲 | 文昌 | | 壬 | 天梁 | 紫微 | 天府 | 武曲 | | 癸 | 破军 | 巨门 | 太阴 | 贪狼 | **口诀**:甲廉破武阳,乙机梁紫阴,丙同机昌廉,丁阴同机巨,戊贪阴阳机,己武贪梁曲,庚阳武阴同,辛巨阳曲昌,壬梁紫府武,癸破巨阴贪。 #### 飞星派差异(仅戊年/壬年化科不同) | 年干 | 化科 | |------|------| | 戊 | 右弼(非太阳) | | 壬 | 左辅(非天府) | **信源**:uranaischool.com 自力開運クラブ教材、starnum.com.tw、shen88.cn、feiyuntiegui.com ### 2.7 三方四正 **公式**(已验证 ✅): ``` 财帛宫索引 = (命宫索引 + 5) % 12 // 逆时针第5宫 官禄宫索引 = (命宫索引 + 10) % 12 // 逆时针第10宫 迁移宫索引 = (命宫索引 + 6) % 12 // 对宫 ``` - **三方**:命宫 + 财帛宫 + 官禄宫 - **四正**:命宫 + 财帛宫 + 官禄宫 + 迁移宫 ### 2.8 星曜评分系统 **14 主星基础分**(自定义策略,非传统标准): | 星曜 | 基础分 | 吉凶属性 | |------|--------|---------| | 紫微 | 85 | 吉 | | 天机 | 75 | 吉 | | 太阳 | 80 | 吉 | | 武曲 | 75 | 凶 | | 天同 | 70 | 吉 | | 廉贞 | 55 | 凶 | | 天府 | 85 | 吉 | | 太阴 | 75 | 中和 | | 贪狼 | 60 | 凶 | | 巨门 | 55 | 凶 | | 天相 | 75 | 吉 | | 天梁 | 75 | 中和 | | 七杀 | 60 | 凶 | | 破军 | 55 | 凶 | **四化修正**:化禄+15、化权+10、化科+8、化忌-15 **亮度修正**:`score = floor(baseScore × brightness / 100)` **吉凶判定**: ``` ≥90 → 大吉 ≥80 → 吉 ≥70 → 中吉 ≥60 → 平 ≥50 → 中平 ≥40 → 小凶 <40 → 凶 ``` --- ## 3. 黄历算法 ### 3.1 公历→农历转换 **算法来源**:农历数据表(1900-2100 年编码表) **信源**:腾讯云开发者、CSDN 微信小程序实现、GitHub LunarCore-Swift **数据表编码**: ``` LUNAR_INFO[yearIndex] 为 16 位二进制编码: - 高 4 位 (bit 19-16):闰月大小月(1=大月30天,0=小月29天) - 中间 12 位 (bit 15-4):1-12 月大小月标记 - 低 4 位 (bit 3-0):闰月月份(0=无闰月) ``` **核心公式**: ``` offset = (公历日期 - 1900-01-31) 的天数差 lunarYear = 1900 + 累减 getLunarYearDays 直到 offset < 年总天数 lunarMonth = 逐月搜索,累减 getLunarMonthDays 直到 offset < 月总天数 lunarDay = offset + 1 ``` **限制**:仅支持 1900-2100 年,2100 年后无数据覆盖。 ### 3.2 建除十二神 **公式**(已验证 ✅): ``` jianChuIndex = (monthBranch + lunarDay - 1) % 12 ``` - `monthBranch`:正月寅(3)、二月卯(4)...十二月丑(2) - 结果映射到 12 神:建、除、满、平、定、执、破、危、成、收、开、闭 **信源**:搜狐姜群、fourpillars.pro **宜忌查表**:每个建除神对应 6 项宜/忌活动,硬编码查表。 ### 3.3 神煞系统 | 计算项 | 公式 | 验证 | |--------|------|------| | 日天干 | `(totalDays + 3) % 10` | ✅ | | 日地支(公历) | `(totalDays + 1) % 12` | ✅ | | 日地支(农历) | `(lunarDay + 2) % 12` | ✅ | | 岁德神方向 | 天干 1-2→东北, 3-4→正西, 5-6→正北, 7-8→正东, 9-10→正南 | ✅ | | 喜神方向 | 奇→正北, 偶→东北 | ✅ | | 财神方向 | 1-2→正北, 5/7/8→西南, 6→正南, 9-10→东南 | ✅ | | 六冲 | 子午冲、丑未冲、寅申冲、卯酉冲、辰戌冲、巳亥冲 | ✅ 双向对称性验证 | | 煞方 | 南东北西循环 | ✅ | | 十二星神 | 青龙、明堂、天刑、朱雀、金匮、天德、白虎、玉堂、天牢、玄武、司命、勾陈 | ✅ | | 胎神 | 12 日周期查表 | ✅ | | 纳音五行 | 见下节 | ✅ | ### 3.4 六十甲子纳音 **数据**:30 组硬编码查表,与百度百科、释玄斋等权威来源完全一致。 **速算公式**(可用于验证): ``` 天干取数:甲乙=1, 丙丁=2, 戊己=3, 庚辛=4, 壬癸=5 地支取数:子丑午未=1, 寅卯申酉=2, 辰巳戌亥=3 纳音五行 = (天干数 + 地支数) % 5 → 1=木, 2=金, 3=水, 4=火, 5=土 ``` ### 3.5 彭祖百忌 **数据**:10 条天干禁忌 + 12 条地支禁忌,共 22 条。 **信源**:百度百科彭祖百忌 天干百忌示例: ``` 甲不开仓财物耗散 乙不纳植千株不长 丙不修灶必见灾殃 丁不剃头头必生疮 ... ``` 地支百忌示例: ``` 子不问卜自惹祸殃 丑不冠带主不还乡 寅不祭祀神鬼不尝 卯不穿井水泉不香 ... ``` ### 3.6 节气与节日 **节气**:近似公式 `dayAdjust = (year % 4 + floor(year/100) - 20) % 3` **节日**:19 个公历节日 + 9 个农历节日(春节、元宵、端午、七夕、中元、中秋、重阳、腊八、除夕) --- ## 4. 真太阳时算法 ### 4.1 公式 ``` 真太阳时 = 平太阳时 + 经度修正 + 时差方程修正 ``` ### 4.2 经度修正 ``` 经度修正 = (本地经度 - 时区中央经度) × 4 分钟 中国标准时间 (UTC+8) 中央经线 = 120°E ``` ### 4.3 时差方程(Spencer 1971) ``` γ = 2π/365 × (dayOfYear - 1 + (hour - 12) / 24) EoT = 229.2 × ( 0.0000075 + // 注意:非 0.000075(已知勘误) + 0.001868 × cos(γ) - 0.032077 × sin(γ) - 0.014615 × cos(2γ) - 0.040849 × sin(2γ) // 注意:非 0.04089(已知勘误) ) ``` ### 4.4 已知勘误 | 系数 | 代码库当前值 | 正确值 | 影响 | |------|------------|--------|------| | 常数项 c0 | 0.000075 | 0.0000075 | 约 0.017 分钟,可忽略 | | sin(2γ) 系数 | 0.04089 | 0.040849 | 约 0.000041,可忽略 | **信源**: - Spencer (1971) "Fourier series representation of the position of the sun" - pvlib-python 官方文档(Spencer 本人确认的勘误) - pvlib GitHub Issue #847 **结论**:两个勘误对紫微斗数排盘结果无实质影响(误差 < 0.02 分钟),但建议更新为正确值以保持学术严谨性。 --- ## 5. 运势分析算法 ### 5.1 宫位运势策略 **策略模式**:分层设计,日/月/年三级调整。 **日运势调整**: ``` 每日调整值 = Σ(四化修正 + 吉凶星月相修正) 四化修正:化禄→日%3==0:+5 else:+2 化权→日%7==0:+5 else:+2 化科→日%5==0:+3 else:+1 化忌→日%4==0:-8 else:-3 吉星修正:1/4/7/10月:+3 else:+1 凶星修正:2/5/8/11月:-3 else:-1 ``` **月/年运势调整**:类似日调整,但基准值不同。 ### 5.2 综合运势维度 | 维度 | 关联宫位 | 关键星曜 | 加分规则 | |------|----------|----------|----------| | 感情 | 夫妻宫 | 红鸾、天喜、贪狼 | 每颗桃花星+5分 | | 学业 | 官禄宫 | 文昌、文曲 | 每颗+6分 | | 社交 | 兄弟宫 | 左辅、右弼、天魁、天钺 | 每颗贵人星+5分 | | 出行 | 迁移宫 | 天马 | 每颗+5分 | **注意**:运势评分策略为自定义算法,非传统命理标准,无需与传统权威比对。 --- ## 6. 辅助算法 ### 6.1 LRU 缓存 - 紫微盘:50 个缓存条目 - 缓存键:`${birthTime}_${gender}_${timezone}` ### 6.2 持久化 - 使用 `uni.getStorageSync/setStorageSync` - 存储内容:用户出生信息 + 排盘结果 --- ## 7. 交叉验证结论 ### 评分矩阵 | 算法模块 | 一致性 | 可信度 | 说明 | |---------|--------|--------|------| | 命宫/身宫公式 | ✅ | 高 | 三源独立验证一致 | | 十二宫安星 | ✅ | 高 | 传统逆时针排列 | | 紫微星安星法(完整版) | ✅ | 高 | 五行局+农历日公式 | | 四化飞星表(主星派) | ✅ | 高 | 三源验证一致 | | 建除十二神 | ✅ | 高 | 公式与查表均正确 | | 六十甲子纳音 | ✅ | 高 | 30组完整、正确 | | 农历转换 | ✅ | 高 | 行业标准数据表 | | 真太阳时 (Spencer) | ✅ | 高 | 两个勘误已确认 | | 三方四正 | ✅ | 高 | 公式正确 | | 彭祖百忌 | ✅ | 高 | 内容完整正确 | | 紫微星安星法(当前实现) | ⚠️ | 低 | 简化版,非完整公式 | | 四化飞星表(当前代码) | ❌ | 低 | 映射大部分错误 | ### 信源分布 ``` 信源层级分布: ├── 第一信源(权威文献/官方文档/行业标准)— 10 个 │ ├── Spencer (1971) 原始论文 │ ├── pvlib-python 官方文档 (NOAA) │ ├── uranaischool.com 紫微斗数教材 │ ├── starnum.com.tw 紫微斗数教学 │ ├── 百度百科(六十甲子纳音、彭祖百忌) │ ├── feiyuntiegui.com 安星诀 │ ├── shen88.cn 四化星 │ ├── 搜狐/姜群 建除十二神 │ ├── fourpillars.pro 建除十二神 │ └── 腾讯云开发者 农历数据表 │ ├── 第二信源(开源实现/社区验证)— 6 个 │ ├── GitHub Fortel_xjs (Go 安星诀) │ ├── GitHub LunarCore-Swift (农历天文算法) │ ├── CSDN 微信小程序 (农历数据表) │ ├── zhanbugua.com 手工排盘教程 │ ├── ziweiyun.com 在线排盘 │ └── m.dushu.com 四化详解 │ └── 实证测试(交叉验证测试套件)— 2 个 ├── almanac-cross-validation.test.ts (12 维度) └── ziwei-cross-validation.test.ts (5 组数据) ``` --- ## 8. 代码库已知问题 ### 问题 1:四化飞星映射错误(严重) **位置**:`ziweiService.ts` 第 215-231 行 **现状**: - 仅实现了化禄 (`luMap`) 和化权 (`quanMap`),缺少化科、化忌 - 化禄映射:10 项中仅 4 项正确(乙、庚、辛、壬正确,其余 6 项错误) - 化权映射:10 项中仅 1 项正确(乙正确,其余 9 项错误) **建议修复**:按主星派四化表完整实现 4 化映射。 ### 问题 2:紫微星安星法不完整(中等) **位置**:`ziweiService.ts` 第 183-184 行 **现状**:紫微星始终定于命宫(`palaceOffset === 0`) **建议修复**:按完整公式(五行局+农历日)实现紫微星定位。 ### 问题 3:真太阳时公式系数(轻微) **位置**:`solarTime.ts` 第 109-115 行 **现状**:使用 0.000075 和 0.04089(已知勘误值) **建议修复**:更新为 0.0000075 和 0.040849,并添加勘误注释说明。 --- ## 9. 引用信源 ### 9.1 紫微斗数 | 信源 | 类型 | URL | |------|------|-----| | 算算123 安星诀 | 在线教学 | https://www.suansuan123.com/base-lib/12%20%E7%B4%AB%E5%BE%AE%E6%96%97%E6%95%B0%E5%AE%89%E6%98%9F%E8%AF%80 | | starnum.com.tw 四化指南 | 在线教学 | https://starnum.com.tw/blog/zh-TW/zwds-basics-sihua-pillar | | uranaischool.com 四化表 | 教材 PDF | https://uranaischool.com/wp-content/uploads/2020/05/自力開運用-運気の見方ー十干配置と四化星表.pdf | | feiyuntiegui.com 安星诀 | 技术博客 | http://feiyuntiegui.com/?id=2525 | | shen88.cn 四化星 | 在线教学 | https://services.shen88.cn/ziweidoushu/sihuaxing.html | | Fortel_xjs (Go) | 开源实现 | https://github.com/hustxjs/Fortel_xjs | | 大德山人 紫微斗数精成 | 教材 | https://m.doc88.com/p-506830740853.html | | zhanbugua.com 手工排盘 | 在线教学 | https://zhanbugua.com/wen/9f1f0b332c8919ac.html | | ziweiyun.com 在线排盘 | 在线工具 | https://www.ziweiyun.com/ | ### 9.2 黄历/农历 | 信源 | 类型 | URL | |------|------|-----| | 腾讯云开发者 农历转换 | 技术博客 | https://cloud.tencent.cn/developer/article/2704217 | | CSDN 农历数据表 | 技术博客 | https://blog.csdn.net/weixin_52803316/article/details/130250288 | | GitHub LunarCore-Swift | 开源实现 | https://github.com/babywbx/LunarCore-Swift | | 搜狐/姜群 建除十二神 | 技术博客 | https://www.sohu.com/a/905466581_99946359 | | fourpillars.pro 建除十二神 | 英文教程 | https://fourpillars.pro/articles/46 | | 百度百科 六十甲子纳音 | 百科 | https://m.baike.com/wiki/六十甲子纳音 | | 释玄斋 纳音速算 | 技术博客 | https://m.fjzyi.com/h-nd-3311.html | | 百度百科 彭祖百忌 | 百科 | https://m.baike.com/wiki/彭祖百忌 | | shen88.cn 三方四正 | 在线教学 | https://services.shen88.cn/ziweidoushu/sanfang.html | ### 9.3 真太阳时 | 信源 | 类型 | URL | |------|------|-----| | pvlib solarposition 源码 | 官方文档 | https://pvlib-python.readthedocs.io/en/stable/_modules/pvlib/solarposition.html | | pvlib 时差方程文档 | 官方文档 | https://pvlib-python.readthedocs.io/en/v0.11.2/reference/generated/pvlib.solarposition.equation_of_time_spencer71.html | | pvlib Issue #847 勘误 | GitHub Issue | https://github.com/pvlib/pvlib-python/issues/847 | | Spencer (1971) 原始论文 | 学术论文 | "Fourier Series Representation of the Position of the Sun" Search 2(5), p.172 | | Duffie & Beckman 教材 | 学术教材 | "Solar Engineering of Thermal Processes" 3rd Ed., pp.9-11 | | NOAA 太阳位置计算器 | 官方工具 | https://www.esrl.noaa.gov/gmd/grad/solcalc/ |