Files
cc-web/.planning/full-outline-history/task_plan.md
2026-09-13 23:59:27 +08:00

50 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 补齐定位列表的完整历史索引
## 目标
让“定位”列表展示当前会话的全部用户消息,即使聊天区只保留最近 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 | 为现有历史处理器回归夹具补充独立定位状态和合并函数桩;随后全量回归通过 |