M7-04 P1 | ChatMessage 新增 scopeSnapshot 快照字段 #73

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

目标

消息创建时记录当时的 scope,避免知识库变动后消息失去上下文。

Schema 变更

model ChatMessage {
  // 新增 JSON 字段
  scopeSnapshot Json?  // { scopeType, scopeId, sourceIds, parentKnowledgeBaseId, ... }
  ...
}

填充规则

每次 sendMessage/sendMessageStream 时,从 session 读取 scopeType/scopeId/sourceIds 写入 scopeSnapshot。

## 目标 消息创建时记录当时的 scope,避免知识库变动后消息失去上下文。 ## Schema 变更 ```prisma model ChatMessage { // 新增 JSON 字段 scopeSnapshot Json? // { scopeType, scopeId, sourceIds, parentKnowledgeBaseId, ... } ... } ``` ## 填充规则 每次 sendMessage/sendMessageStream 时,从 session 读取 scopeType/scopeId/sourceIds 写入 scopeSnapshot。
wangdl added this to the M7:ChatScope 会话系统 — 学习对象绑定的上下文会话 milestone 2026-06-06 16:21:27 +08:00
Author
Owner

完成情况

交付物

ChatMessage 新增字段 (prisma/schema.prisma):

scopeSnapshot  Json?

数据结构

{
  "scopeType": "material",
  "scopeId": "clx7abc123",
  "parentKnowledgeBaseId": "clx7kb456"
}

用途

  • 每条消息记录创建时的 scope 快照
  • 消息级别不可变 — 即使会话的 scope 字段变更(极少情况),消息仍保留当时上下文
  • 前端可基于此展示"这条消息是在什么学习对象下发送的"

Service 层

  • buildScopeSnapshot(session) 方法从会话提取 scope 信息
  • sendMessage / sendMessageStream 在创建用户消息和 AI 消息时均写入 scopeSnapshot

涉及文件

文件 变更
prisma/schema.prisma ChatMessage.scopeSnapshot
src/modules/rag-chat/rag-chat.service.ts buildScopeSnapshot + sendMessage/sendMessageStream
## 完成情况 ### 交付物 **ChatMessage 新增字段** (`prisma/schema.prisma`): ```prisma scopeSnapshot Json? ``` ### 数据结构 ```json { "scopeType": "material", "scopeId": "clx7abc123", "parentKnowledgeBaseId": "clx7kb456" } ``` ### 用途 - 每条消息记录创建时的 scope 快照 - 消息级别不可变 — 即使会话的 scope 字段变更(极少情况),消息仍保留当时上下文 - 前端可基于此展示"这条消息是在什么学习对象下发送的" ### Service 层 - `buildScopeSnapshot(session)` 方法从会话提取 scope 信息 - `sendMessage` / `sendMessageStream` 在创建用户消息和 AI 消息时均写入 scopeSnapshot ### 涉及文件 | 文件 | 变更 | |------|------| | prisma/schema.prisma | ChatMessage.scopeSnapshot | | src/modules/rag-chat/rag-chat.service.ts | buildScopeSnapshot + sendMessage/sendMessageStream |
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#73
No description provided.