让 Claude 生成一份报告,并附上一个必须通过的小测验,能把"我扫了一眼 diff"变成经过验证的理解——不真正弄懂,这份产物就不会让你觉得"完事了"。
I want to make sure I understand everything that happened in this change before I merge. Give me an HTML report on the export-feature diff — context, intuition, what was done — with a quiz at the bottom that I must pass.
中文大意:在合并之前,我想确保自己完全理解这次改动里发生的一切。请针对导出功能的 diff 给我一份 HTML 报告——背景、直觉、做了什么——并在底部附上一个我必须通过的小测验。
这个涉及 14 个文件的 diff 为审阅讨论串加入了服务端片段导出。先读完下面三节,再通过小测验。过不了,就说明你还没准备好合并——这正是本页的用意。
一张图胜过 14 个文件:导出请求现在走哪条路,之前又走哪条。
在这次改动之前,"导出片段"意味着浏览器用 MediaRecorder 在客户端逐帧拼接并上传结果——又慢、又锁死标签页,而且在 Safari 上根本跑不通。现在客户端只负责发起导出请求;新增的 worker 会基于原始媒体在服务端渲染,客户端则轮询任务状态,直到拿到签名下载 URL(signed URL)。
这些是扫一眼 diff 看不出来的部分。每一条都是刻意为之——理由如下。
media/originals/,从不使用 720p 审阅代理。因此导出的片段可能比审阅者当初画批注时看到的画面更清晰。locked_until = now() + 10min 被认领。如果 worker 在渲染中途挂掉,不会触发任何重试;锁到期后,下一个空闲的 worker 会从头接手这个任务。GET /api/exports/:id 返回的 S3 签名 URL 有效期为 24 小时,但底层对象要等 7 天生命周期规则触发后才会删除。重新请求该接口会签发一个新 URL,无需重新渲染。工作区级签名 URL 鉴权。 GET /api/exports/:id 自己不做任何权限检查——它复用了已经守护所有媒体路由的 requireWorkspaceMember 中间件。一旦这个中间件的会话处理发生变化(有一张关于访客审阅者会话的未关闭工单 BL-2214),导出下载的行为也会跟着变。而这个 diff 里没有任何东西会提醒你这一点。
6/6——这次改动,你已经能讲清楚给任何为它被 on-call 叫醒的人听。标准清单如下。
下面这些题你答错了。这些盲区可以直接对应回报告的相应小节: