IOS-INFO-000:iOS 学习信息采集总设计文档 #108

Closed
opened 2026-06-10 21:28:08 +08:00 by wangdl · 1 comment
Owner

目标

输出 iOS 学习信息采集与上传总设计,明确 iOS 在 Rust document runtime、API 学习信息体系、首页继续学习、资料详情页、分析页之间的职责边界。

背景

当前 iOS 侧存在致命问题:

  1. ReadingEventCollector.open/close 被注释,事件链路断裂。
  2. 无本地上传队列。
  3. 首页继续学习硬编码。
  4. 阅读位置恢复仅本地,且 collector.open 被注释后 lastPosition 可能永远为 nil。
  5. 无 ReadingMaterialContext。
  6. 当前只接 V1 document runtime,V2 事件协议尚未接入。

核心原则

  1. Rust document runtime 只接收 materialId。
  2. iOS 负责 ReadingMaterialContext。
  3. iOS 上传时补 readingTargetType、platform、appVersion、timezone。
  4. Rust export 后,iOS 写入本地 ReadingEventUploadQueue 成功后才 ack。
  5. ack 不等 API 上传成功。
  6. ReadingPositionStore 只能作为兜底。
  7. API reading-progress 是主数据源。
  8. 首页 continue 必须替换硬编码。
  9. iOS 不直接判断聚合结果,只负责采集、上传、展示 API 结果。

文档必须覆盖

  • 模块结构
  • ReadingMaterialContext
  • ReadingRuntimeAdapter
  • ReadingRuntimeSessionManager
  • MaterialReaderView 生命周期
  • Heartbeat Timer
  • position 采集
  • Rust export → local queue → ack
  • ReadingEventUploadQueue
  • UploadScheduler
  • API Client
  • reading-progress 查询
  • continue learning 查询
  • 分析页 summary / trend / heatmap 接入
  • 学习历史 records 接入
  • 离线 / 登录状态 / 删除 / 权限错误
  • 调试面板与日志
  • 测试范围

验收标准

  1. 新增 docs/ios-learning-info-architecture.md。
  2. 文档明确 iOS、Rust、API 的职责边界。
  3. 文档明确 iOS 负责 readingTargetType。
  4. 文档明确 export → local queue → ack 顺序。
  5. 文档明确 API reading-progress 优先,本地缓存兜底。
  6. 文档明确首页 continue 替换硬编码。
  7. 文档能指导 IOS-INFO-001~037 实现。
## 目标 输出 iOS 学习信息采集与上传总设计,明确 iOS 在 Rust document runtime、API 学习信息体系、首页继续学习、资料详情页、分析页之间的职责边界。 ## 背景 当前 iOS 侧存在致命问题: 1. ReadingEventCollector.open/close 被注释,事件链路断裂。 2. 无本地上传队列。 3. 首页继续学习硬编码。 4. 阅读位置恢复仅本地,且 collector.open 被注释后 lastPosition 可能永远为 nil。 5. 无 ReadingMaterialContext。 6. 当前只接 V1 document runtime,V2 事件协议尚未接入。 ## 核心原则 1. Rust document runtime 只接收 materialId。 2. iOS 负责 ReadingMaterialContext。 3. iOS 上传时补 readingTargetType、platform、appVersion、timezone。 4. Rust export 后,iOS 写入本地 ReadingEventUploadQueue 成功后才 ack。 5. ack 不等 API 上传成功。 6. ReadingPositionStore 只能作为兜底。 7. API reading-progress 是主数据源。 8. 首页 continue 必须替换硬编码。 9. iOS 不直接判断聚合结果,只负责采集、上传、展示 API 结果。 ## 文档必须覆盖 - 模块结构 - ReadingMaterialContext - ReadingRuntimeAdapter - ReadingRuntimeSessionManager - MaterialReaderView 生命周期 - Heartbeat Timer - position 采集 - Rust export → local queue → ack - ReadingEventUploadQueue - UploadScheduler - API Client - reading-progress 查询 - continue learning 查询 - 分析页 summary / trend / heatmap 接入 - 学习历史 records 接入 - 离线 / 登录状态 / 删除 / 权限错误 - 调试面板与日志 - 测试范围 ## 验收标准 1. 新增 docs/ios-learning-info-architecture.md。 2. 文档明确 iOS、Rust、API 的职责边界。 3. 文档明确 iOS 负责 readingTargetType。 4. 文档明确 export → local queue → ack 顺序。 5. 文档明确 API reading-progress 优先,本地缓存兜底。 6. 文档明确首页 continue 替换硬编码。 7. 文档能指导 IOS-INFO-001~037 实现。
wangdl added this to the M-IOS-INFO:学习信息采集、上传、继续学习与基础分析闭环 milestone 2026-06-10 21:28:08 +08:00
Author
Owner

开发完成评论

完成内容

  • 新建 docs/ios-learning-info-architecture.md(335 行)
  • 覆盖全部要求内容:
    • §1 三方职责边界(iOS/Rust/API 表格 + 架构图)
    • §2 核心链路 export → queue → ack(时序约束)
    • §3 九条核心原则逐条定义
    • §4 模块结构(Core/Upload/Networking/Recovery/Home/Analysis/Debug/Tests)
    • §5 ReadingMaterialContext
    • §6 ReadingRuntimeAdapter 协议
    • §7 SessionManager 完整生命周期(onAppear → heartbeat → onDisappear → bg/fg)
    • §8 上传队列 + UploadScheduler 触发时机表
    • §9 阅读位置恢复:API 优先 + 本地兜底决策树
    • §10 API 端点完整列表
    • §11 错误处理表(6 种错误类型 → iOS 动作)
    • §12 离线/登录/删除/权限场景
    • §13 测试范围
    • §14 实现指导(明确引导 IOS-INFO-001~037)

修改文件

  • docs/ios-learning-info-architecture.md:新建

验收标准逐项

  1. 新增 docs/ios-learning-info-architecture.md —
  2. 文档明确 iOS、Rust、API 职责边界 — §1 表格 + 架构图
  3. 文档明确 iOS 负责 readingTargetType — 原则 2 + §5
  4. 文档明确 export → local queue → ack 顺序 — §2 流程图 + 时序约束
  5. 文档明确 API reading-progress 优先,本地缓存兜底 — §9 决策树
  6. 文档明确首页 continue 替换硬编码 — 原则 7
  7. 文档能指导 IOS-INFO-001~037 实现 — §14 显式列出引导 Issue

是否建议进入 Review

## 开发完成评论 ### 完成内容 - 新建 `docs/ios-learning-info-architecture.md`(335 行) - 覆盖全部要求内容: - §1 三方职责边界(iOS/Rust/API 表格 + 架构图) - §2 核心链路 export → queue → ack(时序约束) - §3 九条核心原则逐条定义 - §4 模块结构(Core/Upload/Networking/Recovery/Home/Analysis/Debug/Tests) - §5 ReadingMaterialContext - §6 ReadingRuntimeAdapter 协议 - §7 SessionManager 完整生命周期(onAppear → heartbeat → onDisappear → bg/fg) - §8 上传队列 + UploadScheduler 触发时机表 - §9 阅读位置恢复:API 优先 + 本地兜底决策树 - §10 API 端点完整列表 - §11 错误处理表(6 种错误类型 → iOS 动作) - §12 离线/登录/删除/权限场景 - §13 测试范围 - §14 实现指导(明确引导 IOS-INFO-001~037) ### 修改文件 - `docs/ios-learning-info-architecture.md`:新建 ### 验收标准逐项 1. 新增 docs/ios-learning-info-architecture.md — ✅ 2. 文档明确 iOS、Rust、API 职责边界 — ✅ §1 表格 + 架构图 3. 文档明确 iOS 负责 readingTargetType — ✅ 原则 2 + §5 4. 文档明确 export → local queue → ack 顺序 — ✅ §2 流程图 + 时序约束 5. 文档明确 API reading-progress 优先,本地缓存兜底 — ✅ §9 决策树 6. 文档明确首页 continue 替换硬编码 — ✅ 原则 7 7. 文档能指导 IOS-INFO-001~037 实现 — ✅ §14 显式列出引导 Issue ### 是否建议进入 Review - 是
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: wangdl/ios-projects#108
No description provided.