# 慢读交付工作簿

复制这份文件，跟着课程把同一个慢读项目做完。每完成一次委托，就留下实际改动和验证证据。空白表示尚未填写，验收项默认未执行；失败也照实记录。

[课程总目录](https://tsonglew.github.io/blog/backend-to-platform) · [提示词](./prompts.md) · [实验室](./lab/index.html)

| 本轮信息                 | 填写 |
| ------------------------ | ---- |
| 日期、代码版本或目录副本 |      |
| 工作目录与运行地址       |      |
| 本轮要交付的用户行为     |      |

先选本轮范围。下载包提供两份静态验收基线和本地实验；`prototype` 由需求课的任务生成，包内没有现成原型。

- [ ] 本地练习，固定 JSON、模拟状态和定时器实验
- [ ] 后续实践，接入自己提供的真实 API
- [ ] 后续实践，部署自己的应用并检查线上行为

后两项需要另外提供后端、会话或部署环境。本工作簿不代表这些能力已经实现。

## 01 工程地图

[对应课程](https://tsonglew.github.io/blog/backend-to-platform-project)

先让 AI 读取项目，再核对它指出的文件。沿用已有项目时记录真实命令；练习目录没有包管理依赖，不必先添加框架。

| 要找到的地方                         | 实际文件、命令或依据 |
| ------------------------------------ | -------------------- |
| 项目说明、运行时与依赖约束           |                      |
| 启动方式、页面入口与路由             |                      |
| 数据来源、契约与请求入口             |                      |
| 一次操作的事件、数据、状态与渲染路径 |                      |
| 调用链涉及的文件路径与符号名         |                      |
| 布局、样式和可复用组件               |                      |
| 检查、构建与发布入口，没有就写未提供 |                      |

- [ ] 已实际启动并打开目标页面，记录位置 ________
- [ ] 已检查 Console 与 Network，记录位置 ________

下一步允许修改的目录 ________。仍需确认的一件事 ________。

启动失败时，把原始信息填在这里。启动顺利可以按第一课访问不存在的 `/lab/missing.html` 练习，并注明这是人为 404。

| 一次启动或访问失败           | 实际记录 |
| ---------------------------- | -------- |
| 环境、命令与工作目录         |          |
| 预期页面、实际现象及错误证据 |          |
| 原因、修复动作与撤销方法     |          |
| 原命令或地址的复测结果       | 未执行   |

## 02 界面状态与视觉验收

[对应课程](https://tsonglew.github.io/blog/backend-to-platform-interface) · [语义基线](./02-html/index.html) · [响应式基线](./03-css/index.html)

先写清资料标题、搜索入口和次要信息的顺序，再让 AI 调整界面。基线的三条资料手工写在 HTML 中，不会自动加载 JSON；原生表单只改变 URL，不筛选列表。

本轮最重要的操作 ________。参考页面或截图 ________。本轮要保留的视觉规则 ________。

界面副本目录，默认 `ui-review` ________。修改前后截图位置 ________。这些路径会交给第三课的需求委托。

| 检查对象                       | 实际触发方式 | 结果与证据位置 |
| ------------------------------ | ------------ | -------------- |
| 初始与加载反馈                 |              | 未执行         |
| 成功列表、长标题与长网址       |              | 未执行         |
| 空数据与搜索无匹配，分别检查   |              | 未执行         |
| 失败与重试，输入是否保留       |              | 未执行         |
| 1280 px、390 px、320 px 的布局 |              | 未执行         |
| 键盘顺序、可见焦点和状态文字   |              | 未执行         |

状态检查用于生成后的原型。原型尚未生成时保留“未执行”；静态基线不能证明加载、错误恢复或搜索已经实现。

## 03 一次可验收的需求委托

[对应课程](https://tsonglew.github.io/blog/backend-to-platform-01-browser)

本地练习在 `prototype` 中新建页面，读取 `../resources.json`，保留三条资料。搜索匹配标题与简介，忽略英文大小写和首尾空格。`loading`、`empty`、`error`、`success` 入口必须标明模拟；加载持续到切换，失败允许重试恢复成功。

| 交给 AI 的信息               | 本轮填写 |
| ---------------------------- | -------- |
| 用户从什么起点完成什么操作   |          |
| 允许修改范围与本轮不做的功能 |          |
| 数据、界面状态与验收条件     |          |
| 最终 prompt 的文件或记录位置 |          |

- [ ] 原型可直接打开，路径与运行说明一致
- [ ] 搜索、无匹配、失败重试都已实际操作
- [ ] 对照了文件变更，基线和无关目录没有被覆盖

本轮修改文件 ________。验收证据 ________。仍未验证的行为 ________。

## 04 架构决定与状态归属

[对应课程](https://tsonglew.github.io/blog/backend-to-platform-02-html)

| 一页 ADR 要说明的事          | 本轮填写 |
| ---------------------------- | -------- |
| 已确认的约束与证据文件       |          |
| 选择的方案及一个可行替代方案 |          |
| 选择理由、主要代价和重评条件 |          |
| 最不确定的假设及最小验证动作 |          |

填写具体字段与拥有者。原型数据来自固定 JSON，不能直接写成“真实服务端已接通”。草稿、缓存和会话只在你的实现确实涉及它们时补充。

| 状态或数据       | 来源与拥有者 | 更新时机、刷新或后退时的行为 |
| ---------------- | ------------ | ---------------------------- |
| 已确认的搜索条件 |              |                              |
| 资料列表与总数   |              |                              |
| 筛选结果等派生值 |              |                              |
| 临时交互状态     |              |                              |

ADR 保存位置 ________。验证结果与证据 ________。

## 05 错误复现与修复证据

[对应课程](https://tsonglew.github.io/blog/backend-to-platform-03-css)

实验室只用本地定时器模拟竞态。#1 搜索 HTML，计划延迟 900 ms；80 ms 后发 #2 搜索 React，计划延迟 200 ms。把实际日志填入记录，计划时间不能代替观测值。

| 一次缺陷记录                 | 本轮填写 |
| ---------------------------- | -------- |
| 环境、版本与准确操作步骤     |          |
| 预期行为与实际差异           |          |
| 时间线、错误或请求证据的位置 |          |
| 根因判断与支持它的证据       |          |
| 最小修改及撤销方式           |          |

| 回归动作                                    | 实际结果与证据位置 |
| ------------------------------------------- | ------------------ |
| 故障模式结束，检查当前关键词与结果来源      | 未执行             |
| 修复模式结束，检查 #2 React 保留、#1 被丢弃 | 未执行             |
| 自己补充的相邻失败场景，写清实现与触发办法  | 未执行             |

当前实验没有真实 API 失败、鉴权或写入接口，不能用这次竞态通过的记录代替接口集成验收。

## 06 性能记录

[对应课程](https://tsonglew.github.io/blog/backend-to-platform-04-performance)

先填测量条件，再记录数值。实验室的同步与分批计算使用同一校验和函数，默认计算量为 800 万项；也可改量后重新测一组。总耗时包含分批等待，心跳计数反映定时器执行机会，均不能当作 INP。

| 测量条件                               | 本轮填写 |
| -------------------------------------- | -------- |
| 操作流程、代码版本与构建方式           |          |
| 设备、浏览器、视口与前台状态           |          |
| 计算量或数据规模、限速、缓存与预热方式 |          |
| 目标、指标口径、单位与证据工具         |          |
| 本次只改变的因素                       |          |

每种条件至少保留五次原始值。实验室可用“同步／分批”替换下表“改动前／改动后”，比较两种调度；不要把这种对照写成已经优化了生产应用。

| 测量次序 | 改动前 | 改动后 |
| -------- | ------ | ------ |
| 第 1 次  |        |        |
| 第 2 次  |        |        |
| 第 3 次  |        |        |
| 第 4 次  |        |        |
| 第 5 次  |        |        |
| 中位数   |        |        |

| 同时核对的内容               | 实际结果与证据位置 |
| ---------------------------- | ------------------ |
| 计算范围与最终校验和是否一致 | 未执行             |
| 最长工作片段、心跳与点击响应 | 未执行             |
| 原始记录或 Performance 录制  | 未执行             |

目标是否改善、代价是什么 ________。没有测量的结论或后续问题 ________。

## 最终交付清单

只在执行后勾选，每项都能回到本工作簿中的证据。未通过的项保留记录，说明对本轮交付的影响。

- [ ] 工程地图与运行说明能让另一位开发者找到并启动页面
- [ ] 界面状态、窄屏与键盘操作有实际检查记录
- [ ] 需求、允许改动范围与最终文件变更一致
- [ ] ADR 中的事实有依据，假设与未确认条件单独列出
- [ ] 原始缺陷已复测，相邻场景的结果也有保留
- [ ] 性能结论对应同条件数据，正确性和成本同时交代
- [ ] 未完成项、已知问题和撤销方法写进交付说明

交付地址或文件 ________。本轮结论与剩余问题 ________。

### 接真实 API 或发布时再补

以下属于后续实践，当前下载包没有提供真实后端、认证服务或生产部署。具备对应环境后再执行，不能提前勾选。

- [ ] 核对真实 URL、方法、响应契约与错误恢复，记录请求证据
- [ ] 验证会话过期、退出清理与服务端授权，确认不同用户的数据隔离
- [ ] 存在写入时验证重复提交、失败重试和服务端幂等行为
- [ ] 用生产构建检查直接访问、深层路径刷新、资源地址及部署回退
- [ ] 在目标设备复测，确认错误观测与版本回滚方式可用

后续实践记录位置 ________。尚缺的环境或条件 ________。
