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

6.0 KiB
Raw Blame History

phase: 01-current-engine-boundaries plan: 01 type: execute wave: 1 depends_on: [] files_modified: - .planning/phases/01-current-engine-boundaries/01-reflowable-audit.md autonomous: true requirements: - COMP-02 user_setup: [] must_haves: truths: - 审计文档准确描述 RDURLReaderController -> RDEPUBReaderController -> readingProfile -> text/native or web 的真实分流链路。 - 审计文档明确 webFixedLayoutwebInteractive 继续走 WKWebView,不纳入原生重构。 - 审计文档明确 RDReaderView 是必须保持稳定的翻页容器。 artifacts: - .planning/phases/01-current-engine-boundaries/01-reflowable-audit.md key_links: - RDEPUBReaderController.paginatePublication()RDEPUBParser.readingProfile() 的关系被写清楚。 - RDEPUBTextBookBuilder / RDEPUBDTCoreTextRenderer / RDEPUBTextContentView 之间的数据流被写清楚。 产出一份基于当前代码的 `.textReflowable` 审计文档。

Purpose: 为后续 Phase 2/3 提供“当前旧引擎真实是什么”的事实基线,避免围绕错误边界重构。 Output: .planning/phases/01-current-engine-boundaries/01-reflowable-audit.md

<execution_context> @$HOME/.codex/get-shit-done/workflows/execute-plan.md @$HOME/.codex/get-shit-done/templates/summary.md </execution_context>

@.planning/PROJECT.md @.planning/ROADMAP.md @.planning/STATE.md @.planning/phases/01-current-engine-boundaries/01-RESEARCH.md @.planning/phases/01-current-engine-boundaries/01-PATTERNS.md @Sources/RDReaderView/RDURLReaderController.swift @Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift @Sources/RDReaderView/EPUBCore/RDEPUBParser+ReadingProfile.swift @Sources/RDReaderView/EPUBTextRendering/RDEPUBDTCoreTextRenderer.swift @Sources/RDReaderView/EPUBTextRendering/RDEPUBTextBookBuilder.swift @Sources/RDReaderView/EPUBTextRendering/RDEPUBTextPaginationSupport.swift @Sources/RDReaderView/EPUBUI/RDEPUBTextContentView.swift @Sources/RDReaderView/RDReaderView.swift Task 1: 梳理原生 reflowable 调用链与数据模型 .planning/phases/01-current-engine-boundaries/01-reflowable-audit.md Sources/RDReaderView/RDURLReaderController.swift, Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift, Sources/RDReaderView/EPUBCore/RDEPUBParser+ReadingProfile.swift, Sources/RDReaderView/EPUBTextRendering/RDEPUBDTCoreTextRenderer.swift, Sources/RDReaderView/EPUBTextRendering/RDEPUBTextBookBuilder.swift, Sources/RDReaderView/EPUBTextRendering/RDEPUBTextPaginationSupport.swift 新建 `01-reflowable-audit.md`,写清楚 `RDURLReaderController` 如何把 `.epub` 交给 `RDEPUBReaderController``RDEPUBParser.readingProfile()` 如何把内容分为 `textReflowable` / `webFixedLayout` / `webInteractive`,以及 `RDEPUBReaderController.paginatePublication()` 在 `textReflowable` 分支内如何调用 `RDEPUBTextBookBuilder`、`RDEPUBDTCoreTextRenderer`、`ss_pageRanges(size:)`、`RDEPUBTextBook` / `RDEPUBTextPage`。必须包含关键类型名、关键方法名和每层输入输出,不能只写概念描述。 rg -n "RDURLReaderController|RDEPUBReaderController|RDEPUBTextBookBuilder|RDEPUBDTCoreTextRenderer|ss_pageRanges|RDEPUBTextBook|RDEPUBTextPage" .planning/phases/01-current-engine-boundaries/01-reflowable-audit.md - `.planning/phases/01-current-engine-boundaries/01-reflowable-audit.md` 存在 - 文档包含 `RDURLReaderController`、`RDEPUBReaderController`、`RDEPUBTextBookBuilder`、`RDEPUBDTCoreTextRenderer`、`RDEPUBTextContentView` - 文档明确 `ss_pageRanges(size:)` 仍是当前分页核心 审计文档把当前 native reflowable 路径的入口、渲染、分页、展示和位置数据模型全部串起来。 Task 2: 写清 WebView 边界与容器不变约束 .planning/phases/01-current-engine-boundaries/01-reflowable-audit.md Sources/RDReaderView/EPUBCore/RDEPUBParser+ReadingProfile.swift, Sources/RDReaderView/EPUBCore/RDEPUBPaginator.swift, Sources/RDReaderView/EPUBCore/RDEPUBWebView+FixedLayout.swift, Sources/RDReaderView/EPUBCore/RDEPUBWebView+Reflowable.swift, Sources/RDReaderView/RDReaderView.swift 在同一份审计文档中追加“边界与排除项”章节,明确 `webFixedLayout` 与 `webInteractive` 为什么继续依赖 `WKWebView``RDEPUBPaginator` 在当前架构中的职责,以及 `RDReaderView` 的 page curl / scroll / dual-page / orientation 逻辑为什么必须保持不变。把这些结论落成可以直接供后续 phase 引用的约束条目。 rg -n "WKWebView|webFixedLayout|webInteractive|RDEPUBPaginator|RDReaderView|不修改" .planning/phases/01-current-engine-boundaries/01-reflowable-audit.md - 文档包含 `WKWebView`、`webFixedLayout`、`webInteractive`、`RDEPUBPaginator`、`RDReaderView` - 文档有单独的边界或排除项章节 - 文档明确写出“`RDReaderView` 不修改”或等价表述 审计文档既说明当前原生引擎,也说明哪些路径和容器不属于本次重构。 Before declaring plan complete: - [ ] `test -f .planning/phases/01-current-engine-boundaries/01-reflowable-audit.md` - [ ] `rg -n "textReflowable|webFixedLayout|webInteractive|RDReaderView" .planning/phases/01-current-engine-boundaries/01-reflowable-audit.md` - [ ] 文档内容可直接对应到当前源码文件,而不是只复述 roadmap 目标

<success_criteria>

  • All tasks completed
  • All verification checks pass
  • No errors or warnings introduced
  • 审计文档能支撑后续 Phase 2/3 不再重新摸索当前引擎边界 </success_criteria>
After completion, create `.planning/phases/01-current-engine-boundaries/01-01-SUMMARY.md`