v6.9.10: KP 完整系统 CLI 集成 — kp 子命令 + 引擎联动
feat(kp): jyotish_engine.py 新增 kp 子命令 - Sublord/SubSubLord 计算(vs. VedicAstro MIT 算法) - ABCD Planet Significator + House Significator - 支持 --ayanamsa kp 切换 KP 岁差 - 验证: Obama 1961 9行星 KP lords 正确输出 integrate: KP 模块接入 full-reading 管线(import 已添加) chore: KP 状态从 partial → covered
This commit is contained in:
@@ -76,6 +76,7 @@ from cmd_solar_return import cmd_solar_return # v6.0.18
|
||||
from cmd_narayana_dasha import cmd_narayana_dasha as _cmd_narayana_dasha_impl # v6.0.20
|
||||
from cmd_muhurta import cmd_muhurta # v6.0.21
|
||||
from yoga_engine import detect_yogas # v6.0.26: data-driven Yoga engine
|
||||
from kp_system import calc_kp_analysis, get_kp_lords # v6.9.10: KP完整系统
|
||||
|
||||
# ============================================================================
|
||||
# 常量
|
||||
@@ -1803,6 +1804,32 @@ def cmd_ashtakavarga(args):
|
||||
return calc_ashtakavarga(planets, asc_idx)
|
||||
|
||||
|
||||
# ============================================================================
|
||||
# 10b. KP 系统(v6.9.10新增)
|
||||
# ============================================================================
|
||||
def cmd_kp(args):
|
||||
chart, asc_idx, jd, ayanamsa = compute_chart_data(
|
||||
args.year, args.month, args.day, args.hour, args.minute,
|
||||
args.lat, args.lon, args.tz, getattr(args, 'node_mode', 'mean'))
|
||||
if chart is None:
|
||||
return {"error": "swisseph未安装"}
|
||||
|
||||
asc_sign = chart.get("ascendant", {}).get("sign", "Aries")
|
||||
planets = chart.get("planets", {})
|
||||
|
||||
# 构建KP需要的行星位置格式
|
||||
planet_positions = {}
|
||||
for pname, pdata in planets.items():
|
||||
if isinstance(pdata, dict) and 'sign' in pdata:
|
||||
planet_positions[pname] = {
|
||||
'sign': pdata['sign'],
|
||||
'degree': pdata.get('degree_in_sign', pdata.get('degree', 0) % 30),
|
||||
'house': pdata.get('house', 1),
|
||||
}
|
||||
|
||||
return calc_kp_analysis(planet_positions, asc_sign)
|
||||
|
||||
|
||||
# ============================================================================
|
||||
# 11. Hermes 记忆系统(v3.4新增)
|
||||
# ============================================================================
|
||||
@@ -4118,6 +4145,10 @@ def main():
|
||||
p = sub.add_parser('ashtakavarga', help='Ashtakavarga八分法计算')
|
||||
_add_chart_args(p)
|
||||
|
||||
# 10b. kp (v6.9.10新增)
|
||||
p = sub.add_parser('kp', help='KP Krishnamurti Paddhati 完整分析(Sublord+SubSub+ABCD Significator)')
|
||||
_add_chart_args(p)
|
||||
|
||||
# 11. memory (v3.4新增)
|
||||
p = sub.add_parser('memory', help='Hermes记忆系统')
|
||||
p.add_argument('--action', default='stats', choices=['store', 'search', 'context', 'stats'])
|
||||
@@ -4279,9 +4310,9 @@ def main():
|
||||
else:
|
||||
print(f" [Ayanamsa] {ayanamsa_name}", file=sys.stderr)
|
||||
|
||||
cmds = {'chart': cmd_chart, 'dasha': cmd_dasha, 'yoga': cmd_yoga, 'predict': cmd_predict,
|
||||
cmds = { 'chart': cmd_chart, 'dasha': cmd_dasha, 'yoga': cmd_yoga, 'predict': cmd_predict,
|
||||
'varga': cmd_varga, 'celebrity': cmd_celebrity, 'db-stats': cmd_db_stats, 'transit': cmd_transit,
|
||||
'shadbala': cmd_shadbala, 'ashtakavarga': cmd_ashtakavarga, 'memory': cmd_memory,
|
||||
'shadbala': cmd_shadbala, 'ashtakavarga': cmd_ashtakavarga, 'kp': cmd_kp, 'memory': cmd_memory,
|
||||
'validate': cmd_validate, 'audit': cmd_audit, 'report': cmd_report,
|
||||
'varga-full': cmd_varga_full, 'aspects': cmd_aspects, 'jaimini': cmd_jaimini,
|
||||
'nakshatra-adv': cmd_nakshatra_adv, 'nakshatra-dasha': cmd_nakshatra_dasha,
|
||||
|
||||
Reference in New Issue
Block a user