feat(reports): generate card, jump to end, labelled export, TOC levels, table bands, export size; drop 字段 jargon (BUG-1092..1094)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
This commit is contained in:
Jesse_Chen
2026-09-29 19:04:45 +08:00
co-authored by Claude Opus 5.5
parent 64aa0ec20c
commit d85ab9a2d2
21 changed files with 486 additions and 57 deletions
+44
View File
@@ -14688,6 +14688,50 @@
- 复发自:无
- 修复版本:未修
## BUG-1092 | 报告技术页标题出现「字段」,行星主星表头是看不懂的 RL / NL / SL / SS / SB
- 状态:resolved(代码 + 回归测试;未部署,真机待合入 staging 后复核)
- 首次发现 / 最近更新:2026-09-29 / 2026-09-29
- 影响面:`scripts/pl9_reader_export.py`(p3 / p6 / p17 三个 `####` 标题、p6 表头、`_strip_pl9_user_engineering_markers` 的 `field_状态` 替换)。
- 用户现象:个人报告「出生资料与图盘」里出现「Birth Chart 星主与状态字段」「原版补充字段」;表头是 `Planet | RL | NL | SL | SS | 状态 | SB`,产品反馈「用户都不知道这是啥」。
- 触发条件:任何 reader_main 报告;p3 / p17 补充表只在引擎返回对应原版资料时出现。
- 根因:模板标题照搬了引擎侧的工程命名(field / 字段)和 PL9 原版缩写,没有做面向读者的命名。
- 修复:标题改为「行星主星与状态」「出生资料补充」「特殊上升与派生点补充」;`field_状态` 改译「状态」;表头改为「行星 | 星座主 | 星宿主 | 分主 | 分分主 | 尊贵状态 | 力量比」,表下加一句名称说明(力量比 = `ishta_bala_pct / 100`,1 以上为达标)。
- 验证:`tests/test_report_reader_main.py::test_reader_headings_drop_field_jargon_and_dignity_is_one_name`;虚构案例同机改前 / 改后两次渲染 diff 只含这几处文案(golden `frontend/tests/fixtures/report-reader-main-fictional.json` 按该 diff 打补丁,其余逐字节不变)。
- 防复发:报告标题不得出现「字段」;新增表头用读者能懂的中文,缩写须在表下说明。
- 相关记录:BUG-1093、TASK-report-reader-polish-20260929
- 复发自:无
- 修复版本:分支 `codex/report-reader-polish-20260929`
## BUG-1093 | 报告尊贵状态显示成「入旺(入旺)」「中性(中性)」
- 状态:resolved(代码 + 回归测试;未部署)
- 首次发现 / 最近更新:2026-09-29 / 2026-09-29
- 影响面:`scripts/pl9_reader_export.py` p6「行星主星与状态」与「宫主(Bhavesh)落宫解释」两张表的状态列。
- 用户现象:状态列同一个词写两遍(入旺(入旺)、入庙(入庙)、中性(中性)),另有「入敌(敌对星座)」「极敌(Great Enemy)」中英混杂。
- 触发条件:任何 reader_main 报告。
- 根因:引擎 `DIGNITY_LABELS` 本身是中英双写(`入旺(Exalted)`);reader 的汉化是全文逐词替换,把括号里的英文也译成中文,于是两边相同;glossary 里没有的词(Great Enemy)保持英文。
- 修复:新增 `_dignity_label`,只取双写标签的中文部分;两张表的状态单元格都经它输出。引擎 `DIGNITY_LABELS` 不动(其它消费方依赖它)。
- 验证:同 BUG-1092 的回归测试断言全文不再出现 `X(X)` 形式、两张表状态列无括号;`_dignity_label` 单测覆盖双写、纯中文、空值。
- 防复发:reader 表格里的引擎枚举值先归一再进汉化,不依赖逐词替换处理括号。
- 相关记录:BUG-1092
- 复发自:无
- 修复版本:分支 `codex/report-reader-polish-20260929`
## BUG-1094 | 报告页可用性:生成入口不显眼、没有到底部、导出按钮找不到、目录层级分不清、表格行难对齐、导出不知道多大
- 状态:resolved(代码 + 回归测试;未部署,浏览器级真机欠,见 `docs/testing/report-reader-polish-20260929.md`)
- 首次发现 / 最近更新:2026-09-29 / 2026-09-29
- 影响面:`personal-report-center.tsx`、`generate-personal-report-button.tsx`、`personal-report-markdown-view.tsx`、新增 `report-edge-jump.tsx`、`report-actions.tsx`、`report-export-drawer.tsx`、`lib/report-export-blocks.ts`、`globals.css`。
- 用户现象(产品截图):生成按钮是标题栏右上角的小描边按钮,空状态文案写「生成完整报告」而按钮叫「生成报告」;长报告没法一下到底;导出只是一个灰色图标;目录里「强度、关系与 Ashtakavarga 技术页」像上一组的子项;表格无底色;分块导出只显示字数。
- 根因:入口与导出做成了次要样式;按章节懒渲染却没有配套的到底部;目录一级 / 二级只差 12px 缩进、同色同字重;报告表格沿用聊天的极简表格样式;导出计数只统计字符(图盘块含 SVG,与文件大小差距大)。
- 修复:生成入口挪进页面顶部卡片(删标题栏按钮),下方「过往的报告」;右下角「到底部 / 回到顶部」单按钮,点击先 `flushSync` 挂载全部懒渲染章节再滚到 `scrollHeight`;导出改为带文字的描边按钮;目录一级加粗用 ink、组间留白,二级缩进 `--space-5`;仅报告表格加表头淡底与隔行底色(打印更浅);导出弹窗显示 `TextEncoder` 实测字节(全篇与已选)。
- 验证:`frontend/tests/report-reader-polish.test.tsx`(6 条)、`report-export-drawer.test.tsx` 新增文件大小用例;既有断言改动三栏见 `docs/tasks/PROGRESS-report-reader-polish-20260929.md`。
- 防复发:报告页只有一个生成入口;到底部不得接入会话滚动锚;表格底色选择器限定在报告作用域。
- 相关记录:BUG-1092、BUG-1093
- 复发自:无
- 修复版本:分支 `codex/report-reader-polish-20260929`
## BUG-1095 | 太阳返照本地时间是 UT 原样:读者版「Varshapravesha」差一个时区,Sahams 昼夜按错误时刻判
- 状态:resolved(2026-09-29 Claude 独立验收通过:6 测试文件+隐私守卫 156 passed;基线树 vs 分支北京虚构盘 A/B:solar-return 6 处差异全为修正项、tajika 0 差异;快速门 Python 步 1001 passed / 1 skipped 与基线一致,npm 步为 worktree 无 node_modules 的环境缺口)