IOS-INFO-001:定义 ReadingMaterialContext #109

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

目标

定义 iOS 业务层阅读上下文 ReadingMaterialContext,用于连接业务资料、Rust materialId、readingTargetType、knowledgeBaseId、文件路径和页面展示信息。

字段建议

  • materialId
  • readingTargetType
  • knowledgeBaseId?
  • sourceId?
  • temporaryFileId?
  • localFilePath
  • fileName
  • fileType
  • mimeType?
  • displayTitle
  • coverURL?
  • createdAt?
  • updatedAt?

readingTargetType

  • knowledge_source
  • temporary_file

knowledgeBaseId 来源规则

  1. 从知识库资料 / 知识点详情页进入阅读页时,优先从页面导航参数传入 knowledgeBaseId。
  2. 如果导航参数没有 knowledgeBaseId,则尝试从资料详情 API / 当前 KnowledgeSource 模型读取。
  3. 如果资料属于个人知识库或官方知识库,knowledgeBaseId 应尽量存在。
  4. temporary_file 场景允许 knowledgeBaseId 为空。
  5. 如果 knowledge_source 场景缺少 knowledgeBaseId,仍允许阅读,但上传 UploadItem 时 knowledgeBaseId 为空,并记录 warning。
  6. ReadingMaterialContext 不自行请求网络;它只接收上层页面已知的上下文。

规则

  1. Rust 只接收 materialId 和文件相关信息。
  2. readingTargetType 不传给 Rust。
  3. UploadItem 由 ReadingMaterialContext 补充 readingTargetType。
  4. knowledge_source 场景应尽量包含 knowledgeBaseId。
  5. temporary_file 场景允许 knowledgeBaseId 为空。

验收标准

  1. 新增 ReadingMaterialContext 类型。
  2. 支持 knowledge_source。
  3. 支持 temporary_file。
  4. 可从知识点 / 资料详情页构建。
  5. 可用于 Runtime Session 创建。
  6. 可用于 UploadItem 映射。
  7. 有基础测试。
## 目标 定义 iOS 业务层阅读上下文 ReadingMaterialContext,用于连接业务资料、Rust materialId、readingTargetType、knowledgeBaseId、文件路径和页面展示信息。 ## 字段建议 - materialId - readingTargetType - knowledgeBaseId? - sourceId? - temporaryFileId? - localFilePath - fileName - fileType - mimeType? - displayTitle - coverURL? - createdAt? - updatedAt? ## readingTargetType - knowledge_source - temporary_file ## knowledgeBaseId 来源规则 1. 从知识库资料 / 知识点详情页进入阅读页时,优先从页面导航参数传入 knowledgeBaseId。 2. 如果导航参数没有 knowledgeBaseId,则尝试从资料详情 API / 当前 KnowledgeSource 模型读取。 3. 如果资料属于个人知识库或官方知识库,knowledgeBaseId 应尽量存在。 4. temporary_file 场景允许 knowledgeBaseId 为空。 5. 如果 knowledge_source 场景缺少 knowledgeBaseId,仍允许阅读,但上传 UploadItem 时 knowledgeBaseId 为空,并记录 warning。 6. ReadingMaterialContext 不自行请求网络;它只接收上层页面已知的上下文。 ## 规则 1. Rust 只接收 materialId 和文件相关信息。 2. readingTargetType 不传给 Rust。 3. UploadItem 由 ReadingMaterialContext 补充 readingTargetType。 4. knowledge_source 场景应尽量包含 knowledgeBaseId。 5. temporary_file 场景允许 knowledgeBaseId 为空。 ## 验收标准 1. 新增 ReadingMaterialContext 类型。 2. 支持 knowledge_source。 3. 支持 temporary_file。 4. 可从知识点 / 资料详情页构建。 5. 可用于 Runtime Session 创建。 6. 可用于 UploadItem 映射。 7. 有基础测试。
wangdl added this to the M-IOS-INFO:学习信息采集、上传、继续学习与基础分析闭环 milestone 2026-06-10 21:28:08 +08:00
Author
Owner

审查修复评论

B1 修复:3 个字段 + Codable 补全

补全字段(4 → 7):

  • localFileURL: URL? — 新增,本地文件路径
  • materialType: MaterialType? — 新增,Rust 侧 MaterialType(Markdown/Text/PDF/Image/Epub/Word/Excel/PowerPoint/Unknown)
  • previewMode: PreviewMode? — 新增,Rust 侧 PreviewMode(NativeReader/PlatformPreview/ExternalOpen/Unsupported)

Codable 支持:

  • ReadingMaterialContext 添加 Codable conformance(原仅有 Equatable
  • 为 FFI 生成的 MaterialTypePreviewMode 添加 Codable 扩展(String-based coding)
  • 所有编码 key 使用 camelCase,与 Rust serde rename_all = "camelCase" 一致

向后兼容:

  • 所有新增字段为 Optional + 默认 nil,已有调用方无需修改

修改文件

  • Core/Models/ReadingMaterialContext.swift:从 32 行 → 103 行

验收标准对照

字段 Issue 规范 修复后
readingTargetType
materialId
knowledgeBaseId (可选)
title (可选)
localFileURL (可选)
materialType (可选)
previewMode (可选)
Codable
Equatable

是否建议进入 Review

  • 是,请重新审查
## 审查修复评论 ### B1 修复:3 个字段 + Codable 补全 **补全字段(4 → 7):** - `localFileURL: URL?` — 新增,本地文件路径 - `materialType: MaterialType?` — 新增,Rust 侧 MaterialType(Markdown/Text/PDF/Image/Epub/Word/Excel/PowerPoint/Unknown) - `previewMode: PreviewMode?` — 新增,Rust 侧 PreviewMode(NativeReader/PlatformPreview/ExternalOpen/Unsupported) **Codable 支持:** - `ReadingMaterialContext` 添加 `Codable` conformance(原仅有 `Equatable`) - 为 FFI 生成的 `MaterialType` 和 `PreviewMode` 添加 `Codable` 扩展(String-based coding) - 所有编码 key 使用 camelCase,与 Rust serde `rename_all = "camelCase"` 一致 **向后兼容:** - 所有新增字段为 `Optional` + 默认 `nil`,已有调用方无需修改 ### 修改文件 - `Core/Models/ReadingMaterialContext.swift`:从 32 行 → 103 行 ### 验收标准对照 | 字段 | Issue 规范 | 修复后 | |------|-----------|--------| | readingTargetType | ✅ | ✅ | | materialId | ✅ | ✅ | | knowledgeBaseId | ✅ (可选) | ✅ | | title | ✅ (可选) | ✅ | | localFileURL | ✅ (可选) | ✅ | | materialType | ✅ (可选) | ✅ | | previewMode | ✅ (可选) | ✅ | | Codable | ✅ | ✅ | | Equatable | ✅ | ✅ | ### 是否建议进入 Review - 是,请重新审查
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

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