fix(ayanamsa): keep a caller-selected mode across import and transit paths (BUG-1269, upstream 23be1807)
This commit is contained in:
+18
-8
@@ -473,9 +473,12 @@ def cmd_bhava_chalit(args):
|
||||
if not HAS_SWE:
|
||||
return {"error": "swisseph 未安装, 无法计算"}
|
||||
|
||||
second = int(getattr(args, 'second', 0) or 0)
|
||||
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'))
|
||||
args.lat, args.lon, args.tz, getattr(args, 'node_mode', 'mean'),
|
||||
second=second,
|
||||
ayanamsa_name=getattr(args, 'ayanamsa', None))
|
||||
|
||||
if chart is None:
|
||||
return {"error": "星盘计算失败"}
|
||||
@@ -490,7 +493,7 @@ def cmd_bhava_chalit(args):
|
||||
asc_lon = chart['ascendant']['degree_raw']
|
||||
# MC: 从 swisseph 重新获取
|
||||
import swisseph as swe
|
||||
hour_decimal = args.hour + args.minute / 60.0 - args.tz
|
||||
hour_decimal = args.hour + args.minute / 60.0 + second / 3600.0 - args.tz
|
||||
jd_val = swe.julday(args.year, args.month, args.day, hour_decimal)
|
||||
cusps_raw, ascmc = swe.houses(jd_val, args.lat, args.lon, b'A')
|
||||
mc_tropical = ascmc[1] # MC
|
||||
@@ -500,15 +503,22 @@ def cmd_bhava_chalit(args):
|
||||
calc = BhavaChalitCalculator()
|
||||
|
||||
mode = getattr(args, 'mode', 'compare')
|
||||
applied_ayanamsa = (chart.get('birth_info') or {}).get('ayanamsa_name')
|
||||
|
||||
def _stamp(payload):
|
||||
if isinstance(payload, dict):
|
||||
payload['requested_ayanamsa'] = getattr(args, 'ayanamsa', None)
|
||||
payload['applied_ayanamsa'] = applied_ayanamsa
|
||||
return payload
|
||||
|
||||
if mode == 'boundaries':
|
||||
return calc.calculate_bhava_boundaries(
|
||||
asc_lon, mc_lon, house_system, jd_val, args.lat, args.lon)
|
||||
return _stamp(calc.calculate_bhava_boundaries(
|
||||
asc_lon, mc_lon, house_system, jd_val, args.lat, args.lon))
|
||||
elif mode == 'chart':
|
||||
return calc.get_bhava_chalit_chart(
|
||||
return _stamp(calc.get_bhava_chalit_chart(
|
||||
planet_lons, asc_lon, mc_lon, house_system,
|
||||
jd_val, args.lat, args.lon)
|
||||
jd_val, args.lat, args.lon))
|
||||
else: # compare
|
||||
return calc.compare_rashi_vs_bhava(
|
||||
return _stamp(calc.compare_rashi_vs_bhava(
|
||||
planet_lons, asc_lon, mc_lon, house_system,
|
||||
jd_val, args.lat, args.lon)
|
||||
jd_val, args.lat, args.lon))
|
||||
|
||||
Reference in New Issue
Block a user