ReadViewSDK/.planning/ROADMAP.md

101 lines
6.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.

# 路线图ReadViewSDK
## 概述
本次路线图围绕“**直接重构现有 reflowable EPUB 旧引擎**”展开,而不是继续在轻量 renderer 外壳上做增量增强也不是维护并行的第二套原生引擎。Fixed Layout 与交互式 EPUB 保持 `WKWebView` 路径不变reflowable EPUB 则在现有 `.textReflowable` 主路径上逐步引入 WXRead 风格的 CSS 分层、自定义 DTCoreText 属性体系、页面级元数据与复杂分页能力,最终完成对旧内核的直接演进。**当前翻页代码(`RDReaderView` 及现有翻页模式/交互逻辑)不在本次改动范围内,新内核必须适配现有翻页容器。**
## Phases
- [ ] **Phase 1对齐现状、边界与重构切入点** - 明确当前旧引擎的真实调用链、分流边界与必须保留的兼容能力
- [ ] **Phase 2重构 typesetter 与 CSS 分层** - 在旧引擎基础上引入 WXRead 风格样式组织与章节级 HTML → attributed string 转换增强
- [ ] **Phase 3重构属性体系与复杂分页器** - 引入页面级 attributed string 元数据与更强的分页/布局能力
- [ ] **Phase 4接回现有 reader 能力链路** - 让新内核与阅读位置、高亮、搜索、主题切换等现有功能继续协作
- [ ] **Phase 5回归验证与稳定性收敛** - 以样本书和主流程为核心完成回归、修复与验收
## Phase Details
### Phase 1对齐现状、边界与重构切入点
**Goal**:把“当前旧引擎是什么、哪些能力必须保留、哪些路径绝对不能动”说清楚,形成直接重构旧引擎的实施基线。
**Depends on**Nothing (first phase)
**Requirements**COMP-02
**Success Criteria**(必须为 TRUE
1. 能准确描述当前 `.textReflowable` 的真实调用链与数据流
2. Fixed Layout / 交互式 EPUB 的 `WKWebView` 边界不含糊,且不被纳入本次重构
3. 当前翻页代码(`RDReaderView`)被明确排除在本次改造范围外
4. 输出一份针对“旧引擎直接演进”的重构切入策略,而不是双引擎方案
**Plans**2 plans
Plans:
- [ ] 01-01审计当前 `.textReflowable` 路径(`RDEPUBDTCoreTextRenderer` / `RDEPUBTextBookBuilder` / `RDEPUBTextPaginationSupport` / `RDEPUBTextContentView`
- [ ] 01-02结合 `Doc/WXRead/analysis/*` 提炼旧引擎可直接演进的切入点与必须保留的兼容链路
### Phase 2重构 typesetter 与 CSS 分层
**Goal**:在现有旧引擎基础上引入 WXRead 风格的 CSS 分层与章节级 HTML → attributed string 增强,让 renderer 输入具备更完整的排版语义。
**Depends on**Phase 1
**Requirements**REND-01, REND-02
**Success Criteria**(必须为 TRUE
1. reflowable EPUB 的章节渲染输入不再只是“简单 DTCoreText 默认 builder + 少量 options”
2. CSS 五层策略(`default / replace / dark / epub / user`)能够在旧引擎路径中落地
3. 章节级 baseURL、资源解析与样式注入策略清晰、可验证
**Plans**3 plans
Plans:
- [ ] 02-01设计并实现旧引擎中的 WXRead 风格 stylesheet builder / HTML 预处理增强
- [ ] 02-02改造 `RDEPUBDTCoreTextRenderer` 与相邻渲染链路,使其承接新的样式分层与章节上下文
- [ ] 02-03验证章节级图片/CSS/基础资源在新渲染输入下可正常解析
### Phase 3重构属性体系与复杂分页器
**Goal**:在旧引擎路径中引入页面级 attributed string 元数据与更复杂的分页/页面布局能力,替代当前简单 `pageRanges` 切页模式。
**Depends on**Phase 2
**Requirements**REND-03, REND-04
**Success Criteria**(必须为 TRUE
1. 自定义 DTCoreText 属性体系可承载分页、块元素、图片、页面语义等布局信息
2. 新分页器具备明显强于当前 `CTFrameGetVisibleStringRange` 切页的页面布局能力
3. 分页结果可为后续 reader 集成提供稳定的页面范围与页面语义
**Plans**3 plans
Plans:
- [ ] 03-01定义并实现页面级 attributed string 元数据与自定义属性键
- [ ] 03-02在旧引擎基础上重构分页器使其具备接近 `WRCoreTextLayouter / WRCoreTextLayoutFrame` 的核心能力
- [ ] 03-03验证复杂块元素、图片与分页边界控制在新分页器下可工作
### Phase 4接回现有 reader 能力链路
**Goal**:让新内核在不新增并行原生引擎、且不修改当前翻页代码的前提下,继续服务现有 reader UI、阅读位置、高亮、搜索与主题切换能力。
**Depends on**Phase 3
**Requirements**COMP-01, COMP-03, COMP-04
**Success Criteria**(必须为 TRUE
1. `RDURLReaderController` / `RDEPUBReaderController` 主流程在新内核下继续可用
2. 阅读位置映射、高亮/选区、搜索结果定位可继续工作
3. 字号/行高/主题切换可驱动正确的重新分页,而不是破坏状态链路
4. `RDReaderView` 及现有翻页模式/交互逻辑无需修改即可承接新内核输出
**Plans**3 plans
Plans:
- [ ] 04-01将新内核接回 `RDEPUBTextBookBuilder` / `RDEPUBTextContentView` / `RDEPUBReaderController`,不修改 `RDReaderView`
- [ ] 04-02修复并验证阅读位置映射、高亮、搜索等兼容能力
- [ ] 04-03验证字体、行高、主题切换后的重新分页与状态恢复
### Phase 5回归验证与稳定性收敛
**Goal**:围绕样本书和主流程做回归,收敛分页正确性、位置映射稳定性与关键阅读交互问题。
**Depends on**Phase 4
**Requirements**STAB-01, STAB-02
**Success Criteria**(必须为 TRUE
1. 至少 3 类样本书验证通过:纯文本/小说类、含图片与复杂段落样式、含外链与多个 CSS 文件引用
2. `.epub` / `.txt` 打开主流程、Fixed Layout、交互式 EPUB 不回归
3. 新内核下不出现崩溃、白屏、无限加载、严重错页或关键交互链路失效
**Plans**2 plans
Plans:
- [ ] 05-01构建样本书验证矩阵与诊断手段日志/断言/复现清单)
- [ ] 05-02收敛分页、位置映射、图片/块元素分页与主题切换后的稳定性问题
## Progress
| Phase | Plans Complete | Status | Completed |
|---|---:|---|---|
| 1. 对齐现状、边界与重构切入点 | 0/2 | Not started | - |
| 2. 重构 typesetter 与 CSS 分层 | 0/3 | Not started | - |
| 3. 重构属性体系与复杂分页器 | 0/3 | Not started | - |
| 4. 接回现有 reader 能力链路 | 0/3 | Not started | - |
| 5. 回归验证与稳定性收敛 | 0/2 | Not started | - |