Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
4.0 KiB
4.0 KiB
PROGRESS · 报告中英两版 · 2026-09-29
任务书:
docs/tasks/TASK-report-english-edition-20260929.md。执行:Claude(直接执行模式)+ 两个 fork 子代理(词典 E3、引擎 E1/E2),由 Claude 合并与复验。 分支codex/report-english-edition-20260929,基于 reader-polish 合入后的origin/staging=5f84637e。
交付对照
| 编号 | 结论 | 说明 |
|---|---|---|
| E1 引擎两种语言 | 完成 | /api/professional_report_reference 接受 languages: ["zh","en"];只算一次 packet,中文照旧渲染,英文由深拷贝 + report_language='en' 渲染;英文含汉字或渲染出错时不给 markdown_en,改给 english_unavailable。不传 languages 时响应与改前逐字节相同 |
| E2 英文渲染 | 完成 | 新模块 scripts/pl9_reader_english.py + pl9_reader_english_terms.py(固定英文词表);pl9_reader_export 只在 reader_main 入口按语言分派,中文路径不变;_dignity_label 英文取括号里的英文 |
| E3 词典 | 完成 | references/yoga_rules.json 477 条规则补 effects_en / combo_template_en / strength_en / source_en / accuracy_note_en(去掉 _en 键后与原文件相同);yoga_engine.py 带出 combination_en 等孪生字段,含约 20 处写死的中文默认模板;reader_dasha_applicability 加 language 参数,中文输出用 201 个合成 packet 逐字节比对不变 |
| E4 生成链 | 完成 | 新模块 personal-report-english-edition.ts::acceptEnglishEdition:英文必须零汉字、原文不含公开投影要删的词、英文核对表零汉字,否则只记原因码。快照升 version: 2(english 与 englishUnavailable 二选一),v1 旧快照照常读。不动数据库:英文版放在原有的 personal_report_sections 快照 payload 里(该表 payload 无大小约束) |
| E5 路由 | 完成 | GET /api/reports/:id 多给 englishEdition(ready / unavailable / legacy)、longformMarkdownEn、factTablesEn;读英文出错一律视为 unavailable,不影响中文 |
| E6 阅读页 | 完成 | ?lang=en(服务端页面读取,history.replaceState 写回);切换只在 englishEdition === "ready" 时出现;正文 / 目录 / 核对表 / 分盘核对 / 图例随语言;应用外壳保持中文;buildLongformOutline 的导航与摘要正则补英文对应 |
| E7 导出 | 完成 | 导出当前语言,英文文件名 Personal-Report-<日期>[-excerpt]-EN;AI 提示 + 「切到 English」;旧报告 / 英文失败各一句说明;文件大小按当前语言计算 |
| E8 文档 | 完成 | DESIGN.md、VOICE.md、CONTEXT.md(报告语言版本)、CHANGELOG.md、真机清单 |
三条红线的证据
| 红线 | 证据 |
|---|---|
| 中文逐字节不变 | tests/test_report_english_edition.py:3 个虚构盘,中文与参照提交渲染逐字节相同;不传 languages 的 API 响应相同;前端 assembleReportFactTables(engine, "zh") 与默认输出 deepEqual、projectOrdinaryReportMarkdown(x) 与 (x,"zh") 相同 |
| 英文零汉字 | Python:子代理用 75 个虚构盘验证零汉字;golden report-reader-main-fictional-en.json 汉字数 0;前端再验一遍(生成链与阅读页各一次) |
| 数字一致 | golden 中英两版行对齐(各 1,834 行),逐行数字序列相同,唯一例外是一行瑜伽名称:英文名「Kalatra Dosha (7th Lord in 6/8/12)」写出了宫位,中文名「婚姻障碍(7宫主在凶宫)」没有——这是标签,不是计算值,已在测试里点名固定 |
既有断言改动(原值 / 新值 / 原因)
| 文件 | 原值 | 新值 | 原因 |
|---|---|---|---|
frontend/tests/personal-report-view.test.ts「the report TOC is a persistent right-hand rail…」 |
<ReportToc headings={outline.headings} /> |
<ReportToc headings={outline.headings} language={language} /> |
E6:目录标签随语言;目录仍只从同一 outline 构建 |
验证
(见下方,Claude 实跑)