IOS-INFO-000 P0 | iOS 学习信息采集总设计文档 【审查: 致命 F1-F4 需解决】 #66

Closed
opened 2026-06-07 11:55:20 +08:00 by wangdl · 1 comment
Owner

审查发现

F1: ReadingEventCollector.open/close 被注释 — 事件链路断裂
F2: 无上传队列
F3: 继续学习硬编码
F4: 位置恢复仅本地缓存

文档内容

职责边界、V1/V2迁移、ReadingMaterialContext、RuntimeAdapter、UploadItem、本地上传队列、export/ack时机、阅读页生命周期、App前后台、继续学习、进度恢复、分析页、错误处理、测试

## 审查发现 F1: ReadingEventCollector.open/close 被注释 — 事件链路断裂 F2: 无上传队列 F3: 继续学习硬编码 F4: 位置恢复仅本地缓存 ## 文档内容 职责边界、V1/V2迁移、ReadingMaterialContext、RuntimeAdapter、UploadItem、本地上传队列、export/ack时机、阅读页生命周期、App前后台、继续学习、进度恢复、分析页、错误处理、测试
wangdl added this to the M-IOS-INFO:学习信息采集、上传、继续学习与基础分析闭环 milestone 2026-06-07 11:55:20 +08:00
wangdl changed title from IOS-INFO-000 P0 | iOS 学习信息采集总设计文档 to IOS-INFO-000 P0 | iOS 学习信息采集总设计文档 【审查: 致命 F1-F4 需解决】 2026-06-07 12:10:00 +08:00
Author
Owner

完成报告

交付

docs/ios-learning-info-design.md — iOS 学习信息采集总设计,解决 F1-F4:

F1 修复方案: V1 ReadingEventCollector → V2 ReadingRuntimeSessionManager

  • pushReadingEvent(ReadingEvent.materialOpened)pushMaterialOpenedV2(sessionId, materialId, ts)
  • exportPendingEvents()exportPendingEventsV2(limit, ts)
  • clearExportedEvents(count)ackEventsV2(eventIds) + markEventsFailedV2(eventIds)
  • activeSeconds(累计) → activeSecondsDelta(增量)

F2 修复方案: ReadingEventUploadQueue

  • Rust export → 本地队列 → API batch upload → ack/markFailed
  • 本地队列持久化(JSON 文件),App 重启可恢复
  • 指数退避重试

F3 修复方案: ContinueLearningService

  • GET /learning/continue → 动态数据替换硬编码

F4 修复方案: ReadingPositionRestoreService

  • API first: GET /materials/:id/reading-progress
  • 本地缓存 fallback: ReadingPositionStore (UserDefaults)

文档包含: 职责边界、V1→V2映射表、ReadingMaterialContext/RuntimeAdapter/UploadItem 协议定义、生命周期时机表、错误处理策略、离线策略

## 完成报告 ### 交付 `docs/ios-learning-info-design.md` — iOS 学习信息采集总设计,解决 F1-F4: **F1 修复方案:** V1 ReadingEventCollector → V2 ReadingRuntimeSessionManager - `pushReadingEvent(ReadingEvent.materialOpened)` → `pushMaterialOpenedV2(sessionId, materialId, ts)` - `exportPendingEvents()` → `exportPendingEventsV2(limit, ts)` - `clearExportedEvents(count)` → `ackEventsV2(eventIds)` + `markEventsFailedV2(eventIds)` - `activeSeconds`(累计) → `activeSecondsDelta`(增量) **F2 修复方案:** ReadingEventUploadQueue - Rust export → 本地队列 → API batch upload → ack/markFailed - 本地队列持久化(JSON 文件),App 重启可恢复 - 指数退避重试 **F3 修复方案:** ContinueLearningService - GET /learning/continue → 动态数据替换硬编码 **F4 修复方案:** ReadingPositionRestoreService - API first: GET /materials/:id/reading-progress - 本地缓存 fallback: ReadingPositionStore (UserDefaults) **文档包含:** 职责边界、V1→V2映射表、ReadingMaterialContext/RuntimeAdapter/UploadItem 协议定义、生命周期时机表、错误处理策略、离线策略
Sign in to join this conversation.
No description provided.