fix: v4.2.1 技法修正 + 文档整理
技法修正(Critical): - Karakamsha: DK→AK(灵魂星),经典定义是AK在Navamsa的星座 - D10 Dasamsa: 偶数星座偏移+8→+9(从第9个星座开始) - D16 Shodamsa: 偶数星座偏移+1→+4(从Leo开始近似) - Shadbala Kendra Bala: 不等值→统一15 Virupas(BPHS标准) - Shadbala Ojayugma: 添加D9修正注释(当前D1近似) - Shadbala Nathonnatha: 添加比例计算注释(当前二值近似) 文档修正: - SKILL.md版本号v3.12.1→v4.2.0 - SKILL.md章节编号修正(12.5→13,后续顺延) - SKILL.md参考文献重复编号修正 - SKILL.md参考数量100→102 - SKILL.md自评6.0/5→5.0/5 - SKILL.md硬编码Python路径→python3 - README.md从v3.7.1更新到v4.2.0 清理: - 删除 example.py 空壳文件 - 删除 __pycache__ 和 hermes_memory.db
This commit is contained in:
@@ -1,19 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Example helper script for jyotish-vedic-astrology
|
||||
|
||||
This is a placeholder script that can be executed directly.
|
||||
Replace with actual implementation or delete if not needed.
|
||||
|
||||
Example real scripts from other skills:
|
||||
- pdf/scripts/fill_fillable_fields.py - Fills PDF form fields
|
||||
- pdf/scripts/convert_pdf_to_images.py - Converts PDF pages to images
|
||||
"""
|
||||
|
||||
def main():
|
||||
print("This is an example script for jyotish-vedic-astrology")
|
||||
# TODO: Add actual script logic here
|
||||
# This could be data processing, file conversion, API calls, etc.
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
+18
-13
@@ -7,7 +7,7 @@ Parashara传承中的Jaimini子系统
|
||||
支持:
|
||||
- Chara Karaka: 7/8个功能指示星(按度数排序)
|
||||
- Chara Dasha: 基于星座的大运系统
|
||||
- Karakamsha: DK在Navamsa中的上升(灵魂方向)
|
||||
- Karakamsha: AK在Navamsa中的上升(灵魂方向)
|
||||
- Jaimini Sutras关键规则
|
||||
"""
|
||||
from typing import Dict, List, Tuple, Optional
|
||||
@@ -212,25 +212,30 @@ def _chara_dasha_duration(sign_idx, planet_lons):
|
||||
return max(1, 12 - count)
|
||||
|
||||
|
||||
def calc_karakamsha(dk_sign_in_d9: str, dk_degree_in_d9: float) -> Dict:
|
||||
def calc_karakamsha(ak_sign_in_d9: str, ak_degree_in_d9: float) -> Dict:
|
||||
"""
|
||||
Karakamsha分析:DK在D9中的位置作为"灵魂上升"
|
||||
Karakamsha分析:AK(Atmakaraka,灵魂星)在D9中的位置作为"灵魂上升"
|
||||
这是Jaimini体系中判断人生终极方向的关键技法
|
||||
|
||||
参数:
|
||||
dk_sign_in_d9: DK在D9中的星座
|
||||
dk_degree_in_d9: DK在D9中的度数
|
||||
"""
|
||||
sign_idx = SIGNS.index(dk_sign_in_d9) if dk_sign_in_d9 in SIGNS else 0
|
||||
lord = SIGN_LORDS.get(dk_sign_in_d9, '')
|
||||
经典定义:Karakamsha = Atmakaraka在Navamsa(D9)中落入的星座
|
||||
从这个星座看12宫的布局,分析灵魂方向
|
||||
|
||||
# Karakamsha Lagna = DK在D9中的位置
|
||||
⚠️ 2026-05-03修正:此前版本错误使用DK(配偶星),现已修正为AK(灵魂星)
|
||||
|
||||
参数:
|
||||
ak_sign_in_d9: AK(灵魂星)在D9中的星座
|
||||
ak_degree_in_d9: AK在D9中的度数
|
||||
"""
|
||||
sign_idx = SIGNS.index(ak_sign_in_d9) if ak_sign_in_d9 in SIGNS else 0
|
||||
lord = SIGN_LORDS.get(ak_sign_in_d9, '')
|
||||
|
||||
# Karakamsha Lagna = AK(灵魂星)在D9中的位置
|
||||
# 从这个位置看12宫的布局,分析灵魂方向
|
||||
interpretations = _karakamsha_interpretations(dk_sign_in_d9, lord)
|
||||
interpretations = _karakamsha_interpretations(ak_sign_in_d9, lord)
|
||||
|
||||
return {
|
||||
'karakamsha_sign': dk_sign_in_d9,
|
||||
'karakamsha_degree': dk_degree_in_d9,
|
||||
'karakamsha_sign': ak_sign_in_d9,
|
||||
'karakamsha_degree': ak_degree_in_d9,
|
||||
'karakamsha_lord': lord,
|
||||
'soul_direction': interpretations,
|
||||
}
|
||||
|
||||
+12
-10
@@ -1129,12 +1129,13 @@ def cmd_jaimini(args):
|
||||
if mode in ('all', 'dasha'):
|
||||
result['chara_dasha'] = calc_chara_dasha(asc_idx, planet_lons, args.year, args.month)
|
||||
if mode in ('all', 'karakamsha'):
|
||||
# DK的D9位置(用planet_degs计算Karaka,用planet_lons计算Navamsa)
|
||||
# AK(灵魂星)的D9位置 — Karakamsha定义是AK在Navamsa中的星座
|
||||
# ⚠️ 2026-05-03修正:此前错误使用DK,现已修正为AK
|
||||
ck7 = calc_chara_karaka_7(planet_degs)
|
||||
dk_name = ck7['karaka_table']['Darakaraka']['planet']
|
||||
dk_lon = planet_lons.get(dk_name, 0)
|
||||
dk_d9 = calc_varga(dk_lon, 9)
|
||||
result['karakamsha'] = calc_karakamsha(dk_d9.get('sign', 'Aries'), dk_d9.get('degree_in_sign', 0))
|
||||
ak_name = ck7['karaka_table']['Atmakaraka']['planet']
|
||||
ak_lon = planet_lons.get(ak_name, 0)
|
||||
ak_d9 = calc_varga(ak_lon, 9)
|
||||
result['karakamsha'] = calc_karakamsha(ak_d9.get('sign', 'Aries'), ak_d9.get('degree_in_sign', 0))
|
||||
return result
|
||||
|
||||
|
||||
@@ -1449,13 +1450,14 @@ def cmd_full_reading(args):
|
||||
jaimini_result['chara_karaka_8'] = calc_chara_karaka_8(planet_degs)
|
||||
jaimini_result['chara_dasha'] = calc_chara_dasha(asc_idx, planet_lons, args.year, args.month)
|
||||
|
||||
# Karakamsha(用planet_degs计算Karaka,用planet_lons计算Navamsa)
|
||||
# Karakamsha(用AK灵魂星,非DK配偶星)
|
||||
# ⚠️ 2026-05-03修正:此前错误使用DK,现已修正为AK
|
||||
ck7 = jaimini_result['chara_karaka_7']
|
||||
dk_name = ck7['karaka_table']['Darakaraka']['planet']
|
||||
dk_lon = planet_lons.get(dk_name, 0)
|
||||
dk_d9 = calc_varga(dk_lon, 9)
|
||||
ak_name = ck7['karaka_table']['Atmakaraka']['planet']
|
||||
ak_lon = planet_lons.get(ak_name, 0)
|
||||
ak_d9 = calc_varga(ak_lon, 9)
|
||||
jaimini_result['karakamsha'] = calc_karakamsha(
|
||||
dk_d9.get('sign', 'Aries'), dk_d9.get('degree_in_sign', 0))
|
||||
ak_d9.get('sign', 'Aries'), ak_d9.get('degree_in_sign', 0))
|
||||
report['modules']['jaimini'] = jaimini_result
|
||||
except Exception as e:
|
||||
report['errors'].append(f"jaimini: {e}")
|
||||
|
||||
+13
-2
@@ -214,14 +214,20 @@ def calc_sthana_bala(pname: str, lon: float, sign: str, house: int) -> Dict:
|
||||
sapta_score = 5
|
||||
|
||||
# C. Ojayugma Bala(奇偶宫力量)
|
||||
# ⚠️ 2026-05-03修正:BPHS定义是基于Navamsa(D9)中的奇偶宫,非D1
|
||||
# 水星/金星:落在D9奇数宫(1,3,5,7,9,11)获得15 Virupas
|
||||
# 其他行星:落在D9偶数宫(2,4,6,8,10,12)获得15 Virupas
|
||||
# 简化实现:使用D1宫位奇偶(当D9不可用时作为近似)
|
||||
# TODO: 未来需传入D9宫位以精确计算
|
||||
if pname in ['Mercury', 'Venus']:
|
||||
ojayugma = 15 if house % 2 == 0 else 0
|
||||
else:
|
||||
ojayugma = 15 if house % 2 == 1 else 0
|
||||
|
||||
# D. Kendra Bala(角宫力量)
|
||||
kendra_scores = {1: 60, 4: 40, 7: 20, 10: 30}
|
||||
kendra_bala = kendra_scores.get(house, 0)
|
||||
# ⚠️ 2026-05-03修正:BPHS给出角宫(Kendra 1/4/7/10)统一15 Virupas,非不等值
|
||||
# 此前错误使用{1:60, 4:40, 7:20, 10:30},已修正为统一15
|
||||
kendra_bala = 15 if house in (1, 4, 7, 10) else 0
|
||||
|
||||
# E. Drekkana Bala(三分盘力量)
|
||||
deg_in_sign = lon % 30
|
||||
@@ -260,6 +266,11 @@ def calc_kala_bala(pname: str, is_night: bool, sun_northern: bool,
|
||||
components = {}
|
||||
|
||||
# A. Nathonnata Bala(昼夜力量)
|
||||
# ⚠️ 2026-05-03修正:BPHS给出比例计算(0-60),非二值(0/60)
|
||||
# 水星永远获得完整60;日间行星白天按出生时间到正午距离比例获得0-60
|
||||
# 夜间行星夜晚按出生时间到午夜距离比例获得0-60
|
||||
# 简化实现:保持水星=60,其他按昼夜分组给60/0
|
||||
# TODO: 未来需传入精确出生时间计算正午/午夜距离比例
|
||||
if pname == 'Mercury':
|
||||
nathonnata = 60
|
||||
elif is_night and pname in NOCTURNAL_STRONG:
|
||||
|
||||
+2
-2
@@ -57,9 +57,9 @@ def varga_map(si, pi, div):
|
||||
if div==7: return (si+pi)%12 if o else (si+6+pi)%12
|
||||
if div==9:
|
||||
el={0:0,1:9,2:6,3:3}; return (el[si%4]+pi)%12
|
||||
if div==10: return (si+pi)%12 if o else (si+8+pi)%12
|
||||
if div==10: return (si+pi)%12 if o else (si+9+pi)%12 # D10: even signs start from 9th (2026-05-03 fix: was +8)
|
||||
if div==12: return (si+pi)%12
|
||||
if div==16: return ((0 if o else 1)+pi)%12
|
||||
if div==16: return ((0 if o else 4)+pi)%12 # D16: movable=+0, fixed=+4; dual needs separate (2026-05-03 fix: was +1)
|
||||
if div==20: return ((0 if o else 8)+pi)%12
|
||||
if div==24: return ((4 if o else 3)+pi)%12
|
||||
if div==27: return ((0 if o else 6)+pi)%12
|
||||
|
||||
Reference in New Issue
Block a user