ReadViewSDK/.planning/phases/01-current-engine-boundaries/01-PATTERNS.md

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 DTHTMLAttributedStringBuilderdtOptions、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渲染管线详解.mdDTCoreText自定义修改分析.md 提炼目标能力,再映射回当前 EPUBTextRendering 触点。
  • 若引用旧实现差异,优先查看 Sources/RDReaderView/LegacyRDReaderController/RDEPUBTextPaging.swift,但不要把 legacy 行为当成自动保留项,必须与新 controller 现状对齐。