fix: restore ayanamsa state and keep tests hermetic
This commit is contained in:
@@ -7904,3 +7904,18 @@
|
||||
- 相关记录:BUG-511
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
## BUG-513 | Gulika 计算泄漏进程级岁差模式,Raman 请求回执与后续计算可能漂移
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-03
|
||||
- 最近更新:2026-09-03
|
||||
- 影响面:`scripts/gulika.py`、`scripts/jyotish_api_server.py`、`scripts/prashna_context.py`
|
||||
- 用户现象:请求选择 Raman 时 Gulika 曾按其他岁差返回或污染后续恒星黄道计算;同一常驻进程的下一次计算可能继承错误模式。
|
||||
- 触发条件:Gulika / Upagraha 计算在已设置另一岁差的进程内调用 `houses_ex(..., FLG_SIDEREAL)`。
|
||||
- 根因:Swiss Ephemeris 岁差模式是进程全局状态;Gulika 设置请求岁差后没有恢复调用前模式,API 与 Prashna 调用方也没有始终传入本次请求岁差。
|
||||
- 修复:`ayanamsa_utils.temporary_ayanamsa` 在 `finally` 恢复前一模式;Gulika 的恒星上升计算统一使用该上下文;API 与 Prashna 显式透传并回执实际岁差。
|
||||
- 验证:Raman→Lahiri、Lahiri→Raman 两向同进程回归测试均保持调用前 Moon 黄经;模式设置所有权测试锁定只有 `ayanamsa_utils.py` 可直调 `set_sid_mode`;API Raman smoke 回执为 `raman` / `Raman`。
|
||||
- 防复发:临时切换进程级岁差必须通过 `temporary_ayanamsa`;业务模块不得直接调用 `set_sid_mode`。
|
||||
- 相关记录:BUG-511、BUG-512
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
Reference in New Issue
Block a user