IOS-INFO-002:定义 ReadingEventUploadItem / API DTO #110

Open
opened 2026-06-10 21:28:08 +08:00 by wangdl · 0 comments
Owner

目标

定义 iOS 上传 API 所需 DTO,将 Rust ReadingEvent V2 映射为 API 批量上传格式。

本 Issue 需要与 API ReadingEvent 批量上传协议保持字段对齐,但不以 API 实现完成作为阻塞条件。如果 API 字段后续变更,应通过 DTO 映射测试及时暴露。

输入来源

Rust ReadingEvent V2:

  • eventId
  • clientSessionId
  • materialId
  • eventType
  • position
  • activeSecondsDelta
  • timestampMs
  • sequence

iOS 补充:

  • readingTargetType
  • knowledgeBaseId?
  • platform
  • appVersion
  • clientTimezoneOffsetMinutes

DTO 建议

struct ReadingEventUploadItem: Codable {
    let eventId: String
    let clientSessionId: String
    let readingTargetType: ReadingTargetType
    let materialId: String
    let knowledgeBaseId: String?
    let eventType: ReadingEventType
    let position: ReadingPositionDTO?
    let activeSecondsDelta: Int
    let clientTimestamp: Date
    let clientTimezoneOffsetMinutes: Int?
    let sequence: Int
    let platform: String
    let appVersion: String?
}

验收标准

  1. 定义 ReadingEventUploadItem。
  2. 定义 BatchUploadReadingEventsRequest。
  3. 定义 BatchUploadReadingEventsResponse。
  4. eventType 与 API 协议一致。
  5. timestampMs 正确转 clientTimestamp。
  6. position 字段保持 camelCase。
  7. 有 Codable 测试。
  8. 有 Rust Event → UploadItem 映射测试。
## 目标 定义 iOS 上传 API 所需 DTO,将 Rust ReadingEvent V2 映射为 API 批量上传格式。 本 Issue 需要与 API ReadingEvent 批量上传协议保持字段对齐,但不以 API 实现完成作为阻塞条件。如果 API 字段后续变更,应通过 DTO 映射测试及时暴露。 ## 输入来源 Rust ReadingEvent V2: - eventId - clientSessionId - materialId - eventType - position - activeSecondsDelta - timestampMs - sequence iOS 补充: - readingTargetType - knowledgeBaseId? - platform - appVersion - clientTimezoneOffsetMinutes ## DTO 建议 ```swift struct ReadingEventUploadItem: Codable { let eventId: String let clientSessionId: String let readingTargetType: ReadingTargetType let materialId: String let knowledgeBaseId: String? let eventType: ReadingEventType let position: ReadingPositionDTO? let activeSecondsDelta: Int let clientTimestamp: Date let clientTimezoneOffsetMinutes: Int? let sequence: Int let platform: String let appVersion: String? } ``` ## 验收标准 1. 定义 ReadingEventUploadItem。 2. 定义 BatchUploadReadingEventsRequest。 3. 定义 BatchUploadReadingEventsResponse。 4. eventType 与 API 协议一致。 5. timestampMs 正确转 clientTimestamp。 6. position 字段保持 camelCase。 7. 有 Codable 测试。 8. 有 Rust Event → UploadItem 映射测试。
wangdl added this to the M-IOS-INFO:学习信息采集、上传、继续学习与基础分析闭环 milestone 2026-06-10 21:28:08 +08:00
wangdl removed the
blocked-by:api
label 2026-06-10 22:15:57 +08:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

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