docs(tasks): full data parity part 1 brief (agent loop, issue #91)
Stage A renders what the engine already computes (71 appendix sections in 6 chapters, zh appendix from its own renderer, export sign names); stage B ports the missing annual, dasha sub-period and Yogi point calculations on our sidereal frame. No size cap per product; overturns fix2 F5. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
8c63f31f12
commit
f90020efda
@@ -516,3 +516,4 @@
|
||||
| `TASK-report-export-dialog-polish-20261021.md` | — | #90 导出弹窗:英文不可用说明改顶部浮层(每次打开一次);选中态描边 / 圆点 / 勾选框用主题色、底色中性(推翻 DESIGN「Selected states use canvas-muted + ink」,BUG-1078 主语保留) | 待领取(可与 #89 并行) | `codex/report-export-dialog-polish-20261021` |
|
||||
| `TASK-report-english-han-leak-20261021.md` | `PROGRESS-report-english-han-leak-20261021.md` | #89 个人报告英文版约 4 成整份丢弃:漏译汉字源头补英文孪生字段、修吃空格;200 张固定种子回归 + 快速门 smoke(复发自 BUG-1272);中文逐字节不变 | 待领取(最先做;#91/#92 在后) | `codex/report-english-han-leak-20261021` |
|
||||
| `TASK-chart-dasha-yogini-20261021.md` | — | #88 星盘页大运右栏切换 Chara / Yogini,Yogini 补小运(按比例,内部核对,页面注明未经外部软件核对);Ashtottari 另立单(起运表与 PyJHora 8/12 宿不一致) | 待领取(等 #86、#87 合入) | `codex/chart-dasha-yogini-20261021` |
|
||||
| `TASK-full-data-parity-1-20261021.md` | — | #91 完整数据版补齐(一):A 段渲染(中文附录改中文源、71 小节归 6 章、导出星座名)→ B 段引擎(Yogi 点、标准大运子运、Kalachakra 简化子运、年运三年全展开、36 个月星历、解释补长);不设大小上限 | 待领取(等 #89 合入;T3 与 #90 串行) | `codex/full-data-parity-1-20261021` |
|
||||
|
||||
@@ -0,0 +1,203 @@
|
||||
# 任务书:完整数据版补齐(一)——年运、大运表与原始数据附录对齐上游交付版(agent 循环 issue #91,2026-10-21)
|
||||
|
||||
## 基线
|
||||
|
||||
- 写作基线:`origin/staging` = `bd3ce0e7b`。**开工时以 #89(英文漏译,BUG-1272 复发)合入后的 `origin/staging` 为准**:#89 改的是同一组渲染文件(`scripts/pl9_full_data_export.py`、`scripts/pl9_reader_english*.py`),并带来 200 张固定种子虚构盘的英文汉字回归测试,本单复用它。#89 未合入不得开工。#90(导出弹窗)也动 `frontend/src/lib/report-export-*`,本单 T3 改同一组文件,与 #90 串行,后开工者先 `git merge origin/staging`。
|
||||
- 分支:`codex/full-data-parity-1-20261021`;工作树:`.worktrees/full-data-parity-1-20261021`。执行方 **Grok(Windows + Docker)**,只推这个分支。
|
||||
- 本单分 **A 段(只动渲染)、B 段(动引擎)**,同一分支、按第 6 节顺序提交(见第 5 节)。
|
||||
- 上游参照(只读,放仓库外):
|
||||
- 交付版渲染:`https://github.com/732642856/yinduzhanxing.git` 分支 `codex/customer-export-frozen-20261016`(`1d549fe9`)的 `customer-export/registry/`。只读 `delivery_*.py`、`ashtakavarga_delivery.py`、`render_customer_snapshot.py` 的渲染函数。**不得复制** `subjects.json`、`customer_case.py`、`subject_guard.py`、`export_customer_bilingual.py`、`source_*` 审计文件;该分支 README 写明冻结快照含真实个案资料,冻结引擎本体未公开。
|
||||
- 计算模块与解释生成器:同仓库 `main`(`258e08e3`,10-18 起无新提交)。
|
||||
- 关联:BUG-1272、BUG-1275(真恒星口径)、BUG-1210(不回本地加减分)、BUG-1312(中文残留英文)、BUG-1393 / 1283(Niryaana Shoola)、BUG-1205(落陷取消不叫 Raja)、BUG-1282(年运卡 `sr_chart`);`TASK-report-full-data-fix-20261008`、`TASK-report-full-data-fix2-20261008`(F5 被本单推翻,见 D4);`TASK-rashi-dashas-native-20261008`;后续单 #92 `TASK-full-data-parity-2-20261021`、#93(独立年度方法参考)。
|
||||
|
||||
## 1. 现状实证
|
||||
|
||||
### 1.1 量测(Claude,Linux,屏蔽 PyJHora 模拟生产,`bd3ce0e7b`)
|
||||
|
||||
虚构盘(1985 年,北京,非真人),走 `build_professional_report_reference_packet` → `render_full_data_markdown`,与线上同一路径:
|
||||
|
||||
| 项 | 中文 | 英文 |
|
||||
| --- | --- | --- |
|
||||
| Markdown 字符数 | 411,454 | 820,922 |
|
||||
| UTF-8 字节 | 846,885 | 821,647 |
|
||||
| 渲染耗时 | 7~15 s(首次含导入) | 1~2 s |
|
||||
| 排盘 + 资料包 | 3.3~7 s | 同一份 |
|
||||
|
||||
另 8 张随机虚构盘(固定种子)只出中文,端到端每张 10.1~11.6 s。上游英文交付版(产品 10-21 上传,真实个人资料,只统计字符数,不入库)共 **4,687,328** 字符;本单范围约 0.9 M,#92 范围约 3.1 M。
|
||||
|
||||
### 1.2 小附录:74 节,不是 66
|
||||
|
||||
上游英文版在「Research High-Division Raw Data」之后,除 8 个大章外有 **74** 个二级标题、38.8 万字符(66 是把十来个大运附属节并进「大运附表」后的口径)。试跑方法:把我方资料包补上 `raw_full_reading.modules`(= 我方 full-reading 的 86 个模块),直接调用上游 registry 的渲染函数。上游读到的 35 个模块名我方全部存在。
|
||||
|
||||
| 类 | 含义 | 节数 | 本单处理 |
|
||||
| --- | --- | --- | --- |
|
||||
| A | 数据我方已算好,渲染器没出 | 60 | 做(T2) |
|
||||
| B | 数据在,字段名或形状不同 | 6 | 做(T2) |
|
||||
| C | 我方没算 | 5 | 做(T6) |
|
||||
| X | 即 BUG-1210 删掉的本地加减分(Bhava Bala Relative Score Components / Score Extremes) | 2 | **不做**(D6) |
|
||||
| E | Goel Jaimini Strength and Special-Point Evidence,源码不在归档 | 1 | **不做**(D7) |
|
||||
|
||||
另:「Alternative Divisional Calculation Profiles」「Research High-Division Raw Data」(D81 / D108 / D144 等)**移到 #92**(D11)。
|
||||
|
||||
B 类明细:
|
||||
|
||||
| 上游节 | 我方现状 |
|
||||
| --- | --- |
|
||||
| Navamsha Dasha AD Duration Contract | 我方 `navamsha_dasha.periods`,上游读 `major[].antardasha[].duration_months` |
|
||||
| Current Dasha Convergence by Domain | 我方 `dasa_convergence.domain_activations`,上游读 `domain_evaluations` |
|
||||
| Yoga Participants and Timing Links | 上游读 `advanced_systems.yoga_interpretation_pack.pages`;我方在渲染时由 `pl9_interpretation_packs.attach_full_data_interpretation` 挂上 |
|
||||
| Bhava Chalit Planet Placements | 路径不同(`d1_rasi_bhava.bhava_chalit`) |
|
||||
| Bhava Bala Three-Component Alternative | 我方正式三分量在 `modules.bhava_bala.houses`(BUG-1210 / 1385) |
|
||||
| House Components and Physical Coordinates | 三分量同上;Kranti / 速度上游读 `kranti_local` / `speed_display_local`,我方 `pl9_p33_declination_contract` 在资料包里为空,先查 BUG-1199 修好的 Kranti 列取自哪里 |
|
||||
|
||||
C 类明细:
|
||||
|
||||
| 上游节 | 缺什么 |
|
||||
| --- | --- |
|
||||
| Jaimini Yogi and Ava Yogi | **潜在缺陷**:`scripts/jyotish_engine.py` 组装 jaimini 时 `from yogi_sphuta import build_yogi_sphuta_local`,我方**没有这个文件**,`ModuleNotFoundError` 被包成 `status: blocked`,每张盘都如此(上游 main 有,195 行,不导入 jhora) |
|
||||
| Annual Return House Framework | `solar_return.annual_houses` 不产出 |
|
||||
| Tripataki Chakra Detail | 只有 `solar_return.tri_pataka` 三旗摘要;上游 `tripataki_chakra.py`(108 行)出星座格与 vedha 行 |
|
||||
| Natal / Annual Saham Formula Trace | `sahams.formula_traces` 不产出 |
|
||||
|
||||
上游 `structural_markdown` 英文在我方数据上报 `Untranslated structural field: verdict_label`:我方有上游词表没覆盖的字段,必须补全中英字段名。
|
||||
|
||||
### 1.3 主章与大章
|
||||
|
||||
| 上游章节(字符) | 我方(字符) | 根因(按符号定位) |
|
||||
| --- | --- | --- |
|
||||
| Annual Varshaphala and Tajika(131,265) | 41,654 | 我方渲染器 `pl9_reader_export` 已会读 `monthly_chart_pack`、`lifetime_annual_chart_pages`、`annual_chart_series_pack`、`pl9_annual_dasha_results`、`normalized_tables`,但我方 `scripts/annual_tajika_pack.py`(780 行)**不产出这些键**,节被静默跳过。上游同名文件 2,788 行,多 40 个函数:`_monthly_chart_pack`(月返照=月段)、`_lifetime_annual_chart_pages`(年龄段)、`_annual_chart_series_pack` / `_local_eight_year_overview`、`_pl9_annual_dasha_results`、`_normalized_tables`、`_native_patyayini_dasha`、`_native_tithi_pravesh`(依赖 `tithi_pravesh.py`,236 行,我方没有)、`_annual_visual_panel` 等。`_normalize_pyjhora_*`、`external_engine_comparison` 来自 PyJHora 回放,不搬 |
|
||||
| Annual Chart Numeric Data(189,395) | 试跑 1,075 | 依赖 `pl9_annual_visual_panels`,我方没有 |
|
||||
| Standard Dasha Tables(127,598 / 1,792 表行) | 52,410 / 894 | `dasha_master_pack.families` 15 个体系**全部只有主运**(逐体系核对,子运 0 条)。Narayana、Ashtottari、`source_bounded_child_periods` 已有子运规则,没进 master pack。Kalachakra:我方 `scripts/kalachakra_dasha.py` 是旧版,只有主运;上游有 `_build_subperiods`、`_attach_recursive_subperiods` |
|
||||
| Chara Dasha Period Durations(111,160) | 无 | A 类:`modules.jaimini.chara_dasha` 有 12 / 144 / 1,728 行,试跑 110,198 |
|
||||
| Narayana Method Comparison(28,876) | 无 | B 类:`narayana_dasha.method_comparison` 在,上游函数报 `KeyError: 'direction'` |
|
||||
| Three-Year Predictive Ephemeris(56,132) | 无 | `three_year_predictive_ephemeris_pack.months` 只有慢星,且从目标年 1 月起;`kp_monthly_report.months` 有 9 星但为 KP 口径。已有 `scripts/kp_monthly_transits.py` 可按报告口径逐月算 |
|
||||
| Saturn and KP Tables(7,687) | 2,522 | 缺 Dhayya / Laghu Kalyani / Kantaka 结果段与「KP 原版细格」;数据 `sade_sati`、`kp` 已有 |
|
||||
| Planets, Nakshatras and Houses(8,970) | 英 4,608 / 中 1,708 | `pl9_interpretation_packs.build_graha_interpretation_pack` 每星只出 6 句固定骨架(如「六维力量合计为未列出」——合计取不到);上游逐星有传统段落 |
|
||||
| Bhavesh 宫主逐宫解释 | 附录 6,352(英) | `build_bhavesh_interpretation_pack` 同样只出骨架句 |
|
||||
| Independent Annual Method Reference(16,004) | 无 | 内容是 PyJHora 回放(上游写明 `Source: PyJHora`)。**本单不做,另立 #93**(D5) |
|
||||
| Goel Jaimini Strength(48,057) | 无 | 冻结引擎专有,**不做**(D7) |
|
||||
|
||||
### 1.4 中文乱句、英文丢否定、空表与英文星座名
|
||||
|
||||
| 现象 | 位置 | 根因 |
|
||||
| --- | --- | --- |
|
||||
| 「时蛇煞: 第5宫条件7planet in」 | 附录「Dosha 与行运摘要」 | 源字段 `yogas_doshas.kaal_sarp_dosha.summary` 是中文「部分Kaal Sarp Dosha——5/7颗行星在轴线之间」。英文附录 `_render_pl9_ai_density_raw_data_markdown_en`(Dosha 表)原样印 `summary`,英文清理器删汉字后剩 `houses 5/7 condition planet in`;**中文附录不是从中文源字段出的**:`render_full_data_markdown` 中文分支把**英文附录**交给 `_sanitize_pl9_ai_density_markdown` 短词回译。原意「7 颗中 5 颗」变成「第5宫条件7」 |
|
||||
| 「火星 in 12 巨蟹座, : low」 | 同表 Mangal 行 | 同一回路。**更严重**:无火星煞的盘源文「无Mangal Dosha(Mars不在煞宫)」,英文印 `Mangal Dosha(Mars in )`,中文印「火星婚姻煞(火星 in )」,**「无」丢了,读起来像有煞**。「Detected / phase」列取 `present` / `detected` / `status`,真实键是 `has_dosha` / `is_active`,整列空 |
|
||||
| 「Raja瑜伽 … 火星 and 太阳 together in 第10」 | 附录「可用瑜伽」,及正文个别瑜伽组合句 | 同一回路;8 张随机虚构盘每张 31~46 行,265 行在「可用瑜伽」 |
|
||||
| 回译之外的现成实现没用上 | `pl9_full_data_export.py` | `_render_pl9_ai_density_raw_data_markdown_zh` **从未被调用** |
|
||||
| 「行星友敌关系矩阵」只有标题、没有表(中英都是) | 附录 | `_render_pl9_ai_density_raw_data_markdown_en` 遍历 `planetary_friendship` 的键当行星,实际结构是 `{status, method, rows: [...]}`,行全被跳过 |
|
||||
| 中文导出里「第 1 宫 · Leo:…」 | 导出 Markdown 的「D1 北印度盘」「月亮参考盘」文字列表(排在最后一章「Dosha 与行运摘要」之后,所以产品看到的是这一章) | `frontend/src/lib/report-export-blocks.ts::houseLine` 中文分支直接用 `house.sign`;`toNorthIndianChart`(`report-chart-block.ts`)给出的是英文 `SIGNS`。引擎正文本身(图盘围栏外)9 张虚构盘英文星座名为 0 |
|
||||
|
||||
## 2. 根因
|
||||
|
||||
1. 完整数据版只移植了上游 `pl9_ai_density` 主体(`23be1807`),没有移植上游交付版在主体之后追加的 registry 附录;我方年运资料包停在旧版,渲染器读的键没人产出,节被静默跳过。
|
||||
2. 中文附录用「英文附录 → 短词回译」生成,源字段本身是中文时两次转换丢字、丢否定;附录渲染对资料形状的假设与实际不符时(友敌矩阵)静默出空表。
|
||||
3. `yogi_sphuta.py` 漏搬,导入失败被包成 `blocked`,测试只看有没有这个键。
|
||||
4. 导出的图盘文字列表在中文版没有用中文星座名。
|
||||
|
||||
## 3. 决策记录(产品负责人 2026-10-21)
|
||||
|
||||
| # | 决定 |
|
||||
| --- | --- |
|
||||
| D1 | issue 列出的各章补到与上游交付版同等展开,范围以本表为准 |
|
||||
| D2 | **数值一律用我方引擎(BUG-1275 之后的真恒星口径),不搬上游视位置算法**;与上游数值不同的,在 PROGRESS 逐项列原因 |
|
||||
| D3 | 中英两版都要有,**英文汉字为 0**(复用 #89 的 200 盘扫描) |
|
||||
| D4 | **推翻 `TASK-report-full-data-fix2-20261008` F5**「Patyayini、Tripataki、月返照、八年总览、生命周期年度返照若我方无数据……不补算」,以及 `TASK-report-full-data-fix-20261008` 第 22 行「Patyayini 不补算」。本单用我方原生计算补上;PyJHora 回放部分仍不搬 |
|
||||
| D5 | 「独立年度方法参考」**本单不做**,已另立 #93(照上游调用 PyJHora,排在本单之后);本单不写占位 |
|
||||
| D6 | BUG-1210 对应的两节(Bhava Bala Relative Score Components / Score Extremes)**不做** |
|
||||
| D7 | Goel Jaimini Strength and Special-Point Evidence **不做** |
|
||||
| D8 | 年运:**当年 + 后两年,三年全部展开**,每一年都有:年盘与年主依据、Muntha、Mudda 与 Patyayini(原生)、月返照(月段)、Tithi Pravesha、Sahams(含公式轨迹)、Tajika 相位 / 瑜伽 / 力量 / Tripataki、年盘整宫框架、年度大运结果、年度图盘数值;年龄段(生命周期年返)与出生地八年总览各出一次,现居地总览只在有现居地时出 |
|
||||
| D9 | 三年逐月星历:**从报告日期所在月起 36 个月**,报告口径 9 星;另列 KP 口径表与五级 Vimshottari 月采样 |
|
||||
| D10 | 74 个小附录归为 **6 章**(第 6 节 T2 的分组表),中英文章节一一对应、顺序一致 |
|
||||
| D11 | D81 / D108 / D144 研究型分盘与「其他分盘口径的计算数据」**移到 #92**,同样标研究口径;本单不动已有的分盘数值表 |
|
||||
| D12 | 逐星解释与宫主逐宫解释补到上游篇幅,按 10-08 的写法:传统段落用「可能」口吻,叠加我方功能吉凶 v2 |
|
||||
| D13 | Kalachakra 子运明细**移入本单**,标注「简化模型」(英文 Simplified model),不改现有主运 |
|
||||
| D14 | **不设大小上限**,只记录字符数、字节数、生成时长;碰到前端等待(`ENGINE_TIMEOUT_MS` 180 s)或存储 / 接口硬上限才停下回报,不得截断 |
|
||||
| D15 | 顺带修:空的行星友敌关系矩阵;中文附录改用现成的 `_render_pl9_ai_density_raw_data_markdown_zh`,不再回译;搬 Yogi 点模块 `yogi_sphuta`;中文导出图盘列表的英文星座名改中文 |
|
||||
|
||||
## 4. 硬红线
|
||||
|
||||
1. **口径**:所有新经度一律经我方排盘函数取得(与 `tests/test_sidereal_nutation_frame.py` 同框架:Swiss Ephemeris 星历 + 真岁差,等价 `FLG_SIDEREAL`)。上游模块里的 `FLG_MOSEPH`、`FLG_TRUEPOS`、`longitude_profile` / `position_mode='apparent'`、交点偏移一律改走我方函数。新增测试:每个新计算模块在出生时刻取到的日、月经度与 `core_chart.planets.*.degree_raw` 差 ≤ 1e-6°。
|
||||
2. **PyJHora**:运行时不得导入 `jhora`(`tests/test_runtime_jhora_import_scan.py`);`*_pyjhora_*`、`external_engine_comparison`、`pyjhora_canonical_adapter.py`、`specialized_dasha_external_replay.py` 不搬。
|
||||
3. **增长冻结**:不改 `scripts/jyotish_api_server.py`(报告仍走 `/api/professional_report_reference`);`tests/test_api_server_growth_contract.py` 不放宽。
|
||||
4. **根目录文件数已满**:`scripts/*.py` 现为 448 个 = `tests/test_python_hygiene_budget.py` 的 `ROOT_PY_BUDGET`。新渲染代码进 `scripts/report_render/`;新计算模块(`yogi_sphuta`、`tithi_pravesh`、`tripataki_chakra` 等)进新子包(例如 `scripts/annual_native/`),引擎里的导入跟着改。不得调高预算。开工时若数字已降,仍优先放子包。
|
||||
5. **不新增静默吞错**:`SILENT_EXCEPT_BUDGET = 1` 只给 `classical_astrology.py`。失败记日志并带具体原因,不得把 `ImportError` 包成 `blocked` 了事。
|
||||
6. **引擎输出会变**:验收必须**全量 pytest 与开工基线逐条比对**;改既有断言写「原值 / 新值 / 原因」三栏。
|
||||
7. **我方报告口径全部保持**:`_apply_local_report_conventions`、BUG-1199~1229、BUG-1205、BUG-1210、BUG-1282、BUG-1312 卫生门、BUG-1393。搬来的模板逐条核:不断言死亡、寿命、疾病诊断、离婚、流产、不孕;不写「再婚 / 几段关系 / 早夭」;吉凶以我方功能吉凶 v2 为准;主题写「可能突出」,不写必然。
|
||||
8. **中英各自从源字段生成**:中文不得由英文回译,英文不得靠删汉字;每个字段名、单位、枚举值都有中英两套标签,缺标签测试失败,不得印原始键名。
|
||||
9. **对话与校正不受影响**:`read_full_data_domain` 经卡片选择后的对话卡对 3 张固定虚构盘逐字节不变;生时校正打分 golden 不变。
|
||||
10. **不截断(D14)**:没有大小上限,但碰到 180 s 前端等待或存储 / 接口报错,就停下推分支、PROGRESS 写实测,不得删行、抽样或降精度。
|
||||
11. 不动数据库结构与迁移;不改 `.gitea/`;不推 `main`。
|
||||
12. **隐私**:只用虚构盘与公开名人盘;不复制上游个案文件;PROGRESS 与 Bug 历史实测段只写「虚构盘」。
|
||||
|
||||
## 5. 分段与提交顺序(一个分支)
|
||||
|
||||
- **A 段(只动渲染与前端导出,引擎数值不变)**:T1 → T2 → T3,一条任务一个提交。做完推分支,PROGRESS 标「A 段完成」,Claude 验收后合入 staging。
|
||||
- **B 段(动引擎)**:先 `git merge origin/staging`(不 rebase 已验收的提交),再 T4 → T5 → T6 → T7 → T8 → T9 → T10,一条任务一个提交。
|
||||
|
||||
## 6. 任务分解
|
||||
|
||||
| # | 段 | 内容 | 验收标准 |
|
||||
| --- | --- | --- | --- |
|
||||
| T0 | A | 盘点:上游 82 个二级标题(74 小节 + 8 大章)及标准大运表、Saturn/KP、年运章、逐星与宫主解释的三级标题,逐一对应我方「已有 / A / B / C / X / E / 移 #92 / 移 #93」与源字段路径,核对第 1 节分类 | PROGRESS 一张表;与本任务书不同的行单列并写原因 |
|
||||
| T1 | A | D15 的渲染部分:中文附录改用 `_render_pl9_ai_density_raw_data_markdown_zh`(补齐到与英文附录同节同序),删去回译路径;Dosha 摘要、可用瑜伽表中英文都从**结构化字段**出(`has_dosha` / `type` / `rahu_house` / `ketu_house` / `is_active` / `phase` 等),没有就写「未判定 / Not determined」;正文瑜伽组合句中文取中文源;行星友敌矩阵读 `rows`(天然友 / 敌 / 中性、临时、复合)。中文卫生门加两条:图盘围栏外英文星座名为 0;汉字紧邻 `in / and / or / from / planet / lord` 以及 `, :`、`in )` 为 0 | 200 盘扫描:中文两条新门均为 0,英文汉字 0;无火星煞的盘中英都写「无 / No」;部分时蛇煞的盘写出「7 颗中 5 颗」或等价英文;友敌矩阵 9 行非空;BUG_HISTORY 新编号 |
|
||||
| T2 | A | 小附录 71 节(A 类 60 + B 类 6 + C 类 5 的渲染位,C 类数据到 T6 才有)+ Chara 时长 + Narayana 对照 + Bhrigu 推进序列,按我方字段重写渲染(`scripts/report_render/`),按 D10 归 6 章,见下方分组表。C 类在 T6 之前不出现,不写占位 | 3 张固定虚构盘中英文:6 章标题中英一一对应、顺序相同;A、B 类每节出现且非空,每节一个结构测试(表头 + 至少一行);字段标签全覆盖测试;Narayana 两种口径分列不拼接 |
|
||||
| T3 | A | D15 前端:`report-export-blocks.ts::houseLine` 中文用中文星座名(`SIGN_ZH`),英文不变;顺查导出与阅读页其他中文出口有无同类问题 | `report-export-blocks.test.ts` 加断言:中文图盘列表不含任何英文星座名,英文含;`tsc`、`lint` 过;PROGRESS 记 A 段生成时长与中英大小 |
|
||||
| — | — | **A 段交付点**:推分支,PROGRESS 标明 | — |
|
||||
| T4 | B | 搬 `yogi_sphuta` 进子包并接线(修潜在缺陷) | 虚构盘 `jaimini.yogi_avayogi_local.status` 不是 `blocked`;红线 1 经度测试;「Jaimini Yogi and Ava Yogi」中英出现;BUG_HISTORY 新编号 |
|
||||
| T5 | B | 标准大运表全量:凡我方模块已有出处子运规则的体系(Narayana、Ashtottari、`source_bounded_child_periods` 覆盖的体系)把子运写进 `dasha_master_pack` 并出表;**Kalachakra 子运与次小运**(D13)搬上游 `_build_subperiods` / `_attach_recursive_subperiods`,挂在我方现有主运上,表头与说明标「简化模型 / Simplified model」;若离不开上游新版主运就停下回报,不换主运。没有出处规则的体系写「本体系未提供子运」。Ashtottari 的起运表与适用口径和 PyJHora 不一致(#88 写单时查出,另立单处理),本单只把引擎现有子运原样出表,不改其起运与主运 | 各体系主运逐行不变;子运条数写进 PROGRESS;Vimshottari 三层不变;Kalachakra 表含「简化模型」 |
|
||||
| T6 | B | C 类:搬 `tripataki_chakra`、本命与年度 Saham `formula_traces`、年盘整宫 `annual_houses`,进子包;T2 预留的四节出表 | 红线 1 经度测试;四节中英出现 |
|
||||
| T7 | B | 年运(D4、D8):把上游 `annual_tajika_pack.py` 缺的原生部分搬进我方(月返照、生命周期年返、八年总览、年度大运结果、`normalized_tables` 原生行、原生 Patyayini、原生 Tithi Pravesha 连带 `tithi_pravesh.py`、`pl9_annual_visual_panels`);当年 + 后两年每年按 D8 清单全部展开;出「年度图盘数值数据」 | 三年每年 D8 各项中英文都出现(缺项必须在 PROGRESS 写原因);已有年运字段(年主、Muntha、Mudda、Sahams、Tajika)对 3 张虚构盘逐值不变,只多新键;对话年运卡不变 |
|
||||
| T8 | B | 三年逐月星历(D9):用 `kp_monthly_transits` 按报告口径算报告月起 36 个月 × 9 星,另列 KP 口径表与五级 Vimshottari 月采样 | 每个口径 36 × 9 行,首月 = 报告日期所在月;任取一采样点月亮经度与我方排盘函数同刻结果差 ≤ 1e-6° |
|
||||
| T9 | B | 解释补长(D12):`build_graha_interpretation_pack`、`build_bhavesh_interpretation_pack` 按上游 main 对应生成器补传统段落,「可能」口吻,叠加功能吉凶 v2;修「六维力量合计为未列出」;Saturn / KP 表补 Dhayya、Laghu Kalyani、Kantaka 结果段与 KP 细格 | 「行星、星宿与宫位解释」与宫主逐宫解释中英文字数不低于上游同盘同章(英文按上游 8,970 字符量级,中文按比例),PROGRESS 列逐章字数;红线 7 模板口径测试(中英全文) |
|
||||
| T10 | B | 量测与文档(D14):Linux(Claude 复测)与 Windows 生成时长、中英 Markdown 字符与字节、快照 JSON 大小、`.md` 导出大小、阅读页章数与最大一章;与上游数值不同的项列表并写原因(预期:真恒星 vs 视位置、Swiss vs Moshier)。BUG_HISTORY、CHANGELOG、PROGRESS、`docs/testing/full-data-parity-1-20261021.md`(真机:生成新报告、中英切换、逐章翻到底、导出中文 `.md` 检查图盘列表、旧报告仍能打开) | 文档齐;中英合计生成在 180 s 以内,否则按红线 10 停下 |
|
||||
|
||||
T2 分组表(中英一一对应,章内按此顺序):
|
||||
|
||||
| 章 | 中文标题 | 英文标题 | 包含 |
|
||||
| --- | --- | --- | --- |
|
||||
| 1 | 大运附表 | Dasha Appendix | Vimshottari Birth-Balance、Kalachakra Dasha(主运层)、Yogini 周期、Tribhagi Profile、Tribhagi 周期、Navamsha AD Duration、Nakshatra Dasha Context、Bhrigu Cycle、Bhrigu Approximate Progression、Conditional Dasha Applicability、Dasha Boundary Scan、Current Dasha Convergence、Chara Dasha Period Durations、Narayana Method Comparison |
|
||||
| 2 | 年运附表 | Annual Appendix | Annual Return House Framework、Annual Return Calculation Contract、Tajika Aspect and Yoga Candidates、Tripataki Chakra Detail、Annual Tajika Strength、Annual Saham Formula Trace、Annual Chart Numeric Data(T7) |
|
||||
| 3 | 力量与八分法 | Strength and Ashtakavarga | Shadbala Subcomponent、Shadbala Result、House Components and Physical Coordinates、Bhava Bala Three-Component、Vimsopaka Contribution、AV Contribution and Reduction、AV Yoga Pinda、AV Sign Assessments、Prastara Totals、Avastha Inputs、D30 States、D30 Source Input、Pushkara Basis、Lagna Vargottamamsa |
|
||||
| 4 | 关系、相位与瑜伽 | Relationships, Aspects and Yogas | Neutral and Compound Relationships、Relationship Conventions、Dispositor Terminals、Dispositor Chain、Aspect Geometry、Argala、Congregation、Bhrigu Relationship Geometry、Yoga Participants、Canonical Yoga Rows、Whole-Sign Occupants |
|
||||
| 5 | 星宿、特殊点与行运 | Nakshatras, Special Points and Transits | Nakshatra Reference、Tara-Chandra Matrix、Natal Tithi Lord、Birth Calendar、Pancha Pakshi、Natal Vivah Saham、Natal Saham Formula Basis、Natal Saham Formula Trace、Arudha / UL / A10、Jaimini Calculation Details、Graha Pada、Yogi and Ava Yogi(T4)、Karakamsha、Darakaraka、Rashi Tulya Navamsa、Moon Chart Reference、Sudarshana Points、Dated Transit、Multi-Reference Transit、Double Transit PAC、Lagna / 7th Lord Transit、三年逐月星历(T8) |
|
||||
| 6 | 计算口径 | Calculation Conventions | Natal Calculation Conventions、KP Calculation Conventions、D9 Dignity、Divisional Mapping、Bhava Chalit Planet Placements、Bhava Chalit Centres、Bhava Chalit Convention |
|
||||
|
||||
合计 71 个小节(74 − X 2 − E 1)+ Chara、Narayana 两个大章 + 两项新数据。
|
||||
|
||||
## 7. 验收分工
|
||||
|
||||
| 检查 | Grok 自跑 | Claude 验收 |
|
||||
| --- | --- | --- |
|
||||
| 改到的与新增的 Python 测试文件(至少:`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_*`)及 #89 的 200 盘扫描 | 必跑(工作树 `.venv`),屏蔽 PyJHora 再跑一次 | 复验 |
|
||||
| `tsc --noEmit`、`npm run lint`、改到的前端测试文件(`report-export-blocks.test.ts` 等) | 必跑(T3 动了前端) | 复验 |
|
||||
| Python 快速门 `run_quality_gate.py --profile quick` | 不跑 | 以 Claude 为准 |
|
||||
| **Python 全量 pytest 与开工基线逐条比对**(A、B 段各一次) | 不跑 | 以 Claude 为准 |
|
||||
| 前端全量 `npm test`、`npm run build`(`/` 仍 Static,首屏 gzip ±2%) | 不跑 | 以 Claude 为准 |
|
||||
| `test:db` | 不动数据库,不要求 | — |
|
||||
|
||||
## 8. 让步顺序
|
||||
|
||||
不让步:T1、T3、红线全部、英文汉字 0、对话与校正不变。时间不够时依次让出:T9 的 Saturn / KP 结果段 → T8 → T5 的 Kalachakra 次小运 → T7 的生命周期年返与八年总览。让出的写进 PROGRESS 留给下一单。A 段不等 B 段。
|
||||
|
||||
## 9. 开工前置命令
|
||||
|
||||
```bash
|
||||
git fetch origin --prune
|
||||
git log origin/staging --oneline | grep -iE "#89|han_leak|1272" | head # 确认 #89 已合入,否则不开工
|
||||
git worktree add -b codex/full-data-parity-1-20261021 .worktrees/full-data-parity-1-20261021 origin/staging
|
||||
cd .worktrees/full-data-parity-1-20261021
|
||||
# 上游参照放仓库外,只读
|
||||
git clone --filter=blob:none https://github.com/732642856/yinduzhanxing.git ../yinduzhanxing-ref
|
||||
git -C ../yinduzhanxing-ref fetch origin codex/customer-export-frozen-20261016
|
||||
git -C ../yinduzhanxing-ref ls-tree --name-only 1d549fe9 customer-export/registry/
|
||||
ls scripts/*.py | wc -l # 448 = ROOT_PY_BUDGET
|
||||
grep -n "yogi_sphuta" scripts/jyotish_engine.py
|
||||
grep -n "_render_pl9_ai_density_raw_data_markdown_zh\|Planetary Friendship Matrix" scripts/pl9_full_data_export.py
|
||||
grep -n "function houseLine" -A4 frontend/src/lib/report-export-blocks.ts
|
||||
grep -oE "^## BUG-[0-9]+" docs/BUG_HISTORY.md | sort -u | sort -t- -k2 -n | tail -1
|
||||
```
|
||||
|
||||
## 10. BUG 编号
|
||||
|
||||
写作时 `docs/BUG_HISTORY.md` 最大号 BUG-1403。文件里有重复段落,按上面命令 `sort -u` 后取最大号,**开工时最大号 + 1 起**(#88~#90 可能先占号)。预计至少三条:中文附录乱句与英文丢否定(T1,含空友敌矩阵);中文导出图盘列表英文星座名(T3);`yogi_sphuta` 漏搬致 Yogi / Ava Yogi 恒为 blocked(T4)。
|
||||
Reference in New Issue
Block a user