报告中心原来是卡片方阵,状态只靠三块底色区分;报告一多,扫读成本
按卡片数线性涨。现在一列一行:带色点的状态 chip、标题、创建时间 ·
深度 · 主题,操作靠右。失败原因从右边一小块挪进行内,能完整读到。
chip 里原来的 StatusIcon(generating 转圈、ready 打勾、failed 警告)
换成 5px 色点——原型如此,且列表是轮询不是演出。失败行不加「重新
生成」,顶栏已经有唯一的生成入口。
行内小字只写接口真给的东西。GET /api/reports 不返回节数和盘数,所以
不写「9 节 · 22 张盘」(VOICE.md 第 2 条),原型图上那行是 mock。
/reports/[reportId] 是最后一个脱离外壳的全屏路由,九个 phase 全部并进
SecondaryShell,根节点从 <main> 改成 <div>(外壳自己就是 main)。
任务书 E10「没有目录」已过期:目录在 cfcd369d 就存在。本轮把它从左栏
挪到正文右侧并定稿视觉,位置用 grid-column 显式指定而不是靠 DOM 次序,
这样窄屏抽屉仍能排在源码最前面,不会掉到全文末尾。860px 以下常驻栏
消失、折叠抽屉保留——删掉抽屉等于窄屏彻底失去章节定位。
挂外壳带出一个真实风险:window.print() 打的是整篇,而 .chat-app /
.chat-panel 是 height:100%;overflow:hidden,会把九节报告裁成一页。阅读
页因此多挂一条 media="print" 样式,把外壳既隐藏又解锁。放组件里而不是
globals.css:它只在阅读页挂载期存在,对话页的打印不受影响,也不用
:has() 去够祖先,更不越界到并行轮次的 CSS 区段。
纸面三个 token 一个没动,--report-accent 仍是 #85432f;目录栏用应用
调色板,因为它是 chrome 不是纸。report-chart-grid-rehype.ts 一行未动,
新增断言守住它仍然接线(BUG-616/617)。
tsc 0 错;lint 0 error / 118 warning(未增);3350→3355 条,0 条既有
断言被改,31 条无 Docker 失败与基线逐条一致;四个路由渲染标记不变,
/ 首屏 gzip −0.58%。
「20 张盘以上不重叠、滚动不卡」与「挂外壳后的打印真实输出」无真机做
不了,已写成环境缺口,清单在 docs/testing/cend-report-20260916.md。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
72 lines
4.0 KiB
Markdown
72 lines
4.0 KiB
Markdown
# 真人验收清单 · 报告中心行式列表 + 报告阅读常驻目录(R6)
|
||
|
||
- 日期:2026-09-16
|
||
- 分支:`codex/cend-report-20260916`
|
||
- 对应:`docs/tasks/TASK-cend-surfaces-claude-alignment-20260916.md`(R6)、`docs/tasks/PROGRESS-cend-report-20260916.md`
|
||
|
||
会话侧已经做完的(**不用再做**):`tsc` 0 错、`lint` 0 error、3355 条测试(31 条无 Docker 失败与基线逐条一致)、`next build` 四个路由渲染标记不变、`/` 首屏 gzip −0.58%。纸面三个 token 未动、`report-chart-grid-rehype.ts` 未动,均有断言守着。
|
||
|
||
下面全是会话做不了的:需要登录态、真实报告数据、真实浏览器和打印机/PDF 导出。
|
||
|
||
---
|
||
|
||
## A. 20 张盘以上的报告仍然不重叠、滚动不卡(最高优先,关联 BUG-616 / BUG-617)
|
||
|
||
阅读页这一轮并进了 app 外壳,滚动容器的所有权变了,盘面 grid 必须复验。
|
||
|
||
1. 打开一份**九节、20 张盘以上**的完整个人报告。
|
||
2. 从头滚到底,不要跳。
|
||
3. 通过标准:
|
||
- 每张北印盘各占一格,**没有任何两张叠在同一位置**;
|
||
- 连续滚动不掉帧、不卡顿,尤其是经过密集盘面那几节时;
|
||
- 页面**不出现横向滚动条**(宽表格在自己的框里横滚是对的)。
|
||
|
||
## B. 打印 / 导出 PDF(本轮风险最高的一项)
|
||
|
||
阅读页现在坐在外壳里,而 `window.print()` 打的是整个文档。
|
||
|
||
1. 在同一份报告里点「打印」,另存为 PDF。
|
||
2. 通过标准:
|
||
- 纸上**没有**左侧栏、**没有**顶部那条 46px 窄栏、**没有**右侧目录;
|
||
- 报告**不是只印出一页**——九节应当完整分页;
|
||
- 纸面是浅色(打印锁定浅色调色板),正文不是白底白字;
|
||
- 页边距是 A4 / 13mm 12mm 14mm 的样子;
|
||
- 宽表格在纸上不被裁掉右边。
|
||
3. 顺带在微信内置浏览器里打开同一页点打印,应当出现「请在系统浏览器中打开本页后打印」的提示,而不是印出一份坏的。
|
||
|
||
## C. 右侧常驻目录
|
||
|
||
1. 桌面宽度(> 860px)打开报告。
|
||
2. 通过标准:
|
||
- 目录在**正文右侧**,滚动时一直在;
|
||
- 往下滚,高亮项跟着当前看到的章节走;
|
||
- 点任一节,跳到该节标题,**标题没有被顶部那条操作条盖住**;
|
||
- 目录自己内容超长时在目录框里滚,不把页面撑长。
|
||
|
||
## D. 窄屏
|
||
|
||
1. 把窗口拉窄到 860px 以内(或用手机)。
|
||
2. 通过标准:右侧目录栏消失;正文上方出现一个**收起的**「目录」,点开可用、能跳转。
|
||
3. 再窄到手机宽度:侧栏变抽屉,从顶栏的按钮能拉开、能关上,关上后焦点不丢。
|
||
|
||
## E. 报告中心行式列表
|
||
|
||
1. 账号里同时存在**生成中**与**已完成**至少各一份报告时打开「我的报告」。
|
||
2. 通过标准:
|
||
- 列表是**一列行**,不是卡片方阵;每行左边一枚带色点的状态 chip;
|
||
- 「已完成」「生成中」「未完成」三种色点一眼分得开(也请在深色模式下看一遍);
|
||
- 生成中那行能被读屏软件播报(macOS VoiceOver / Windows 讲述人均可);
|
||
- 行右侧:已完成是「导出报告(.md)」+「查看报告」,生成中是「查看进度」,失败行右侧**没有**按钮;
|
||
- 每行的第二行小字是「创建时间 · 深度 · 主题」,**不应出现**任何「N 节」「N 张盘」之类的数字(接口没有给,前端不许编)。
|
||
3. 把窗口拉窄到 767px 以内:行内操作换到正文下方、左对齐,不出现横向滚动。
|
||
|
||
## F. 失败行
|
||
|
||
1. 找一份失败的报告(或等一次真实失败)。
|
||
2. 通过标准:失败原因写在**行内**(不是挤在右边一小块),能完整读到;不因为太长把行撑破。
|
||
|
||
## G. 导出报告(.md)的错误提示
|
||
|
||
1. 断网后在「已完成」那行点「导出报告(.md)」。
|
||
2. 通过标准:该行出现一行红色错误文字,读屏软件按 alert 播报;再联网重试能成功;期间不会重复触发第二次导出。
|