fix(solar-return): thread the birth second into the return instant (BUG-1267, upstream e4a6ac01)

This commit is contained in:
jesse-ux
2026-10-07 17:36:52 +08:00
parent eb739d4e6b
commit f02d27a73f
6 changed files with 65 additions and 3 deletions
+1
View File
@@ -43,6 +43,7 @@ def cmd_solar_return(args: Any) -> Dict[str, Any]:
args.lat, args.lon, args.tz,
args.target_year,
ayanamsa_name=getattr(args, 'ayanamsa', None) or DEFAULT_AYANAMSA_NAME,
birth_second=int(getattr(args, 'second', 0) or 0),
**solar_return_location_kwargs(args),
)
+1 -1
View File
@@ -8240,7 +8240,7 @@ class JyotishAPIHandler(BaseHTTPRequestHandler, VedastroEvidenceMixin, SynastryM
lon,
tz,
target_year,
ayanamsa_name=_request_ayanamsa(body),
ayanamsa_name=_request_ayanamsa(body), birth_second=birth_dt.second,
)
return {'success': True, 'endpoint': 'annual', 'report': report}
+3 -1
View File
@@ -14671,7 +14671,8 @@ def _tajika_annual_core(args, planet_lons, asc_si, age, mode='all'):
sr_cache['sr'] = calc_solar_return_chart(
int(args.year), int(args.month), int(args.day), int(args.hour), int(args.minute),
float(args.lat), float(args.lon), float(args.tz), int(args.year) + int(age),
ayanamsa_name=sr_cache['ayanamsa'], **solar_return_location_kwargs(args),
ayanamsa_name=sr_cache['ayanamsa'], birth_second=_arg_second(args),
**solar_return_location_kwargs(args),
)
return sr_cache['sr']
@@ -16144,6 +16145,7 @@ def cmd_full_reading(args):
args.lat, args.lon, args.tz,
args.target_year,
ayanamsa_name=_current_ayanamsa_name(args),
birth_second=_arg_second(args),
**_solar_return_location_kwargs(args),
)
report['modules']['solar_return'] = sr_result
+5 -1
View File
@@ -314,6 +314,7 @@ def calc_solar_return_chart(
return_lat: float | None = None,
return_lon: float | None = None,
return_tz: float | None = None,
birth_second: int = 0,
) -> Dict:
"""
计算太阳返照盘(Varshaphala)。
@@ -358,7 +359,7 @@ def calc_solar_return_chart(
'hint': '安装swisseph: pip install swisseph',
'solar_return_approx': _find_solar_return_approx(
_datetime_to_jd_ut(datetime(birth_year, birth_month, birth_day,
birth_hour, birth_minute, 0)),
birth_hour, birth_minute, birth_second)),
0, # birth_sun_lon unknown
target_year,
annual_tz,
@@ -372,6 +373,7 @@ def calc_solar_return_chart(
birth_hour, birth_minute,
birth_lat, birth_lon, birth_tz,
'mean',
second=birth_second,
ayanamsa_name=ayanamsa_name,
)
if birth_chart is None:
@@ -474,6 +476,7 @@ def solar_return_full_report(
return_lat: float | None = None,
return_lon: float | None = None,
return_tz: float | None = None,
birth_second: int = 0,
) -> Dict:
"""
太阳返照盘完整报告(Varshaphala 年运分析)。
@@ -503,6 +506,7 @@ def solar_return_full_report(
ayanamsa_name=ayanamsa_name,
local_timezone_id=local_timezone_id,
return_lat=return_lat, return_lon=return_lon, return_tz=return_tz,
birth_second=birth_second,
)
if 'error' in sr: