Files
Jyotisha/docs/tasks/PROGRESS-report-reader-polish-20260929.md
T
Jesse_ChenandClaude Opus 5.5 5f84637ea9
Independent Staging Quality Gate / publish (push) Canceled after 0s
Independent Staging Quality Gate / validate (push) Canceled after 3m19s
docs(tasks): progress and verification for report reader polish
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-09-29 19:04:45 +08:00

4.9 KiB
Raw Blame History

PROGRESS · 报告页打磨 · 2026-09-29

任务书:docs/tasks/TASK-report-reader-polish-20260929.md。执行:Claude(直接执行模式,产品 2026-09-29「请你开始执行」)。 分支 codex/report-reader-polish-20260929,基线 origin/staging = 6e393780。BUG-1092~1094。

交付对照

编号 结论 说明
R1 报告中心改版 完成 标题栏无按钮;.report-center-create 卡片居中放「生成报告」(实心,默认尺寸);下方「过往的报告」;无报告时一行「还没有个人报告。」。按钮的防重复点击、classifyCreateResponse 未改
R2 到底部 完成 新组件 report-edge-jump.tsx;LazyMarkdownSection 新增 forceVisible,点击时 flushSync 挂载全部章节后滚到 scrollHeight;距底 480px 内变「回到顶部」,一次只显示一个
R3 导出按钮 完成 描边、默认高度、可见文字「导出」,aria-label="导出报告" 保留
R4 目录层级 完成 一级 ink / 600 / 组间 --space-3;二级缩进 --space-5
R5 字段文案与表头 完成 三个标题、field_状态、p6 表头改中文 + 表下说明;状态列经 _dignity_label 去掉双写;同样的去重也用在「宫主(Bhavesh)落宫解释」表(排查时发现的同源问题)
R6 表格底色 完成 只作用于 .personal-report-table-wrap 与 .personal-report-fact-tables;打印 5% / 2.5%
R7 导出大小 完成 exportByteSize = TextEncoder 字节;formatExportSize 显示「约 N KB / 约 N.N MB」;全篇与已选各一个

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

文件 原值 新值 原因
frontend/tests/personal-report-view.test.ts「ready reports expose only the back link and accessible export icon」 match size="icon"、match <Download aria-hidden="true" />、match title="导出" doesNotMatch size="icon"、match variant="outline"、match <Download aria-hidden="true" />导出 §3-3:图标按钮改为带文字的描边按钮。aria-label="导出报告"、返回链接、禁用项断言不变
frontend/tests/report-export-drawer.test.tsx「reader actions keep only the accessible export icon」 title 等于「导出」 按钮文字等于「导出」,title 为空 同上。按钮数量仍为 1、对话框开合断言不变
frontend/tests/personal-report-entry.test.ts「entry stays on one line…」 match shrink-0 doesNotMatch shrink-0(whitespace-nowrap 仍 match) §3-1:按钮移出 46px 标题栏,不再与标题争宽;「一行不折」要求不变
frontend/tests/react-client-lifecycle-test-support.ts(测试宿主) 无 closest / scrollTo 增加按类名的 closest 与记录调用的 scrollTo、scrollTop/scrollHeight/clientHeight 让「到底部」能在宿主里被真实点击验证;不影响其它用例(全量对比见下)

测试名均未改(名字里的 "icon" 保留,避免名单消失;语义以断言为准)。

Golden

frontend/tests/fixtures/report-reader-main-fictional.json:用同一虚构输入(tests/test_report_reader_main.py::FICTIONAL)、同一引擎,分别以改前(origin/staging 的 pl9_reader_export.py)与改后模块渲染,取两者 diff 打到 golden 上。golden 与改前渲染本身只差一行 Shadbala 小数(-18.80 / -18.79,同机两次运行也会抖动,与本单无关,未带入)。golden 改动 = 标题 1 行、表头 2 行、状态列 9 行、说明 2 行、宫主表状态 7 行。

验证(Claude 实跑,Linux,Node 22.14 / Python 3.11 .venv-review)

项 结果
tsc --noEmit 0 错
npm run lint 0 error,126 warning(与基线 6e393780 相同)
npm test(全量) 基线 4,357 / fail 24;本分支 4,364 / fail 24。失败名单逐条相同,全是无 Docker 的数据库 / 部署套件。测试名单只增不减(新增 7 条,消失 0 条)
过程中发现 首版把「到底部」状态放在文章视图里,撞上「article markdown trees are memoized and hold no scroll state」合同;改为外部信号(只由懒渲染章节订阅),合同原样通过,提交 156162f6
next build / 仍 ○ Static
首屏 gzip-9(index.html 引用的 26 个脚本合计) 基线 643,258 B → 643,265 B(+7 B,+0.001%)
Python 定向 tests/test_report_reader_main.py 全部通过(含新增 1 条)
Python 快速门 run_quality_gate.py --profile quick Python 步 1000 passed / 2 skipped;门内 npm test 步用的是系统 Node 20,67 条失败属环境(同一套件用 Node 22 跑见上一行,与基线一致)

环境缺口

  • 浏览器级真机验收:无登录态与 Chrome,清单见 docs/testing/report-reader-polish-20260929.md。
  • 数据库套件:无 Docker,未跑;本单不动表。