fix: restore ayanamsa state and keep tests hermetic
Independent Staging Quality Gate / validate (push) Successful in 21m34s
Independent Staging Quality Gate / publish (push) Successful in 2m1s

This commit is contained in:
Jesse_Chen
2026-09-03 23:22:50 +08:00
parent 027e4b0827
commit c1e3f32a0f
30 changed files with 227 additions and 53 deletions
+15
View File
@@ -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
- 复发自:无
- 修复版本:待发布