API-AI-081: KnowledgeItem 加 sourceId 外键关联 KnowledgeSource #242

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

描述

当前 KnowledgeItem.sourceRef 是普通字符串,不是外键,导致:

  • 无法从 Item 反查属于哪个 Source
  • Admin/API 展示 Source→Item 关系需要 JOIN 字符串字段
  • 删除 Source 时 Item 不会级联处理

改动

  • Prisma schema: KnowledgeItem 加 sourceId 字段(外键指向 KnowledgeSource.id)
  • DocumentImport worker 创建 Item 时写入 sourceId
  • ImportCandidateService.accept() 创建 Item 时写入 sourceId
  • 保留 sourceRef 字段作为过渡(后续版本移除)

涉及文件

  • prisma/schema.prisma
  • src/workers/document-import.worker.ts
  • src/modules/import-candidate/import-candidate.service.ts
## 描述 当前 KnowledgeItem.sourceRef 是普通字符串,不是外键,导致: - 无法从 Item 反查属于哪个 Source - Admin/API 展示 Source→Item 关系需要 JOIN 字符串字段 - 删除 Source 时 Item 不会级联处理 ## 改动 - Prisma schema: KnowledgeItem 加 sourceId 字段(外键指向 KnowledgeSource.id) - DocumentImport worker 创建 Item 时写入 sourceId - ImportCandidateService.accept() 创建 Item 时写入 sourceId - 保留 sourceRef 字段作为过渡(后续版本移除) ## 涉及文件 - prisma/schema.prisma - src/workers/document-import.worker.ts - src/modules/import-candidate/import-candidate.service.ts
Author
Owner

开发完成评论

完成内容

  • Prisma schema: KnowledgeItem 加 sourceId 字段 + @relation 外键关联 KnowledgeSource
  • KnowledgeSource: 加 items[] 反向关联 + sourceId 索引
  • KnowledgeItemsRepository.create(): 接受 sourceId 参数并写入
  • DocumentImportWorker: 创建 Item 时同时写 sourceId 和 sourceRef
  • ImportCandidateService.accept(): 审批通过时写入 sourceId

修改文件

  • prisma/schema.prisma
  • src/workers/document-import.worker.ts
  • src/modules/knowledge-items/knowledge-items.repository.ts
  • src/modules/import-candidate/import-candidate.service.ts

代码证据

  • schema.prisma:250: sourceId String? + source KnowledgeSource? @relation(...)
  • schema.prisma:886: items KnowledgeItem[] 反向关系
  • knowledge-items.repository.ts:67: sourceId: dto.sourceId ?? null
  • document-import.worker.ts:70: sourceId: sourceId, sourceRef: sourceId 双写
  • import-candidate.service.ts:48: sourceId, sourceRef: sourceId

测试情况

  • 已运行: npx prisma generate && npx tsc --noEmit
  • 结果: 通过(0 新增错误)

未完成 / 风险

  • 需要运行 npx prisma db push 在生产 DB 创建 sourceId 列和外键
  • sourceRef 保留作为过渡字段,后续版本可移除

是否建议进入 Review

## 开发完成评论 ### 完成内容 - Prisma schema: KnowledgeItem 加 sourceId 字段 + @relation 外键关联 KnowledgeSource - KnowledgeSource: 加 items[] 反向关联 + sourceId 索引 - KnowledgeItemsRepository.create(): 接受 sourceId 参数并写入 - DocumentImportWorker: 创建 Item 时同时写 sourceId 和 sourceRef - ImportCandidateService.accept(): 审批通过时写入 sourceId ### 修改文件 - `prisma/schema.prisma` - `src/workers/document-import.worker.ts` - `src/modules/knowledge-items/knowledge-items.repository.ts` - `src/modules/import-candidate/import-candidate.service.ts` ### 代码证据 - `schema.prisma:250`: `sourceId String?` + `source KnowledgeSource? @relation(...)` - `schema.prisma:886`: `items KnowledgeItem[]` 反向关系 - `knowledge-items.repository.ts:67`: `sourceId: dto.sourceId ?? null` - `document-import.worker.ts:70`: `sourceId: sourceId, sourceRef: sourceId` 双写 - `import-candidate.service.ts:48`: `sourceId, sourceRef: sourceId` ### 测试情况 - 已运行: `npx prisma generate && npx tsc --noEmit` - 结果: 通过(0 新增错误) ### 未完成 / 风险 - 需要运行 `npx prisma db push` 在生产 DB 创建 sourceId 列和外键 - 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#242
No description provided.