# 九页功能、跳转与视觉检查 v4

日期：2026-11-03。范围：独立原型，不涉及作品集上线。

## 发现的问题与处理

| 原问题 | 本次处理 |
|---|---|
| 九个窗口各自存储，跨屏没有同一条记录 | 共享状态与本机存储，九页读取同一份数据 |
| 请求只是字符串，没有独立结果 | 请求建立ID，返回素材保留请求ID、地点、来源、类型和预约偏好 |
| 等待中也能看到固定的“本次结果” | 未到达时不生成新素材，历史走独立入口 |
| 只选照片或声音仍显示固定组合 | 按请求类型生成演示结果；声音可单独保存，照片每张5秒预览 |
| 编排名称和范围没传到播放 | 保存独立快照，读取具体保存记录及裁切后长度 |
| 草稿影响已保存回忆，换素材丢修改 | 草稿与保存版本分离，按素材保留草稿 |
| 点不同回忆仍播放相同内容 | 回放、编辑和删除使用具体回忆ID |
| 连接后没有明确输出目标 | 连接状态与目标分开；未连接禁用家中目标，断开停止并切回手机 |
| 排序只改变列表，播放不切照片 | 手机按保存顺序和进度更新画面 |
| 背景灰蓝混浊、地图块状杂乱 | 去掉整屏影像叠色，重绘细线SVG街区示意 |

## 浏览器实际走过的路径

1. 从探索打开装置，发起预约采集。
2. 输入“想看看熟悉街角的树影，听一段沿街风声。”。
3. 提交后任务保留原需求、傍晚预约和照片加环境声。
4. 等待中，收到片段页显示“素材还在路上”，没有假结果。
5. 推进至采集中，再接收结果；结果页所属请求ID与任务一致。
6. 去掉傍晚照片、下移第一张，名称改成“街角的傍晚 · 流程演示”，声音设为3–35秒。
7. 保存后库中为3张照片、32秒声音。回放标题与00:32时长一致。
8. 模拟连接失败，再重试成功；选择家中目标后显示“家中装置 · 已连接演示”与输出参数。
9. 播放／暂停后断开，其他回放窗口同步显示手机目标。
10. 刷新后，新名称、素材与32秒时长仍在。
11. 再发起只请求声音的任务；结果为0张照片、1段声音，可直接保存并进入45秒声音预览。

## 自动检查

`node test-flow.cjs`：14项全部通过。覆盖：未完成没有结果、请求来源与预约、照片独立保存、声音独立保存、编排传递、草稿隔离、离线、失败重试取消、多次请求、目标连接约束、序列化、删除当前回忆、空内容阻止保存、跨素材草稿保留。

## 版面与加载

九个画布均为402×874，内部横向宽度均为402；图片缺失0张，浏览器脚本错误0条。背景实测RGB(250,249,252)，地图加载 `assets/street-map.svg`。

## 交付检查

- Hard Gate PASS：无真实部署或硬件通信假声明，源素材与演示限制明确。
- Purpose Gate PASS：玻璃用于影像与操作叠层，普通列表不重复包裹；线稿不冒充导航地图。
- Liveliness PASS：以原街头端、城市照片和原型实拍为焦点，靛紫强调选择，浅底与局部透光来自用户参考。
- Craft PASS：主流程与异常分支实际操作，14项数据检查通过；九页共用同一份数据。

PASS仅针对原型范围，不表示真实硬件服务已完成。

## 仍缺的实际系统能力

真实采集通信、录音播放和裁切、设备连接协议与输出映射未实现。街头现场参与方式仍需原型验证。人工受邀者采集端未纳入本轮装置主流程；未放置一个没有接收端的邀请入口。
