feat: 本地skill积累更新 - 引擎增强+婚姻时机验证v5/v6+K.N.Rao八参数法

- SKILL.md: 更新至v3.7.4,补充能力描述
- scripts/jyotish_engine.py: 大幅增强计算引擎(+725行)
- scripts/event_prediction_model.py: 事件预测模型重构
- scripts/jaimini.py: Jaimini系统增强
- scripts/dasha_calculator.py: Dasha计算优化
- scripts/varga.py: 分盘计算更新
- jyotish-app/: 前端界面+过境分析功能增强
- references/: 新增3个婚姻时机研究文件
  - verified-patterns-marriage-timing-v5.md
  - verified-patterns-marriage-timing-v6.md
  - rao-marriage-timing-8-parameters.md
This commit is contained in:
732642856
2026-05-04 20:28:49 +08:00
parent 3314f244f2
commit aae6449ee5
7 changed files with 798 additions and 102 deletions
+14 -13
View File
@@ -99,6 +99,8 @@ def calculate_bhukti(mahadasha_planet, years_into_mahadasha):
"""
Calculate current Bhukti (sub-period) within Mahadasha
Correct formula: Antar_Years = Mahadasha_Years × Antar_Planet_Years / 120
Args:
mahadasha_planet: Current Mahadasha lord
years_into_mahadasha: Years elapsed in current Mahadasha
@@ -111,16 +113,18 @@ def calculate_bhukti(mahadasha_planet, years_into_mahadasha):
years_remaining = years_into_mahadasha
for planet, years in sequence:
if years_remaining <= years:
for planet, planet_full_years in sequence:
# Scale Antar period to Mahadasha duration
bhukti_years = mahadasha_total * planet_full_years / 120.0
if years_remaining <= bhukti_years:
return {
'bhukti_lord': planet,
'bhukti_years': years,
'bhukti_years': bhukti_years,
'years_into_bhukti': years_remaining,
'years_remaining': years - years_remaining,
'bhukti_percentage': (years_remaining / years) * 100
'years_remaining': bhukti_years - years_remaining,
'bhukti_percentage': (years_remaining / bhukti_years) * 100
}
years_remaining -= years
years_remaining -= bhukti_years
return None
@@ -129,20 +133,17 @@ def calculate_pratyantar_dasha(mahadasha_planet, bhukti_planet, years_into_bhukt
"""
Calculate Pratyantar Dasha (sub-sub-period)
This is a more detailed calculation based on the ratio of the
Mahadasha and Bhukti periods.
Correct formula: PA_Years = Antar_Years × PA_Planet_Years / 120
where Antar_Years = Maha_Years × Antar_Planet_Years / 120
"""
mahadasha_years = VIMSHOTTARI_PERIODS[mahadasha_planet]
bhukti_years = VIMSHOTTARI_PERIODS[bhukti_planet]
# Pratyantar Dasha proportion = (Bhukti years / 120) * Mahadasha years
pratyantar_proportion = (bhukti_years / 120) * mahadasha_years
bhukti_years = mahadasha_years * VIMSHOTTARI_PERIODS[bhukti_planet] / 120.0
sequence = get_mahadasha_sequence(mahadasha_planet)
pratyantar_sequence = []
for planet, _ in sequence:
pratyantar_years = (VIMSHOTTARI_PERIODS[planet] / 120) * pratyantar_proportion
pratyantar_years = bhukti_years * VIMSHOTTARI_PERIODS[planet] / 120.0
pratyantar_sequence.append((planet, pratyantar_years))
return pratyantar_sequence
+12
View File
@@ -71,6 +71,18 @@ def varga_map(si, pi, div):
def calc_varga(lon, div):
"""计算行星在指定分盘的位置(星座+精确度数+尊贵状态)"""
# 2026-05-03修正:D9 Navamsa使用Harmonic(×9)法而非BPHS映射法
# 原因:Harmonic法与主流Jyotish软件(Jagannatha Hora等)结果一致
# 且在Einstein等名人案例中与人生事件吻合度更高
# BPHS映射法(el={0:0,1:9,2:6,3:3})仍保留在varga_map中作为备选
if div == 9:
nav_lon = (lon * 9) % 360
vsi = int(nav_lon / 30) % 12
dp = nav_lon - vsi * 30
pi = int(dp / (30.0/9)) # approximate pada from harmonic degree
r = {'sign': _sn(vsi), 'sign_idx': vsi, 'degree_in_sign': round(dp, 4),
'part_index': pi, 'lord': SIGN_LORDS.get(_sn(vsi), ''), 'pada': pi + 1}
return r
si=_si(lon); d=lon-si*30; ps=30.0/div; pi=int(d/ps); dp=d-pi*ps
vsi=varga_map(si,pi,div)
r={'sign':_sn(vsi),'sign_idx':vsi,'degree_in_sign':round(dp,4),