From 153c6e99eb1ad967b668ea3f1ff427ca03962850 Mon Sep 17 00:00:00 2001 From: Jesse_Chen Date: Sun, 4 Oct 2026 09:02:53 +0800 Subject: [PATCH] test(report): reader annual-conflict case follows the corrected return instant (BUG-1220) The fictional chart's 2026 return moves 08:48:04 -> 08:41:55 (PyJHora within 0.09 min); the annual Lagna crosses from Taurus 1.3 to Aries 29.6 and the current-year lord becomes Jupiter. Not in the quick gate, so the BUG-1220 acceptance missed it. Full Python suite: 62 failures before and after, identical lists. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8 --- docs/BUG_HISTORY.md | 3 ++- docs/tasks/PROGRESS-annual-return-frame-20261003.md | 6 ++++++ tests/test_report_reader_main.py | 7 +++++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/docs/BUG_HISTORY.md b/docs/BUG_HISTORY.md index effcc2a5..47672c1a 100644 --- a/docs/BUG_HISTORY.md +++ b/docs/BUG_HISTORY.md @@ -16463,7 +16463,8 @@ - 根因:① 目标经度取 `compute_chart_data` 的出生太阳 `degree_raw`,求解器 `_find_solar_return_swe` 用 `_get_sun_lon_jd`(`swe.calc_ut` + `sidereal_flags`)逐步逼近,两套参考系对出生太阳差 15.1″(标准盘)。② 起年盘时用整点分钟调用 `compute_chart_data`,丢了秒。上游 9 月 7–8 日已修,本站引擎同步停在 `f2241463`(9 月 3 日),之后 `solar_return.py` 只按 BUG-1095 补过本地化,漏了这两处(ERR-109 同类)。 - 修复:`calc_solar_return_chart` 中目标经度改为 `_get_sun_lon_jd(birth_jd_ut)`,拿不到才退回出生盘值;返回 `solar_return.target_sun_frame`(`swe_sidereal_flags` / `birth_chart_degree_raw`)。起年盘传 `second=sr_dt_ut.second`。上游同期加的 `position_mode` 等研究回放参数未搬;本地化保留本站实现。 - 验证:`tests/test_solar_return_frame.py`:三例返照 JD 与 PyJHora `drik.next_solar_date` 参照值(只存数字)差 ≤ 0.5 分钟,实测 0.0 / 0.021 / 0.006 分钟;目标经度等于求解器参考系出生太阳(< 1″);年盘时刻与返照差 < 1 秒。换回旧代码这 5 条全部失败。243 张年盘前后对比、v5(三段与基线逐项相同)、快速门、前端失败名单比对见进度记录。咨询两份 golden 用真实引擎重采后逐字节不变(三张盘 2026 年的年盘上升与年主恰好不变,日期只存到天)。 -- 防复发:上述测试;同步上游太阳返照时,核对目标经度与求解器同一参考系(已补进 ERR-109)。 +- 补修(2026-10-04):`tests/test_report_reader_main.py::test_reader_annual_conflict_keeps_both_real_producer_values` 在 `01929bae` 转红(他会话二分发现)。该测试不在快速门里,本单验收只跑了快速门和定向测试,没跑 Python 全量,漏了。虚构盘 2026 年返照从 08:48:04 变 08:41:55(PyJHora 差 0.09 分钟),年盘上升从金牛 1.3° 落到白羊 29.6°,年主由火星变木星;断言按三栏改为木星。补跑 Python 全量:修前 `3c27c38e` 与修后各 62 个失败,名单逐条相同(均为既有环境失败)。 +- 防复发:上述测试;同步上游太阳返照时,核对目标经度与求解器同一参考系(已补进 ERR-109)。改引擎计算值的轮次,验收要跑 Python 全量并与基线比对失败名单,不能只跑快速门。 - 相关记录:BUG-1095、BUG-1026~1028、ERR-109。 - 复发自:无(ERR-109 同类漏同步) - 修复版本:staging `01929bae`(生产待提升) diff --git a/docs/tasks/PROGRESS-annual-return-frame-20261003.md b/docs/tasks/PROGRESS-annual-return-frame-20261003.md index a64bcedc..726a500f 100644 --- a/docs/tasks/PROGRESS-annual-return-frame-20261003.md +++ b/docs/tasks/PROGRESS-annual-return-frame-20261003.md @@ -76,3 +76,9 @@ - 名人生平回测:本机无模型凭据,未跑(本单不改提示词)。 - 真机:部署后在 staging 打开一张年运数据卡或参考版报告,看年运段能出;数值变化只影响约 5% 的年份,不另立真机清单。 + +## 补修(2026-10-04) + +- 他会话报告 `tests/test_report_reader_main.py::test_reader_annual_conflict_keeps_both_real_producer_values` 自 `01929bae` 起失败(不在快速门里,我验收时没跑 Python 全量)。 +- 核实:虚构盘 2026 年返照 08:48:04 → 08:41:55,PyJHora 2461137.529169,修后差 0.09 分钟、修前差 6.1 分钟;年盘上升金牛 1.3° → 白羊 29.6°,只有木星吉照上升,年主火星 → 木星;次年月亮不变。断言按三栏改为(木星,月亮)。 +- 补跑 Python 全量(`pytest tests`):修前 `3c27c38e` 62 失败,修后(含第四批)62 失败,名单逐条相同。 diff --git a/tests/test_report_reader_main.py b/tests/test_report_reader_main.py index ffb69734..c57861d0 100644 --- a/tests/test_report_reader_main.py +++ b/tests/test_report_reader_main.py @@ -285,8 +285,11 @@ def test_reader_annual_conflict_keeps_both_real_producer_values(reader_packet) - # 原值:「太阳返照:火星;Tajika:金星(两者不同)」(当年 / 次年的 Muntha 主星) # 新值:「太阳返照:火星;Tajika:月亮(两者不同)」(当年 / 次年按 Panchadhikari 选出的年主) # 原因:BUG-1214 年主改为 Panchadhikari 选法(任务书 T2);本用例只测冲突两值都保留 - assert (current["year_lord"], later["year_lord"]) == ("Mars", "Moon") - assert "| Varshesha | 太阳返照:火星;Tajika:月亮(两者不同) |" in reader + # 原值:当年年主火星(2026 返照 08:48:04,年盘上升金牛 1.3°,只有火星吉照上升) + # 新值:当年年主木星(返照 08:41:55,与 PyJHora 差 0.09 分钟;年盘上升白羊 29.6°,只有木星吉照上升) + # 原因:BUG-1220 返照时刻改在求解器同一参考系、年盘保留秒;次年月亮不变 + assert (current["year_lord"], later["year_lord"]) == ("Jupiter", "Moon") + assert "| Varshesha | 太阳返照:木星;Tajika:月亮(两者不同) |" in reader assert "两种计算口径给出的年主不同,暂不合并" in reader assert "| Muntha sign | 白羊座 |" in reader assert _leak_hits(reader) == []