Files
Jyotisha/docs/tasks/PROGRESS-full-data-parity-1-fix-20261022.md
T

8.2 KiB
Raw Blame History

PROGRESS:#91 A 段第 1 次打回(只修报告写法)

  • 分支:codex/full-data-parity-1-20261021
  • 范围:修复单 J1–J4。B 段 T4–T10、#93 未做。
  • 状态:本地完成,未推送。

结论

0、1、9 号虚构盘的中英两版里,新六章除下面 4 节以外,每一节都至少有一行真实数据。这 4 节公开资料包没有对应模块,仍印「未判定」,第一行写明原因。

中文附录的年运表列名过滤在 200 张盘上没有丢掉任何列,所以没有补 FIELD_ZH。瑜伽「作用」的粘连过滤也没有删条目。瑜伽「组合」会把英文句子整格印成「未判定」:200 张盘全部中招,去重后 1030 条,源头不改。

J1 十二节

读的是 build_professional_report_reference_packet 放进公开工作表的位置。0、1、9 号盘中英两版都由测试确认至少一行不是「未判定 / Not determined」。

节 公开包位置
Vimsopaka 分盘贡献 strengths_and_scores.vimsopaka 下直接是行星键(分数、分档)
Karakamsha advanced_systems.jaimini.karakamsha 的星座、度数、宫主
Darakaraka advanced_systems.jaimini.darakaraka 的 dk_planet、dk_sign、dk_house、dk_degree、d9_sign、d9_dignity
D9 尊贵 divisional_and_special_charts.varga_full.D9_Navamsa,行星是直接键,尊贵在 _dignity
分盘映射 同上各分盘的 Ascendant.sign。盘名印成 D9 Navamsa 这种,不印带下划线的键。D81 / D108 / D144 不进这张表
D30 状态 varga_full.D30_Trimsamsa 与 _dignity
D30 输入 strengths_and_scores.shadbala.planets.*.sthana_bala.sapta_d30
行星状态输入 advanced_systems.avasthas.<planet>.avasthas 的 Jagrat / Deeptadi 状态,外加度数
定位星终点与循环 advanced_systems.final_dispositors。自循环印主星,多星循环印「循环 / Cycle」
Sudarshana 参考点 divisional_and_special_charts.sudarshana.raw.reference_points
Bhava Chalit 宫心 divisional_and_special_charts.bhava_chalit.raw.boundaries.houses
本命特殊点公式依据 advanced_systems.sahams 里带星座或黄经的点,印名称、星座、度数、黄经。不印公式轨迹
注明日期的行运 timing_and_predictive_systems.transit_multi_reference 的 transit_analysis 与 target_date,星宿来自 advanced_systems.nakshatra_dasha.transit_overlay

四节白名单

公开报告资料包未带这些模块(只在被拿掉的原始阅读结果里)。每节第一行是「公开报告资料包未带此模块」/ This module is not in the public report packet,表内仍是「未判定」。没有为它们改引擎。

节 原因
Navamsha 小运时长 navamsha_dasha 没有复制进公开工作表
五鸟活动 pancha_pakshi 没有复制进公开工作表
Rashi Tulya Navamsa rashi_tulya_navamsa 没有复制进公开工作表
当前多系统收敛 dasa_convergence 的逐领域行没有复制进公开工作表。不再用 convergence_top_domains 充数

J2 / J3

tests/test_full_data_parity_chapters.py 的 test_every_section_has_a_real_cell_except_the_four_public_gaps:0、1、9 号盘中英两版,白名单外每一节至少有一个数据单元格不是「未判定 / Not determined」。表头和分隔行不算。白名单只有上表 4 节,每项带了原因。

test_parity_chapters_go_through_local_conventions:六章先拼进正文,再走 _apply_local_report_conventions。中文源字段「必然」渲染成该函数的结果「可能」;英文字段 divorce 渲染成 relationship strain。

J4 丢弃统计

200 张虚构盘,PyJHora 已屏蔽。汉字为 0。计数在中文渲染里,同一条若被阅读表、资料附录和解释包各走一次,调用次数会高于条目数。条目数是每张盘内按规则和原文去重后再相加。

处 丢掉了什么 条目 调用 受影响盘
年运表列名 无。过滤执行了 800 次(每盘 4 张表),没有列被 FIELD_ZH 拿掉 0 800 次过滤 0
瑜伽「作用」 无。粘连过滤没有删掉任何一条 0 0 0
瑜伽「组合」 非空的组合句整格变成「未判定」 1030 2496 200

年运表优先列本来就有中文名,所以没有新列要补进 FIELD_ZH。reading 这类额外字段到不了这道过滤:优先列已经有值,回退列名单不会启用。

「作用」里的英文整句没有被删。粘连规则只删「汉字紧挨 in/and/or/from/planet/lord」、英文星座名,以及 , : / in )。BVR 规则的 effects 要么是纯中文,要么是纯英文,纯英文留在格子里。本单不改 references/yoga_rules.json。

「组合」变成「未判定」的源头:

  • scripts/yoga_engine.py 的 _eval_semantic_condition:没有中文模板时,用规则里的英文 note 当组合句。规则在 references/yoga_rules.json。按渲染调用次数:bvr_krisanga_yoga 501,bvr_budha_aaditya_yoga 315,bvr_paasa_yoga 282,bvr_kedaara_yoga 162,bvr_vanchana_chora_bheethi_yoga 144,bvr_dehasthoulya_yoga 125,bvr_daama_yoga 126,bvr_kalpadruma_yoga 108,bvr_bahu_sthree_yoga 102,bvr_bhaarathi_yoga 69,bvr_grihanasa_yoga 66,bvr_asubha_yoga 45,bvr_subha_yoga 45,bvr_bandhu_pujya_yoga 54,bvr_guhyaroga_yoga 27(句中有英文星座名),bvr_vallaki_yoga 18,bvr_soola_yoga 12,bvr_rajalakshana_yoga 9,bvr_kalaanidhi_yoga 3。
  • 没有 rule_id 的 283 次来自 scripts/yogas_doshas.py:calc_raj_yogas 与 calc_dhana_yogas 写出 H*_Lord(...) in H* 这种英文组合句。句子里的行星随盘变化,这里不列具体星。

这些句子是中文报告在用的英文字段。本单只计数,不改规则文件,也不改这两个函数。

阅读页上的英文星座名

frontend/src/lib/personal-report-generation.ts 的 assembleReportDocumentV2。它在组装 v2 报告文档时,把 D1 事实里的英文 sign 写进「本命基础」的 narrative,以及 keyFactors 里「第 N 宫落 {sign}」;宫内对象还是英文行星标识,两处句子加这一列,改一处星座映射盖不住。

阅读页 frontend/src/components/personal-report/personal-report-page.tsx 渲染的是 Markdown(PersonalReportMarkdownView)、盘图和事实表,不渲染这段 natalFoundation。frontend/src/lib/report-public-projection.ts 的 foundationSection 只是把它放到接口文档上。导出图盘列表的 houseLine 已经用中文星座名。本单不改前端,留给 Claude。

测试

解释器:G:\Ferti\Jyotisha\.worktrees\agent-loop\.venv\Scripts\python.exe。PYTHONUTF8=1。虚构盘助手已屏蔽 PyJHora。未跑快速门、全量 pytest、前端全量 npm test、next build。未改前端,未跑 tsc / lint。

命令 退出码
pytest tests/test_full_data_parity_chapters.py -q --tb=line 0(7 项,约 61 秒)
pytest 附录、英文冒烟、test_report_english_edition、test_report_full_data_fix、test_full_data_domain_reader、test_python_hygiene_budget、test_api_server_growth_contract、test_runtime_jhora_import_scan、test_sidereal_nutation_frame、test_rashi_dashas_native、test_bhava_bala_formal、test_year_lord_blocked_no_fallback、test_year_lord_basis_label、test_repo_privacy_markers 0(172 项,约 925 秒)
pytest tests/test_report_english_sweep.py -q --tb=line 0(200 张,约 1293 秒;汉字 0)

隐私标记在写完本文之后再跑一次。

偏离

  • 没有推送,没有设上游,没有改标签,没有发 Gitea 评论。
  • 没有改 scripts/jyotish_api_server.py、scripts/jaimini.py、冻结打分文件、references/yoga_rules.json。没有提高 ROOT_PY_BUDGET。
  • 没有新的 BUG 编号。BUG-1416、BUG-1417 保持不变。
  • 年运列和瑜伽「作用」的实测丢弃是 0,所以没有补中文列名,也没有改瑜伽英文源。
  • 组合句的 1030 条是「非空原文被印成未判定」的盘内去重数,比「句中正好有 in/and/or/from/planet/lord」的范围稍宽,多出来的是纯英文说明句。调用次数 2496 是同一条被多处渲染重复计入。