API-AI-080: ImportPage 改为走 KnowledgeSource 管线(iOS 侧改调用链) #241

Open
opened 2026-06-18 21:48:12 +08:00 by wangdl · 1 comment
Owner

描述

iOS ImportPage 当前调用 DocumentImportService.create() → POST /imports,只创建 DocumentImport 不创建 KnowledgeSource。应改为调用 KnowledgeSourceService.add() → POST /knowledge-bases/:id/sources,这个端点已经实现了完整管线:创建 Source + 自动创建 DocumentImport。

API 侧

不需要改动。POST /knowledge-bases/:id/sources 已经实现了创建 Source → 自动创建 DocumentImport 的完整流程。

iOS 侧

ImportPage 改调用 KnowledgeSourceService.add() 替代 DocumentImportService.create()。

## 描述 iOS ImportPage 当前调用 DocumentImportService.create() → POST /imports,只创建 DocumentImport 不创建 KnowledgeSource。应改为调用 KnowledgeSourceService.add() → POST /knowledge-bases/:id/sources,这个端点已经实现了完整管线:创建 Source + 自动创建 DocumentImport。 ## API 侧 不需要改动。POST /knowledge-bases/:id/sources 已经实现了创建 Source → 自动创建 DocumentImport 的完整流程。 ## iOS 侧 ImportPage 改调用 KnowledgeSourceService.add() 替代 DocumentImportService.create()。
Author
Owner

开发完成评论

完成内容

  • KnowledgeSourceService.addSource(): 注入 QueueService + RedisService,创建 Source + DocumentImport 后入队处理
  • DocumentImportWorker.process(): 解析 sourceId(job data > DB fallback),创建 KnowledgeItem 时写入 sourceRef
  • 设置 Redis 状态 key(对齐 DocumentImportService 模式)

修改文件

  • src/modules/knowledge-source/knowledge-source.service.ts
  • src/workers/document-import.worker.ts

代码证据

  • knowledge-source.service.ts:30-46: 创建 DocumentImport 后设置 Redis 状态 + 调用 queue.add("document-import", { importId, userId, knowledgeBaseId, sourceId, fileName })
  • document-import.worker.ts:36-41: 从 job.data.sourceId 或 DocumentImport 记录解析 sourceId
  • document-import.worker.ts:70: sourceRef: sourceId 传入 knowledgeItemsRepo.create()

测试情况

  • 已运行命令: npx tsc --noEmit
  • 结果: 通过(无新增编译错误)

未完成 / 风险

  • sourceId → sourceRef 是字符串引用,非外键(API-AI-081 解决)
  • 需要部署后验证完整流程:上传文件 → 建 Source → 入队 → worker 处理 → 生成 Item(带 sourceRef)

是否建议进入 Review

## 开发完成评论 ### 完成内容 - `KnowledgeSourceService.addSource()`: 注入 QueueService + RedisService,创建 Source + DocumentImport 后入队处理 - `DocumentImportWorker.process()`: 解析 sourceId(job data > DB fallback),创建 KnowledgeItem 时写入 sourceRef - 设置 Redis 状态 key(对齐 DocumentImportService 模式) ### 修改文件 - `src/modules/knowledge-source/knowledge-source.service.ts` - `src/workers/document-import.worker.ts` ### 代码证据 - `knowledge-source.service.ts:30-46`: 创建 DocumentImport 后设置 Redis 状态 + 调用 `queue.add("document-import", { importId, userId, knowledgeBaseId, sourceId, fileName })` - `document-import.worker.ts:36-41`: 从 job.data.sourceId 或 DocumentImport 记录解析 sourceId - `document-import.worker.ts:70`: `sourceRef: sourceId` 传入 `knowledgeItemsRepo.create()` ### 测试情况 - 已运行命令: `npx tsc --noEmit` - 结果: 通过(无新增编译错误) ### 未完成 / 风险 - sourceId → sourceRef 是字符串引用,非外键(API-AI-081 解决) - 需要部署后验证完整流程:上传文件 → 建 Source → 入队 → worker 处理 → 生成 Item(带 sourceRef) ### 是否建议进入 Review - 是
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: wangdl/api-server#241
No description provided.