Files
Jyotisha/docs/tasks/PROGRESS-report-chart-blank-columns-20261003.md
T
Jesse_ChenandClaude Opus 5.5 ae18952e51
Independent Staging Quality Gate / validate (push) Successful in 15m27s
Independent Staging Quality Gate / publish (push) Successful in 3m42s
fix(report,chart): blank columns — drop Kranti, split Ashtakavarga house SAV, ascendant nakshatra, engine varga dignity, no duplicate charts (BUG-1199..1203)
- Report p33 table: no Kranti column (no producer; materials.kranti stays blocked).
- Report p53 table: the "SAV" column was the with-Lagna total (386). Split in the
  reader into SAV / Lagna BAV / SAV + Lagna with a totals row; ashtakavarga.py is
  untouched (frozen rectification identity, ERR-115).
- /api/chart ascendant carries nakshatra / pada / lord (_nakshatra_fields shared with
  the nine bodies); chart cache schema 4 -> 5.
- /api/varga_full bodies carry dignity_level from varga_dignity_level, the function
  the Vimsopaka path now shares (A/B identical); the chart page shows the D1 status
  wording and no longer derives a three-level dignity itself.
- Report page draws each chart once: the trailing block skips charts the body already
  fenced (same rule as the export); the birth-time caveat moves under the body's
  chart heading.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-10-03 09:11:15 +08:00

6.5 KiB
Raw Blame History

PROGRESS · 报告与星盘页的「空列」(2026-10-03)

  • 任务书:docs/tasks/TASK-report-chart-blank-columns-20261003.md(3bbc2daa)
  • 基线:origin/staging 3bbc2daa(任务书写的 1af34880 + 任务书本身,代码相同)
  • 分支 / worktree:codex/report-chart-blank-columns-20261003 / .worktrees/report-chart-blank-columns-20261003
  • 执行方式:产品 10-03 说「请你执行」,Claude 直接实现并独立验收。
  • BUG:1199~1203(开工核对最大号 1198)

完成情况

任务 结果 要点
T1 Kranti 删列(BUG-1199) 完成 pl9_reader_export.py p33 表四列;materials kranti: blocked 与质量门 RESTRICTED_MATERIAL_IDS 未动
T2 八分法三列(BUG-1200) 完成,实现方式偏离任务书 见下「偏离」
T3 上升星宿(BUG-1201) 完成 _nakshatra_fields 九曜 / 计都 / 上升共用;cache_schema_version 4→5;指纹 / 绑定核查:只用出生资料(report-birth-binding、secondary-page-data 的 profileFingerprint),报告封面哈希是报告正文;均不受影响
T4 分盘十档庙旺(BUG-1202) 完成 jyotish_engine.varga_dignity_level(Vimsopaka 与 /api/varga_full 共用);新模块 scripts/varga_dignity.py,API 主文件只改一行(行数 10923 不变);前端删 vargaDignity 与四张表,旧缓存无等级整列隐藏
T5 末尾分盘去重 + 提示前移(BUG-1203) 完成 fencedReportChartIds 页面与导出共用;提示句由引擎写在 p6-p17 标题下(中英)

未用让步顺序。

偏离任务书:T2 不改 ashtakavarga.py

任务书写「_map_to_houses_values 增字段」。照做后快速门红 4 条(test_rectification_validation_integrity_gate)、test_sealed_holdout_contract_freshness 红 3 条:该文件在生时校正冻结身份里(ERR-110 同型;台账新增 ERR-115,是任务书本身的疏漏)。改为 reader 用 sav.scores 与 bav.Lagna.bindus 拆分,并要求逐宫 SAV + 上升 BAV == house_scores_full.sav_score 才填;ashtakavarga.py 已回到基线字节,门禁恢复全绿,无需重新冻结。红线 1(sav_score 不变)照样满足。

既有断言改动(原值 / 新值 / 原因)

位置 原值 新值 原因
frontend/tests/chart-varga-table.test.tsx D1 逐字节基线 表 == chart-d1-table-baseline.html 表 == 基线把上升行唯一一组「— — — —」换成「Uttara Phalguni / ☉ / 1 / —」;并断言基线里这样的全横杠行只有一处 BUG-1201:上升三格现在有引擎值;其余逐字节不变
同文件 D9 行 dignity == "own" / "debilitated";markup >自宫<、>落陷< "OWN_SIGN" / "DEBILITATED";markup >入庙(Own Sign)<、>落陷(Debilitated)<,另加入友 / 中性 / 入敌 / 极敌四行 BUG-1202:十档引擎等级、D1 状态列措辞
同文件「null 不关列」 tbody 不含 同位/入旺/自宫/落陷 tbody 不含 同位 与 `(Exalted Own Sign
frontend/tests/chart-view-varga-dignity.test.ts vargaDignity 三档优先级 8 条断言 vargaDignityLevel 接受十档、拒绝旧三档值与非字符串;标签与 D1 措辞一致、键集合 = 十档 前端自算函数已删除(不留第二套判定)
tests/test_chart_page_vedic_tables_contract.py test_tables_equal_engine_constants、test_every_planet_sign_pair_matches_engine_dignity_level(钉三档表) test_dignity_labels_equal_engine_status_wording(措辞表 = DIGNITY_LABELS,旧四表已不存在)+ test_d9_projected_dignity_is_the_engine_level(真实 TS mapper 投影 = 引擎等级,golden 覆盖入庙 / 落陷 / 中性 / 入敌 / 入友) 同上

golden:frontend/tests/fixtures/chart-view-golden.json 只新增字段(上升三项、每颗分盘星 dignity_level),原值零改动;重录方式写在 sourceCommand(_nakshatra_fields(ascendant.lon)、annotate_varga_dignity 作用于已存位置,即 /api/chart、/api/varga_full 现在的调用)。

报告大 fixture(report-reader-main-fictional*.json、report-density-fictional-reader.json)是 9 月真实输出,里面仍是旧表;前端没有断言碰这两张表,未重录(重录会混入其后大量无关引擎变化)。新表由 Python 测试现场渲染断言。

验收

项 结果
tsc --noEmit 0 错
npm run lint 0 error(126 warning 均为既有;改动文件单独跑 eslint 0 问题)
npm test(Node 22) 4927 项 / 失败 24;基线 3bbc2daa 4921 项 / 失败 24;失败清单逐名一致,全为无 Docker 的数据库 / 部署套件;新增 6 项
next build 通过,/ 为 ○ Static
首屏 gzip(index.html 引用的 29 个脚本 / 样式 gzip-9 求和) 基线 625,123 → 本分支 626,061,+0.15%。基线构建在最后 standalone 复制步因整机磁盘满(ENOSPC)退出,编译与页面生成已完成,index.html 与引用文件齐全,数字有效
Python 定向 test_report_chart_blank_columns(新 12 项)、test_chart_page_vedic_tables_contract、test_api_server_security(新增 1 项)、test_report_english_edition、test_report_reader_main、test_report_chart_block、test_ashtakavarga_invariants、test_api_server_growth_contract、test_rectification_validation_integrity_gate、test_sealed_holdout_contract_freshness 全绿
快速门 run_quality_gate.py --profile quick Python 段 1047 passed / 1 skipped;最后一步 npm test 因上述 24 项无 Docker 失败而整体判红,与基线同
既有红 test_dynamic_rectification_fact_priority::test_historical_event_priority_preserves_vimshottari_actor_difference 在基线 3bbc2daa 同样失败(selection_priority 0.0),与本轮无关,未处理
Vimsopaka 抽函数 A/B PYTHONHASHSEED=0,3 张虚构盘 cmd_full_reading 的 vimsopaka / varga_full / jaimini / 行星 / 上升(除新增星宿字段)基线与本分支逐字节相同

环境缺口

  • 无登录态与 Chrome:真机走查留给产品,清单 docs/testing/report-chart-blank-columns-20261003.md。
  • 无 Docker:数据库 / 部署套件 24 项按基线逐名比对。
  • 整机磁盘曾满(他会话占用):一次快速门因 /tmp 建不了目录全部 error(未计入结论),腾出自己的构建产物后重跑得到上表结果。