fix(report): keep the English edition when one phrase was untranslated
The English personal report was discarded whenever a Chinese fragment survived the trailing glossary. English sections now render the English fields that were already calculated. Co-Authored-By: Grok (agent loop) Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
co-authored by
Grok (agent loop)
Cursor
parent
9812f31737
commit
ba1ffeb35f
@@ -37016,3 +37016,38 @@
|
||||
- 复发自:无。
|
||||
- 修复版本:分支 `codex/synastry-staging-fix-20261021`。
|
||||
|
||||
## BUG-1410 | 个人报告英文版因漏译汉字整份被丢掉(BUG-1272 复发)
|
||||
|
||||
- 状态:resolved(本分支回归已过;合入 staging 后按 PROGRESS 做真机复测)
|
||||
- 首次发现:2026-10-21
|
||||
- 最近更新:2026-10-21
|
||||
- 影响面:个人报告英文版。约四成生成时整份英文被丢掉,页面只剩中文。
|
||||
- 用户现象:揭幕后切到 English,没有英文正文。
|
||||
- 触发条件:英文渲染里还留着汉字。Rath 起运裁到第 5 级、Panchanga 综合为凶、计都在起运宫或子运走 Table 14、月土合相不超过 10 度、完全 Kaal Sarp,都会碰上当时没有英文句子的那一行。这些情况合起来大约四成盘。
|
||||
- 根因:英文版不是按语言写出来的,而是先写出中文,再靠末尾词表逐词替换。词表没盖住的句子留下汉字,`_english_edition` 整份撤回。英文孪生字段多数已经算好,完整数据版没有用。BUG-1272 没拦住,有四点:
|
||||
1. 当时进测试的只有 3 张固定虚构盘,泄漏按盘触发,这 3 张都没碰上。
|
||||
2. `test_reference_edition_shows_both_and_english_terms_cover_the_rath_lines` 断言的是旧阅读版词表 `PHRASES_EN`。完整数据版英文不走这张表,所以测试一直绿,生产路径却漏。
|
||||
3. `tests/test_report_english_edition.py` 不在快速门清单里,staging 门禁不跑它。
|
||||
4. BUG-1272 的修法是继续往末尾词表加条目。新句子或新盘况会再漏。
|
||||
- 修复:英文分支改用已有的英文孪生字段,缺的补上英文句子(Rath、Panchanga 综合性质、Dosha 摘要、瑜伽强度、Jaimini 职责、Vimsopaka 标题)。结构化附录的瑜伽表和 Dosha 摘要在英文里也改读 `combination_en`、`strength_en`、`effects_en`、`summary_en`;这些字段里还有汉字就留空,不退回中文。汉字判定和 `[source text retained]` 标记没有放宽。
|
||||
- 验证:`tests/test_report_english_han_sources.py` 5 条。`tests/test_report_english_sweep_smoke.py` 12 张覆盖第 5 级、凶、计都反向、Table 14、Punarphoo、完全 Kaal Sarp,进程池 4,199.6 秒,全绿。`tests/test_report_english_sweep.py` 200 张,进程池 4,3679 秒,全绿。把英文 Rath 行临时改回中文后,smoke 12/12 为 `han_leak`,测试变红,已改回。
|
||||
- 防复发:smoke 在快速门 `CORE_PYTEST_TARGETS` 里。200 张不进快速门。不要再只靠末尾词表补洞。
|
||||
- 相关记录:BUG-1272、BUG-1411。issue #89。
|
||||
- 复发自:BUG-1272。旧测试和快速门都还在,覆盖面太窄,没有失效。
|
||||
- 修复版本:分支 `codex/report-english-han-leak-20261021`。
|
||||
|
||||
## BUG-1411 | 个人报告英文把中文拆碎后粘成一个词,并把「第 N 级」译成 house
|
||||
|
||||
- 状态:resolved(本分支回归已过;合入 staging 后按 PROGRESS 做真机复测)
|
||||
- 首次发现:2026-10-21
|
||||
- 最近更新:2026-10-21
|
||||
- 影响面:个人报告英文版里的 Rath、瑜伽组合、Dosha 摘要、Jaimini 职责和若干小标题。
|
||||
- 用户现象:英文句子粘在一起,例如 `inperiod start`、`lordandstrong`、`weakafflicted`,或者出现 `house 5 level`。汉字门可能仍放行,因为汉字已经被拆掉了。
|
||||
- 触发条件:英文路径仍输出中文,末尾词表按单字替换(「在」换成 in、「与」换成 and、「第」换成 `house `、「宫」换成空)。另外一条英文模板写成 `weak/afflicted`,已有的清理会把 `weak/` 收成 `weak`,变成 `weakafflicted`。
|
||||
- 根因:和 BUG-1410 同一条路径。短词先替换,长句被拆碎。结构化附录的瑜伽表一直打印中文 `combination`,再经逐词替换。
|
||||
- 修复:英文 Rath 用 `level N` 和英文级别名。附录瑜伽表和 Dosha 摘要在英文下改用英文孪生字段。`bvr_bandhubhisthyaktha_precise` 的英文模板改为 `weak or afflicted`。中文模板和中文字段没有改。没有往末尾词表加条目。
|
||||
- 验证:同上 200 张盘的粘连黑名单为 0。改前 16 张虚构盘里,这些粘连词每张盘都有若干条(见 PROGRESS)。
|
||||
- 防复发:200 张盘测试的黑名单。不要把「第 N 级」再送进会把「第」换成 `house ` 的词表。
|
||||
- 相关记录:BUG-1410、BUG-1272、BUG-1218。issue #89。
|
||||
- 复发自:无。与 BUG-1272 同一类末尾替换,单独记吃空格和错译。
|
||||
- 修复版本:分支 `codex/report-english-han-leak-20261021`。
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
# 进度:个人报告英文版不再整份丢掉
|
||||
|
||||
结论:英文版改在源头写英文。200 张固定虚构盘的英文都回来了,汉字为 0,粘连词为 0。中文版在同一随机种子下与 `bd3ce0e7b` 逐字节相同。
|
||||
|
||||
## 改了哪些源头
|
||||
|
||||
| 源头 | 英文现在用什么 |
|
||||
| --- | --- |
|
||||
| Rath 段 | `rath_summary_line_en` / `rath_report_lines_en` / `_ad_direction_lines_en`。级别写成 `level N` |
|
||||
| 瑜伽强度 | 先用 `strength_en`,没有再查 `STRENGTH_EN`。Punarphoo 仍是 `observational`。`部分减弱` 补了 `partly weakened` |
|
||||
| Panchanga | 新增 `overall_quality_en`:Auspicious (Subha) / Mixed / Inauspicious (Asubha)。中文三档没改 |
|
||||
| Dosha | Mangal、Kaal Sarp、Pitra、Sade Sati 新增 `summary_en`。英文结果表用它 |
|
||||
| Jaimini | 新增 `KARAKA_DOMAINS_EN` 和 `domain_en`。中文职责没改 |
|
||||
| 标题 | 英文用 Vimsopaka 英文标题、Jaimini 英文标题。中文标题没改 |
|
||||
| 结构化附录瑜伽表 | 英文改读 `combination_en` / `strength_en` / `effects_en`。还有汉字就留空 |
|
||||
| 一条英文模板 | `bvr_bandhubhisthyaktha_precise` 的英文从 `weak/afflicted` 改为 `weak or afflicted`。中文模板没改 |
|
||||
|
||||
第一轮改完 Rath、Dosha 和瑜伽强度之后,粘连词还在。原因是结构化附录仍在打印中文组合,以及英文模板里的 `weak/afflicted` 会被原有清理收成 `weakafflicted`。这两处都改在生产者,没有改词表。改完之后 200 张盘的粘连词为 0。
|
||||
|
||||
## 粘连词:改前 16 张,改后 200 张
|
||||
|
||||
改前是同一生成器的 0–15 号,在改代码之前渲染的英文。7 张当时整份被丢掉(有汉字)。下表是丢掉之前英文正文里的次数。改后 200 张(进程池)这些词都是 0。
|
||||
|
||||
| 词 | 改前 16 张里出现的盘数 | 改后 200 张 |
|
||||
| --- | --- | --- |
|
||||
| scoreandtimeline | 16 | 0 |
|
||||
| marriagequality | 16 | 0 |
|
||||
| whetherinunderway | 16 | 0 |
|
||||
| withSaturn | 16 | 0 |
|
||||
| careerplanetAmK | 16 | 0 |
|
||||
| careerdirection | 16 | 0 |
|
||||
| supportingstrongdegree | 16 | 0 |
|
||||
| beneficfactor count | 16 | 0 |
|
||||
| comparativelystrong | 16 | 0 |
|
||||
| house seven-round | 16 | 0 |
|
||||
| weakafflicted | 14 | 0 |
|
||||
| lordandstrong | 12 | 0 |
|
||||
| planetenterssign | 9 | 0 |
|
||||
| occupiesplanetcount | 7 | 0 |
|
||||
| debilitatedsign | 7 | 0 |
|
||||
| [source text retained | 7 | 0 |
|
||||
| lordstrongand | 6 | 0 |
|
||||
| partialreducedweak | 6 | 0 |
|
||||
| house 5 level | 5 | 0 |
|
||||
| Dashasignpresent | 4 | 0 |
|
||||
| inperiod start | 3 | 0 |
|
||||
| planetsdistributed | 3 | 0 |
|
||||
| planetsinbetween | 3 | 0 |
|
||||
| beneficlocated | 2 | 0 |
|
||||
| aturninperiod | 1 | 0 |
|
||||
| atpresent | 0 | 0 |
|
||||
|
||||
## 测试耗时(Windows)
|
||||
|
||||
| 检查 | 命令 | 结果 |
|
||||
| --- | --- | --- |
|
||||
| 200 张,进程池 4 | `pytest tests/test_report_english_sweep.py` | 3679 秒,退出码 0 |
|
||||
| smoke 12 张,进程池 4 | `pytest tests/test_report_english_sweep_smoke.py` | 199.6 秒,退出码 0 |
|
||||
| 变异:英文 Rath 行改回中文后再跑 smoke | 同上 | 183.8 秒,12/12 `han_leak`,退出码 1。已改回 |
|
||||
| 单张渲染 | 同一生成器的一张盘 | 约 43 秒 |
|
||||
|
||||
串行没有整文件再跑一遍。按单张约 43–70 秒估算,smoke 串行大约 9–14 分钟,200 张串行大约 2.5–4 小时。进程池的 200 张已经超过 10 分钟,按任务书让步第 4 条记下实测时间,没有减少盘数。
|
||||
|
||||
smoke 在这台 Windows 上是 199 秒,长过快速门单文件 90 秒。时间主要耗在屏蔽 PyJHora 之后,年度回放子进程空等。没有改这个等待,也没有把 200 张放进快速门。
|
||||
|
||||
## 中文逐字节
|
||||
|
||||
30 张:0–27、32、34。覆盖第 5 级(4)、凶(5)、计都反向(1)、Table 14(5)、Punarphoo(34)、完全 Kaal Sarp(32)。
|
||||
|
||||
同一 `PYTHONHASHSEED=0` 下,本分支和 `bd3ce0e7b` 的中文完整数据版 SHA-256 全部相同(30/30)。
|
||||
|
||||
不固定哈希种子时,王者格那一行的配对会在进程之间变(同一张盘一次是金星、一次是土星)。这在改代码之前就有。固定种子后两边一致,所以不是这次英文改动造成的。
|
||||
|
||||
## 编号和基线
|
||||
|
||||
- 本分支上的 `docs/BUG_HISTORY.md` 原来最大是 BUG-1403。`origin/staging` 已有 BUG-1409(#90)。本单用 BUG-1410、BUG-1411。1404–1408 仍空着。
|
||||
- 实现基线是任务书指定的 `9812f317`。其后 staging 又多了 10 个提交,其中 #87 改了 `pl9_reader_export.py` 的上升状态格。本分支没有变基。合入时两边应各自保留。
|
||||
- T1–T7 在同一次提交。T5 的粘连和附录瑜伽表是同一处英文路径,没有拆成第二次提交。
|
||||
|
||||
## 真机复测
|
||||
|
||||
合入并部署到 staging 之后:
|
||||
|
||||
1. 登录 staging。
|
||||
2. 新建一份个人报告。
|
||||
3. 揭幕之后切到 English。
|
||||
4. 全文搜不到汉字。第 5 级、凶、计都反向、Table 14、Punarphoo、完全 Kaal Sarp 这几类句子读得通(一份报告未必同时有这六类,有哪类就核对哪类)。
|
||||
5. 导出英文版。
|
||||
6. 已经生成过的旧报告需要重新生成,才有英文版。
|
||||
|
||||
## 环境
|
||||
|
||||
- 快速门、全量 pytest、前端判定没有在这台机器上跑,留给验收。
|
||||
- 没有登录 staging,真机步骤还没做。
|
||||
@@ -514,4 +514,4 @@
|
||||
| `TASK-other-subject-birth-time-edit-20261021.md` | — | 其他人的出生时间可以修改(去掉 `chart_profiles_guard_birth` 的填报时间不可改;推翻 people-archive P1 §验收 2 该条;active 锁不变) | 排队(等 #86 合入) | `codex/other-subject-birth-time-edit-20261021`;动表;不进循环 |
|
||||
| `TASK-chart-ascendant-slash-20261021.md` | — | #87 上升状态格「不适用」改「/」+ 悬停 / 点按说明;报告上升行同改并在表下加说明(推翻 10-15 口径) | 待领取(等 #86 合入) | `codex/chart-ascendant-slash-20261021` |
|
||||
| `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-report-english-han-leak-20261021.md` | `PROGRESS-report-english-han-leak-20261021.md` | #89 个人报告英文版约 4 成整份丢弃:漏译汉字源头补英文孪生字段、修吃空格;200 张固定种子回归 + 快速门 smoke(复发自 BUG-1272);中文逐字节不变 | 待验收 | `codex/report-english-han-leak-20261021` |
|
||||
|
||||
Reference in New Issue
Block a user