50 lines
2.4 KiB
Markdown
50 lines
2.4 KiB
Markdown
# 补齐定位列表的完整历史索引
|
||
|
||
## 目标
|
||
|
||
让“定位”列表展示当前会话的全部用户消息,即使聊天区只保留最近 45 条用于显示;旧消息只进入定位索引,不重新插入聊天 DOM,也不额外占用聊天滚动空间。
|
||
|
||
## 阶段
|
||
|
||
| 阶段 | 状态 | 验收标准 |
|
||
|---|---|---|
|
||
| 1. 核对定位列表与历史分页的数据链路 | complete | 明确当前定位数据仅来自 DOM,并确认可复用的历史分页响应 |
|
||
| 2. 补充完整定位索引的失败回归 | complete | 回归能证明隐藏旧消息时定位列表仍应获得完整用户消息 |
|
||
| 3. 增加独立的定位历史索引缓存 | complete | 打开定位列表时可按页读取完整历史,且不改变聊天消息 DOM |
|
||
| 4. 支持旧消息定位加载与滚动 | complete | 点击未渲染旧消息会按消息索引加载所需页并滚动到目标 |
|
||
| 5. 运行定向回归、语法和差异检查 | complete | 定向回归、JS 语法检查、git diff --check 全部通过 |
|
||
| 6. 清理临时记录并交付修改结果 | complete | TODO CSV 删除,明确完整列表与聊天空间隔离的实现和验证结果 |
|
||
|
||
## 机器可读阶段状态
|
||
|
||
### Phase 1:核对定位列表与历史分页的数据链路
|
||
**Status:** complete
|
||
|
||
### Phase 2:补充完整定位索引的失败回归
|
||
**Status:** complete
|
||
|
||
### Phase 3:增加独立的定位历史索引缓存
|
||
**Status:** complete
|
||
|
||
### Phase 4:支持旧消息定位加载与滚动
|
||
**Status:** complete
|
||
|
||
### Phase 5:运行定向回归、语法和差异检查
|
||
**Status:** complete
|
||
|
||
### Phase 6:清理临时记录并交付修改结果
|
||
**Status:** complete
|
||
|
||
## 关键决策
|
||
|
||
- 不改变聊天区“最近 45 条 + 手动回看”的显示策略。
|
||
- 不把定位列表的完整历史通过隐藏 DOM 塞进消息滚动区;旧消息只保存在轻量索引对象中。
|
||
- 复用 `load_history_page` 的现有分页协议,新增请求标识分支,避免与用户点击“查看更早消息”的聊天分页互相抢状态。
|
||
|
||
## 错误记录
|
||
|
||
| 错误 | 尝试 | 处理 |
|
||
|---|---|---|
|
||
| 定向历史回归按预期失败:缺少 `currentOutlineHistoryState` | 1 | 证明旧实现没有独立定位索引;已补充失败契约后进入实现 |
|
||
| 全量回归提取历史处理器时报 `activeOutlineHistoryRequest is not defined` | 1 | 为现有历史处理器回归夹具补充独立定位状态和合并函数桩;随后全量回归通过 |
|