feat(report): replace the reader edition with the full-data report

Generate the full-data edition (pl9_personal_long_report.v4) and remove the reader edition. English still contains Han, so the API withholds it (BUG-1272, investigating). This commit is not pushed to staging.
This commit is contained in:
jesse-ux
2026-10-08 22:29:31 +08:00
committed by Jesse_Chen
parent db0134f9db
commit 98c98aa535
32 changed files with 4039 additions and 133 deletions
+16
View File
@@ -17115,6 +17115,22 @@
- 复发自:无。
- 修复版本:无(运行机侧)。
## BUG-1272 | 完整数据版英文报告清理后仍含汉字,接口整份撤回英文
- 状态:investigating
- 首次发现 / 最近更新:2026-10-08 / 2026-10-08
- 来源:`TASK-report-full-data-edition-20261007`。上游任务书已记录乔布斯盘英文清理失败(`chinese_characters:14981`)。
- 影响面:新生成的个人报告英文版。中文完整数据版不受影响。已生成的旧报告仍按当时保存的正文打开。
- 现象:完整数据版英文沿用上游清理器。清理器对没有译文的汉字不会删行,而是包成 `[source text retained: …]`。这样正文里仍然有汉字。公开接口发现汉字后设置 `english_unavailable=han_leak`,不返回 `markdown_en`。页面不显示「中文 / English」切换。
- 触发条件:用完整数据版生成中英两份。本机虚构盘、乔布斯盘、奥巴马盘都如此。泰勒盘没有公开出生资料,没有生成。
- 根因:英文清理器的设计是留下缺译文的原文,避免看起来干净、实际少了证据。本仓资料包里这类汉字不是一小张术语表:补译分盘提示、行星主星标题、八分法标题和「合计」之前,三张盘大约有 350–470 处汉字串、240–300 个不同写法,很多是单字或半句。不能靠手写词典清空,也不能把夹汉字的英文交给用户。
- 修复:未解决。生成路径已经整份撤回英文,不输出中英夹杂的英文报告。清理器里的汉字标记只留在生成过程中。
- 验证:`tests/test_report_english_edition.py` 要求要么英文没有汉字,要么接口撤回且不带 `markdown_en`。没有在浏览器里走查。
- 防复发:沿用阅读版泄漏词表检查英文全文;接口和前端都在发现汉字时撤回英文。汉字清零之前不得把这则标成 resolved。
- 相关记录:BUG-1126(有英文版时切换必须真换正文)、BUG-1271。
- 复发自:无。
- 修复版本:无。
## BUG-1273 | 生产镜像没有 PyJHora,八个特殊上升点算不出来
- 状态:resolved(已部署 staging `795b8845`:门禁 run 3218、deploy run 3220;`/api/health` gitCommit 一致,`/login` 200,未登录 `/api/account` 401)
@@ -0,0 +1,115 @@
# 进度 · 个人报告改为完整数据版(2026-10-08)
- 分支:`codex/report-full-data-edition-20261007`
- 基线:`c04786f7`(`origin/staging` 在开工时的尖端;sync6 已在 `2df6ee72` 部署,其后的文档提交不改变已部署代码)
- 状态:代码在本分支,**未推 staging**,未上线
- 产品结论:新报告是中文完整数据版。阅读版不再生成。英文这轮不交付(BUG-1272,未解决)。旧报告仍按保存的正文打开。
## 用户能看到什么
| 项 | 结果 |
| --- | --- |
| 生成 | 「生成报告」只请求 `edition: full_data`。没有阅读版开关 |
| 正文 | 中文。星盘、力量、大运、年运、瑜伽,加结构化资料附录 |
| 英文 | 清理后仍有汉字。接口不返回英文,页面不显示语言切换 |
| 旧报告 | 快照仍是当时存下的 Markdown,打开时不重算 |
| 很长的报告 | 超过约 20 万字才一次显示一章。现在的中文大约 10 万字,仍按原来的方式分段滚动 |
| 下载 | 仍是原来的「导出」,一份 Markdown。没有第二颗下载按钮 |
| 数据库 | 不改表。正文放得下现有文本列 |
生成卡片仍写「大约 10–30 秒」和「中英两版」。这两句与实测不符,测试锁着「10–30 秒」这句,本轮没有改文案。
## 触点
| 位置 | 处理 |
| --- | --- |
| `professional_report_reference.py` 的阅读版常量 | 删除。新增 `full_data` / `pl9_personal_long_report.v4`。请求阅读版会报错 |
| `pl9_reader_export.py` 的分发 | 阅读版不再走生成。完整数据版走新模块。文件里的旧整理函数还在,生成路径不调用 |
| `pl9_full_data_export.py`、术语表 | 新增。只搬渲染和用词,不搬上游计算 |
| 英文用词、事实表、大运适用说明 | 留下。旧报告和事实表还用它们 |
| `personal-report-longform-generate.ts` | 改为请求完整数据版 |
| 快照、原始附录、阅读页、导出 | 留下,旧报告才能打开 |
| `jyotish_api_server.py`、`page.tsx`、默认报告版本常量 | 没有改。默认版本仍是 v3;v4 只出现在完整数据版的接口字段上 |
| 对话 | 没有改。只加了按领域复制资料包的只读入口 |
## 本机生成(不是 2 核服务器)
机器是 16 线程桌面,一次只跑一个 Python 进程。不能当成线上 2 核的耗时。都低于接口 180 秒上限。
| 盘 | 排盘加资料包 | 中文渲染 | 中文字符 | 英文渲染 | 英文字符 | 英文汉字串 / 不同写法 |
| --- | --- | --- | --- | --- | --- | --- |
| 虚构 | 79 秒 | 2.7 秒 | 104,547 | 0.4 秒 | 138,444 | 353 / 238 |
| 乔布斯 | 57 秒 | 8.7 秒 | 101,689 | 2.0 秒 | 136,102 | 404 / 274 |
| 奥巴马 | 91 秒 | 3.0 秒 | 112,222 | 0.6 秒 | 151,182 | 465 / 303 |
泰勒没有生成:本仓和上游 `23be1807` 都没有这份公开出生资料。上表的汉字数是在补上分盘提示、主星标题、八分法标题和「合计」的英文之前量的。补译之后汉字会少一些,没有少到能整份交付。
只存中文时大约 10 万到 11 万字符。中英都存大约 24 万字符。PostgreSQL 文本列放得下。没有改表。
## 缺口(没有补算,也没有编)
1. 上游那份私人 PDF 对照表没有搬。里面有对具体用户的扣留说明。
2. 视位置计时和年运交食返照没有搬。缺的计时节就空着。
3. 开篇「重点」是固定的三句核对清单,不是上游按当前大运和宫主写的那段。
4. 中文大约 10 万字符,不是任务书里对照的上游约 97 万。渲染器要读的资料包字段这边没有。
5. 没有周期数据的大运族不会出现。Narayana 的旧算法说明和 Rath 并列表用的是资料包里已经算好的字段,只展示。
6. 泰勒盘见上。
7. 英文见 BUG-1272。
本仓口径仍在:落陷取消不叫王瑜伽;网站的 +2 / −1.5 分不出现;六维力量先写最低要求;八分法三列数字还在;没有 Kranti 列;年主依据和「不能确定就不拿 Muntha 主星充数」还在。
## 让步
- 没有全文搜索。
- 不到 20 万字不启用按章分页。100 万字和 350 万字的页面测试能换章,用时在原有的首屏时限里。
- 生成文案仍写 10–30 秒和中英两版。见上。
## 测试断言
没有删除测试。守计算口径的文件都改成对完整数据版断言。下表只列本轮改过的断言。
| 测试 | 原断言 | 新值 | 原因 |
| --- | --- | --- | --- |
| 中文章节名含 Year Lord | 正文出现 Year Lord | 出现 Varshesha | 中文清理把 Lord 写成「宫主」 |
| 年运三行 | 全文数 `Muntha sign` | 只数附录前的 `Muntha 星座`,仍是三年、各不相同 | 附录会再写一行当年 Muntha;用词被译成「星座」 |
| 年运冲突行的 Muntha | `Muntha sign` | `Muntha 星座`,星座值不变 | 同上 |
| 禁止「字段」 | 全文不能出现「字段」 | 附录前可以出现「字段」;尊贵状态仍只写一个名字 | 上游表头就是「字段 \| 数值」。这条随阅读版失去对象 |
| 英文无汉字 | 汉字必须为空 | 有汉字就必须是 source text retained;接口在有汉字时撤回英文 | BUG-1272 |
| 英文年度章标题 | Annual Charts and Tajika | Annual Varshaphala and Tajika | 上游标题 |
| 中英数字顺序 | 全文数字序列相同 | 两边正文都有同一个出生年份 | 中文多了核对清单序号,逐号对齐失去对象 |
| 宫位力量表头 | 中英都是英文表头 | 中文译成宫位/星座/宫主;英文保持原文。网站 +2/−1.5 仍禁止 | 中文清理 |
| 赤纬表 | 中英都是 Declination / Speed | 中文是赤纬/速度;英文保持原文。仍无 Kranti | 中文清理 |
| 八分法宫位表 | 中英同一套英文表头;合计行星座格是 `-` | 中文表头译成宫位/星座/上升;英文标题 Full House Scores,合计行 Total;空位可以是 `-` 或「未列」。四格数字不变 | 清理器改用词,不改分数 |
| 六维力量表头 | 中英都以 Planet 开头 | 中文以「行星」开头;英文仍是 Planet。最低要求仍在网站分档之前 | 中文清理 |
| 年主依据、年主不能确定 | 英文必须是无汉字的那句 | 清干净时仍要那句英文;否则必须标成 source text retained,且不得改回 Muntha 主星 | BUG-1272 |
| Narayana 两则 | 对 reference 版断言旧算法句和 Rath 表 | 对 full_data 断言同一内容 | 用户看到的是完整数据版 |
| 正文不得用 useState | `PersonalReportMarkdownView` 里不能出现 useState | 只允许章节序号和打印标记两处;每次 `renderMarkdown` 仍在 useMemo 里 | 超过 20 万字按章翻页。滚动位置仍不放在阅读器里 |
| 切换版本留在同一章 | `drawn={drawnThrough !== null && chapter <= drawnThrough}` | 懒加载用 `index <= drawnThrough`;超长报告的初始章取 `drawnThrough` | 循环变量改名。按章翻页仍从切换前的章号打开 |
Chara Karaka 顺序和落陷取消条件的计算断言没有改,只是把被测版本从阅读版换成完整数据版。
## 本机检查
| 项 | 结果 |
| --- | --- |
| `tsc --noEmit` | 退出码 0 |
| `npm run lint` | 退出码 0。0 error,125 warnings。警告都不在本轮改过的文件里。没有去改这些既有警告 |
| 报告与口径定向 pytest | 除八分法合计行外一次通过;改完英文「合计 → Total」后,`test_report_chart_blank_columns.py` 12 项通过 |
| 100 万字 / 350 万字阅读页 | 通过(tsx)。换章,没有全文搜索 |
| 领域只读入口 | 3 项通过。未知领域报错,不改对话 |
| 浏览器 | 没有走查。见 `docs/testing/report-full-data-edition-20261008.md` |
| 全量 `npm test`、`next build --webpack`、Python 快速门 | 见下 |
## 全量前端与构建
| 项 | 结果 |
| --- | --- |
| `npm test` | 4902 项,通过 4756,失败 146,取消 0,跳过 0。用时约 339 秒。这是修好两条阅读器断言之前的数字 |
| 本轮新失败 | 两条:`article markdown trees are memoized and hold no scroll state`,`switching editions keeps the reader on the same chapter (BUG-1108)`。修好后这两个文件 23 项通过。没有重跑全量,所以全量失败名单按修好后计是 144 |
| 和开工基线比 | 基线文件 147 条。中文用例名在那份文件里编码坏了,按英文名对过:基线多 3 条这次没红的环境失败(两条数据库、一条 D3 首行)。sync6 进度里多出的 `corrective migration clears untrusted clocks` 这次通过了。没有删测试 |
| `next build --webpack` | 第一次收集 `/api/consult` 页面数据时,技能包符号链接 EPERM,编译和类型检查已经过。用本机已有的符号链接预加载再跑,退出码 0。`/` 是 Static |
| 首屏 gzip-9 | 预渲染 `index.html` 引用 31 个脚本、3 个样式。基线 `c04786f7` 同法 608,597 B,本分支 608,642 B,+45 B,+0.007%。基线用临时工作树构建,量完已删 |
| Python 快速门 | 编译、JSON、能力审计、碎片审计、清单和 BPHS 都过。pytest 1057 通过、1 跳过、1 失败,用时 646 秒。失败是 `test_consultation_native_layers.py::test_the_new_layer_leaves_every_existing_output_unchanged`。日志里没有完整数据版的字段。sync6 进度已写这条在 Windows 失败、在 Linux 通过。脚本停在这一步,没有继续跑门禁里的 `npm test` 和 `npm run build` |
| Python 全量 | 没有重跑 |
| 隐私标记 | 在这轮快速门里,唯一失败不是它 |
| 浏览器 | 没有走查。见 `docs/testing/report-full-data-edition-20261008.md` |
+2 -2
View File
@@ -201,8 +201,8 @@
| 任务书 | 进度 | 主题 | 状态 | 落点 |
| --- | --- | --- | --- | --- |
| `TASK-report-full-data-edition-20261007.md` | — | **报告改为完整数据版、删除阅读版**:网站阅读版中文 7.6 万字符 vs 上游 `pl9_ai_density` 97 万;移植原始数据附录 / 清理器 / 时间补充,中英文;我方报告口径(BUG-1199~1229)全部保持;旧报告仍可打开;排在 sync6 之后 | 未合入(分支 `06028759`,验收未通过,见 fix-20261008) | — |
| `TASK-report-full-data-fix-20261008.md` | — | **完整数据版补齐**(同分支 `06028759` 继续):中文只有上游 19%(9.9 万 vs 52.6 万字);产品允许移植上游解释生成器并逐条核口径;年运表接我方字段;英文必须交付才上线;其他 7 种大运另开单 | 验收未通过(`32f19f07`,见 fix2) | — |
| `TASK-report-full-data-edition-20261007.md` | `PROGRESS-report-full-data-edition-20261007.md` | **报告改为完整数据版、删除阅读版**:网站阅读版中文 7.6 万字符 vs 上游 `pl9_ai_density` 97 万;移植原始数据附录 / 清理器 / 时间补充,中英文;我方报告口径(BUG-1199~1229)全部保持;旧报告仍可打开;排在 sync6 之后 | 未合入(验收未通过,见 fix-20261008) | `codex/report-full-data-edition-20261007`(未推 staging) |
| `TASK-report-full-data-fix-20261008.md` | — | **完整数据版补齐**(同分支继续):中文只有上游 19%(9.9 万 vs 52.6 万字);产品允许移植上游解释生成器并逐条核口径;年运表接我方字段;英文必须交付才上线;其他 7 种大运另开单 | 待领取 | — |
| `TASK-report-full-data-fix2-20261008.md` | — | **完整数据版第二轮**(同分支 `32f19f07` 续):英文已过;未过——全量 +1 旧断言、寿命断言、半译词与字段名被改坏、「守护第未列出宫」163 处、年运章 6/29 节、大运解释只有上游 42%(产品:补回传统段落改「可能」口吻) | 待领取 | — |
| `TASK-report-reader-main-fix-20260925.md` | `PROGRESS-report-reader-main-fix-20260925.md` | **读者版修复**:真实年主比较、分字段绑定与未来返照;保留 Bhava Bala 和标题,隔离报告/聊天规则 | 已验收(Claude 09-25:年运表逐年填齐且不同、Bhava Bala 保留、泄漏 0) | `4d801e53`(已部署,health 核对一致) |
| `TASK-report-reader-main-20260924.md` | `PROGRESS-report-reader-main-20260924.md` | **报告正文换上游读者版 reader_main + KP / Muntha 计算缺陷 + 投影截断(BUG-1026/1027/1028)**:正文一直是上游审计版(读者版 09-09 才出、从未同步),本仓又自加「结论等级规则」/英文段/异常原文;投影黑名单不认 PL9 词汇且截断半句、删表留说明;KP args `vars()` 拷贝为空恒失败;Muntha 漏合 `birth_asc_sign_idx` → Year Lord 恒火星。产品拍板接入读者版、旧报告不回填。 | 部分通过(Claude 09-25:读者版切换、泄漏 0 命中、KP 已修;年运 Year Lord/Muntha 全为「-」P1、投影误删 Bhava Bala P2 → 修复单) | `3c2f7bd5`(已部署) |
@@ -0,0 +1,19 @@
# 真机清单 · 个人报告完整数据版(2026-10-08)
对应 `docs/tasks/TASK-report-full-data-edition-20261007.md`。电脑和手机各走一遍。第 1 步会用掉一次生成次数。本机没有登录态,也没有用浏览器点过,下表结果留空。
当前代码的行为,供对照:
- 新报告是中文完整数据版。英文清理后仍有汉字,接口整份撤回,页面上没有「中文 / English」(BUG-1272)。
- 生成卡片仍写「大约 10–30 秒」和「中英两版」。本机单进程大约要 1 分钟多,不是 2 核服务器上的测量。英文这轮实际不会出现。
- 现在生成的中文大约 10 万字,不到 20 万字的分页线,阅读方式与改版前的长文一样:往下滚,目录跳章节。超过约 20 万字才出现「上一章 / 下一章」。
- 下载仍只有阅读页上的「导出」,得到 Markdown。
| # | 操作 | 应该看到 | 结果 |
|---|---|---|---|
| 1 | 「我的报告」→ 生成报告,等它完成 → 打开 | 正文是中文,能往下滚。没有「中文 / English」。没有第二颗下载按钮 | |
| 2 | 点目录里的某一章 | 正文跳到那一章。页面不卡住 | |
| 3 | 点「导出」 | 只有这一处导出。说明里有一句「这份报告的英文版没有生成成功,只能导出中文版。」下载的是 Markdown | |
| 4 | 打开一份这次更新之前生成的旧报告 | 能打开,正文仍是当时保存的那一版,没有自动重算 | |
| 5 | 在旧报告地址后手动加 `?lang=en` | 仍显示原来的正文,不报错 | |
| 6 | (仅当将来英文重新交付)点「English」再点「中文」 | 正文和目录跟着换,同一章还在。这轮新报告不应出现这个切换 | |