PDF 阅读器在慢速双指缩放、竖向滚动页高异步更新、页面请求超时和绘画橡皮擦等场景中,存在视口跳动、迟到结果被错误丢弃、缓存边界不明确及笔迹显示与持久化不同步的问题;同一本书的标注读取和并发写入也会产生不必要的磁盘访问或覆盖风险。\n\n调整缩放 inset 计算和竖向阅读锚点恢复,避免缩放变换被重复计入、真实页高到达时改变当前阅读位置。页面请求改为带 token 的超时重试机制,可在缓存窗口内接收有效迟到结果并提供失败重试入口;页面大图、OCR、笔迹和描述缓存统一按当前页前后两页收敛,PDF 标识改为完整内容 SHA-256,避免同名或相近文件复用错误阅读状态。\n\n绘画会话内按路径实时重绘,退出会话后使用按图层派生的位图缓存,确保橡皮擦即时作用于已提交笔迹;同时为笔迹持久化增加版本控制、为标注读写增加同步保护和内存快照,降低复用与并发场景下的状态错乱。\n\n将项目技能统一迁入 .agents/skills,并以 .claude/skills 相对软链接供 Claude Code 读取;新增详细 Git 提交技能,自动审查改动、生成中文提交说明并约束安全推送。 验证:所有项目技能通过 quick_validate;执行 xcodebuild -workspace ReadViewDemo/ReadViewDemo.xcworkspace -scheme ReadViewDemo -configuration Debug -sdk iphonesimulator CODE_SIGNING_ALLOWED=NO build,构建成功。
45 lines
2.4 KiB
Markdown
45 lines
2.4 KiB
Markdown
---
|
||
name: discuss-sdk-feature-solution
|
||
description: 讨论 ReadViewSDK 的新功能、修复或重构方案,核验 EPUB/PDF 阅读器源码,比较实现路径并收敛为可直接开发的计划。用户说“先讨论”“先给方案”“比较方案”“不要改代码”,或接口、缓存、渲染路径、持久化兼容存在会改变实现方式的灰区时使用;路径已明确且用户要求直接修改时不要使用。
|
||
---
|
||
|
||
# SDK 功能方案讨论
|
||
|
||
## 目标
|
||
|
||
在编码前用仓库事实收敛决策,输出最小、可验证、能交给开发 Skill 直接执行的方案。本 Skill 默认不修改业务代码。
|
||
|
||
## 工作流
|
||
|
||
1. 检查工作区并定位目标模块、入口、相邻实现和对应文档。
|
||
2. 区分已锁定决定、阻塞决定、实现假设、后续项与非范围。
|
||
3. 按根目录 `AGENTS.md` 读取所需文档;结论必须由真实路径、类型、方法和调用链支撑。
|
||
4. 方案未定时给出 2–4 个可行路径,比较改动面、公开 API、缓存/持久化、渲染路径、性能、回归和维护成本,并明确推荐一个。
|
||
5. 用户已选定方案时只细化该方案,不继续横向发散。
|
||
6. 方案至少覆盖:
|
||
- EPUB:`.textReflowable`、`.webInteractive`、`.webFixedLayout` 中受影响的路径
|
||
- PDF:宿主图片 Provider 与内置 PDFKit Provider 中受影响的路径
|
||
- 公共 API、Codable/磁盘格式、缓存版本和 CocoaPods 集成影响
|
||
- 异步乱序、取消、生命周期、内存压力和失败降级
|
||
7. 收敛为文件级任务、数据/状态流、成功标准、验证方式、风险和回滚点。
|
||
|
||
## 输出
|
||
|
||
默认在对话中给出:
|
||
|
||
- 需求、范围与非范围
|
||
- 已确认决定、阻塞项和必要假设
|
||
- 方案对比或已选方案拆解
|
||
- 涉及文件、调用链、复用点和兼容策略
|
||
- 风险、回滚点与验证清单
|
||
- 建议交给 `start-sdk-feature-dev-lite` 或 `start-sdk-feature-dev` 的执行摘要
|
||
|
||
用户要求落文档,或方案需要跨会话执行时,写入 `Doc/FeatureSolution/`,并在存在文档索引时同步 `Doc/index.md`。
|
||
|
||
## 边界
|
||
|
||
- 不为未确认的未来需求预埋抽象。
|
||
- 必要改动、可选优化和后续治理必须分开。
|
||
- 未核验的系统 API、第三方能力、文件格式或缓存行为不得写成事实。
|
||
- 文档与源码冲突时以当前源码为事实,并明确指出文档待同步项。
|