v6.7.4: Shadbala+Yoga集成 + 30项自动化测试

## 精度提升
- API: 集成 calc_shadbala (jyotishganit MIT算法)
- API: 集成 yoga_expansion (dashaflow MIT: Kemadruma/Adhi/Amala等7种)
- API: /api/chart 返回 shadbala 总结 + 扩展瑜伽

## 测试体系
- tests/run_all.py: 30项自动化测试 (30/30 )
- 覆盖: 20个模块导入 + 10个功能验证
- 包含: PAV验证/Shadbala不变性/KP/合盘/SadeSati/补救/Muhurta
This commit is contained in:
732642856
2026-06-11 21:12:44 +08:00
parent 16feaa1e85
commit 38dc31df24
2 changed files with 175 additions and 4 deletions
+19 -4
View File
@@ -174,13 +174,28 @@ class JyotishAPIHandler(BaseHTTPRequestHandler):
dashas = get_available_dashas()
dasha_list = [{'key': k, 'name': DASHA_REGISTRY[k]['name'], 'years': DASHA_REGISTRY[k]['years'], 'type': DASHA_REGISTRY[k]['type']} for k in dashas]
# Shadbala (v6.7.4: jyotishganit MIT算法)
try:
from shadbala import calc_shadbala
sb = calc_shadbala(planets_data, asc_sign, hour+minute/60.0,
planets_data.get('Sun',{}).get('lon',0), moon_lon, minute)
shadbala_summary = {p: {'rupas': round(d['total_rupas'],2), 'level': d['strength_level']}
for p,d in sb.get('planets',{}).items()}
except: shadbala_summary = {}
# Yoga扩展 (dashaflow MIT规则)
try:
from yoga_expansion import detect_all_yogas as detect_ey
for ey in detect_ey(planets_data, asc_sign):
yogas.append({'name': ey.get('name',''), 'planets': ey.get('planets',[]),
'desc': ey.get('description','')[:80], 'cat': 'extended'})
except: pass
return {
'success': True,
'version': '6.7.3',
'success': True, 'version': '6.7.4',
'birth': {'date': f'{year}-{month:02d}-{day:02d}', 'time': f'{int(hour):02d}:{int(minute):02d}'},
'ascendant': {'sign': asc_sign, 'sign_idx': asc_sign_idx, 'degree': round(asc_lon % 30, 2)},
'planets': planets_data,
'houses': houses,
'planets': planets_data, 'houses': houses, 'shadbala': shadbala_summary,
'dasha': {
'current_md': md_lord,
'remaining_years': round(remaining, 2),