3.2 KiB
3.2 KiB
Phase 1: 对齐现状、边界与重构切入点 - Pattern Map
Goal
为本阶段执行提供“先看哪里、按什么证据写文档”的最短路径。Phase 1 不改业务代码,主要产出审计和策略文档,因此模式映射聚焦在源码证据与现有方案文档之间的对应关系。
Planned Outputs
| Planned file | Role | Primary evidence | Why this is the right analog |
|---|---|---|---|
.planning/phases/01-current-engine-boundaries/01-reflowable-audit.md |
当前引擎审计文档 | Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift, Sources/RDReaderView/EPUBTextRendering/*.swift, Sources/RDReaderView/EPUBCore/RDEPUBParser+ReadingProfile.swift |
这些文件构成真实 .textReflowable 调用链和 fixed/interactive 分流边界。 |
.planning/phases/01-current-engine-boundaries/01-refactor-entry-strategy.md |
直接演进策略文档 | Doc/WXRead/analysis/*.md, Doc/FeatureSolution/ReflowableEPUB_WXReadRenderer_Design.md |
这些文档定义了 WXRead 参考能力与当前项目已有方案草案。 |
Code Evidence Map
| Concern | Closest source of truth | Evidence to extract |
|---|---|---|
| URL 入口如何进入阅读器 | Sources/RDReaderView/RDURLReaderController.swift |
EPUB vs TXT 分流、RDEPUBReaderController 嵌入方式、TXT fallback。 |
.textReflowable 何时生效 |
Sources/RDReaderView/EPUBCore/RDEPUBParser+ReadingProfile.swift |
.webFixedLayout / .webInteractive / .textReflowable 判定。 |
| 原生 reflowable 渲染入口 | Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift |
paginatePublication() 内的 RDEPUBTextBookBuilder 分支。 |
| 章节 HTML 如何转富文本 | Sources/RDReaderView/EPUBTextRendering/RDEPUBDTCoreTextRenderer.swift |
DTHTMLAttributedStringBuilder、dtOptions、fragment marker 注入。 |
| 章节如何切页 | Sources/RDReaderView/EPUBTextRendering/RDEPUBTextBookBuilder.swift and RDEPUBTextPaginationSupport.swift |
ss_pageRanges(size:)、RDEPUBTextPage offsets、chapter/page flattening。 |
| 文本页如何接回 reader UI | Sources/RDReaderView/EPUBUI/RDEPUBTextContentView.swift and RDEPUBReaderController.swift |
高亮、搜索、selection、page number、location persistence。 |
| 哪些链路必须留在 WebView | Sources/RDReaderView/EPUBCore/RDEPUBWebView+FixedLayout.swift, RDEPUBWebView+Reflowable.swift, RDEPUBPaginator.swift |
Fixed-layout spread loading、interactive / web pagination、presentation script。 |
| 哪些容器代码不能动 | Sources/RDReaderView/RDReaderView.swift |
page curl / scroll container、dual-page、orientation handling。 |
Writing Guidance
- 审计文档优先引用源码事实,再引用
.planning/codebase/ARCHITECTURE.md作为补充解释。 - 策略文档优先从
Doc/WXRead/analysis/EPUB渲染管线详解.md、DTCoreText自定义修改分析.md提炼目标能力,再映射回当前EPUBTextRendering触点。 - 若引用旧实现差异,优先查看
Sources/RDReaderView/LegacyRDReaderController/RDEPUBTextPaging.swift,但不要把 legacy 行为当成自动保留项,必须与新 controller 现状对齐。