fix(ayanamsa): keep a caller-selected mode across import and transit paths (BUG-1269, upstream 23be1807)

This commit is contained in:
jesse-ux
2026-10-07 17:05:18 +08:00
parent 4b9c019814
commit 4e134b9b9f
6 changed files with 183 additions and 24 deletions
+16
View File
@@ -16998,3 +16998,19 @@
- 相关记录:BUG-1190
- 复发自:无
- 修复版本:本分支待发布
## BUG-1269 | 导入引擎时的岁差引导盖掉调用方已选的模式
- 状态:resolved
- 首次发现:2026-10-07
- 最近更新:2026-10-07
- 影响面:`scripts/ayanamsa_utils.py`、`scripts/jyotish_engine.py`、`scripts/bhava_chalit.py`、`scripts/cmd_nakshatra_adv.py`
- 用户现象:调用方先选定岁差,再导入引擎,实际计算回到产品默认的 Raman。Bhava Chalit 和星宿命令丢掉请求的岁差与出生秒
- 触发条件:先 `apply_ayanamsa` 再导入 `jyotish_engine`;或调用 bhava-chalit / nakshatra / transit 时传入非默认岁差
- 根因:引擎导入时无条件 `apply_ayanamsa(DEFAULT_AYANAMSA_NAME)`。本文件作为 `__main__` 跑过之后,Bhava Chalit 和星宿命令再次按模块名导入,引导会再跑一遍。行运行星计算不读请求的岁差。Bhava Chalit 与星宿命令调用 `compute_chart_data` 时不传 `second` 和 `ayanamsa_name`,宫位时刻也不加秒
- 修复:`ayanamsa_utils` 增加进程闩 `AYANAMSA_APPLIED_IN_PROCESS`。已有人设过岁差时,导入引导不再覆盖;还没人设过时仍用本仓默认 Raman。行运在计算前应用请求的岁差,并在策略里记下 requested 与 applied。Bhava Chalit 与星宿命令把岁差和出生秒传进星盘,Bhava 的宫位时刻带上秒
- 验证:`tests/test_ayanamsa_requested_applied.py`。六种岁差(lahiri、raman、krishnamurti、fagan_bradley、true_citra、true_pushya)在本命、行运、Bhava Chalit、星宿命令上 requested 等于 applied。子进程先设 lahiri 再导入引擎,名字仍是 lahiri
- 防复发:上述测试
- 相关记录:BUG-1265
- 复发自:无
- 修复版本:本分支待发布