完整数据版补齐(三):「独立年度方法参考」照上游,正式环境调用 PyJHora #93

Open
opened 2026-10-21 23:23:52 +08:00 by Claude · 1 comment
Collaborator

产品 10-21 决定:照上游 customer-export/registry/delivery_timing_supplement.py 的 _annual_observation_lines 实现(上游归档分支 codex/customer-export-frozen-20261016)。正式环境安装 PyJHora,报告里印它算出的三张表:Mudda 年度大运(各起点口径)、Patyayini、Tajika 瑜伽。表头注明「来源:PyJHora」,本节和前面我们自己引擎算的年运分开读,不替换。中英两版都要有。

  • 推翻「PyJHora 只作外部对照、不进生产」(BUG-1273 / 特殊上升点原生化时的约定)。许可证(AGPL)风险由产品承担,已知情。
  • 硬红线 1:装上 PyJHora 之后,除新增这一节以外,现有所有输出不得变化。tajika.py、_compute_one_chart.py 等检测到 PyJHora 就换路径的代码,必须保持原路径;只有本节显式调用 PyJHora。验收:同一批盘「装 / 不装」两套全量 pytest 逐条一致,报告 Markdown 除本节外逐字节相同;校正冻结身份与封存回放逐项相同。
  • 硬红线 2:固定 PyJHora 版本号;不得顺带升级或更换 pyswisseph,星位一律不变。
  • PyJHora 调用失败时,本节对应的表写「未获得结果」,不得让整份报告失败。
  • 量生产镜像大小、内存占用,以及单份报告生成时长的增量,写进进度记录。服务器是 2 核 4 GB。
  • 同时需要在 requirements.txt / 镜像里加入依赖,门禁会构建新镜像;不改 workflow。
  • 顺序:#91 合入之后(三单改同一批渲染文件)。
**产品 10-21 决定**:照上游 `customer-export/registry/delivery_timing_supplement.py` 的 `_annual_observation_lines` 实现(上游归档分支 `codex/customer-export-frozen-20261016`)。正式环境安装 PyJHora,报告里印它算出的三张表:Mudda 年度大运(各起点口径)、Patyayini、Tajika 瑜伽。表头注明「来源:PyJHora」,本节和前面我们自己引擎算的年运分开读,不替换。中英两版都要有。 - **推翻**「PyJHora 只作外部对照、不进生产」(BUG-1273 / 特殊上升点原生化时的约定)。许可证(AGPL)风险由产品承担,已知情。 - **硬红线 1**:装上 PyJHora 之后,除新增这一节以外,现有所有输出不得变化。`tajika.py`、`_compute_one_chart.py` 等检测到 PyJHora 就换路径的代码,必须保持原路径;只有本节显式调用 PyJHora。验收:同一批盘「装 / 不装」两套全量 pytest 逐条一致,报告 Markdown 除本节外逐字节相同;校正冻结身份与封存回放逐项相同。 - **硬红线 2**:固定 PyJHora 版本号;不得顺带升级或更换 `pyswisseph`,星位一律不变。 - PyJHora 调用失败时,本节对应的表写「未获得结果」,不得让整份报告失败。 - 量生产镜像大小、内存占用,以及单份报告生成时长的增量,写进进度记录。服务器是 2 核 4 GB。 - 同时需要在 `requirements.txt` / 镜像里加入依赖,门禁会构建新镜像;不改 workflow。 - 顺序:#91 合入之后(三单改同一批渲染文件)。
Claude added the agent/待规划agent/试点 labels 2026-10-21 23:23:55 +08:00
Claude added the agent/规划中 label 2026-10-22 00:23:19 +08:00
Author
Collaborator

结论:任务书已写好,交给 Grok;等 #91 合入后开工。有一点请你确认(不影响排队)。

查的时候实测出三个风险,任务书都已写明对策:

风险 实测 对策
装上 PyJHora 就会「自己启动」的旧代码 仓库里有 7 处检测到 PyJHora 就换路径,其中 3 处会直接改变现有输出:每份报告的年运重放、对话里的引擎诊断、高严谨校正的三引擎比对 7 处全部钉死在现在的路径上,装与不装输出逐字节相同
同一进程里调 PyJHora 会改坏我们的星位 调一次 PyJHora 后,同一时刻的月亮位置偏了 1.45°(它把岁差口径改掉了),还会改星历文件路径 PyJHora 只在单独的子进程里跑;测试检查主进程从不加载它、星位不变
镜像与耗时 镜像约多 95 MB;三年一次算完本机约 7 秒、60 MB 内存,2 核服务器预计 10–14 秒 由 Grok 在生产规格下量好写进进度

PyJHora 不会动我们的 pyswisseph(它不声明依赖),任务书仍要求新旧镜像核对版本号一致。

请你确认(D6): 上游调用 PyJHora 时有两处输入用错了,实测:

  • 传的是世界时而不是出生地当地时间:年度回归时间差 8 小时,第一段 Mudda 大运差约 8.5 天(东八区的盘);
  • Patyayini 和 Tajika 两张表算到了前一年。

我默认按正确的输入做(当地时间、所请求的那一年),表头仍写「来源:PyJHora」。如果你要求和上游逐字一致(连错一起照搬),回一句「照上游原样」。

<!-- agent:claude plan brief=docs/tasks/TASK-full-data-parity-3-20261022.md branch=codex/full-data-parity-3-20261022 base=2806bd5b75bd701e62e837fae70eda87d6d796ac --> **结论:任务书已写好,交给 Grok;等 #91 合入后开工。有一点请你确认(不影响排队)。** 查的时候实测出三个风险,任务书都已写明对策: | 风险 | 实测 | 对策 | | --- | --- | --- | | 装上 PyJHora 就会「自己启动」的旧代码 | 仓库里有 7 处检测到 PyJHora 就换路径,其中 3 处会直接改变现有输出:每份报告的年运重放、对话里的引擎诊断、高严谨校正的三引擎比对 | 7 处全部钉死在现在的路径上,装与不装输出逐字节相同 | | 同一进程里调 PyJHora 会改坏我们的星位 | 调一次 PyJHora 后,同一时刻的月亮位置**偏了 1.45°**(它把岁差口径改掉了),还会改星历文件路径 | PyJHora 只在单独的子进程里跑;测试检查主进程从不加载它、星位不变 | | 镜像与耗时 | 镜像约多 95 MB;三年一次算完本机约 7 秒、60 MB 内存,2 核服务器预计 10–14 秒 | 由 Grok 在生产规格下量好写进进度 | PyJHora 不会动我们的 `pyswisseph`(它不声明依赖),任务书仍要求新旧镜像核对版本号一致。 **请你确认(D6):** 上游调用 PyJHora 时有两处输入用错了,实测: - 传的是世界时而不是出生地当地时间:年度回归时间差 8 小时,第一段 Mudda 大运差约 8.5 天(东八区的盘); - Patyayini 和 Tajika 两张表算到了**前一年**。 **我默认按正确的输入做**(当地时间、所请求的那一年),表头仍写「来源:PyJHora」。如果你要求和上游逐字一致(连错一起照搬),回一句「照上游原样」。
Claude added agent/待执行 and removed agent/待规划agent/规划中 labels 2026-10-22 00:38:23 +08:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: root/Jyotisha#93