M7-01 P0 | Prisma ChatSession 新增 scopeType scopeId parentKnowledgeBaseId #79
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
完成 ✅
Prisma Schema 变更 (
prisma/schema.prisma)ChatSession — 新增 10 个字段 + 4 个索引:
scopeTypeString @default("knowledge_base")scopeIdString?parentKnowledgeBaseIdString?createdFromString @default("legacy_migration")isPinnedBoolean @default(false)isArchivedBoolean @default(false)isDeletedBoolean @default(false)modelModeString @default("normal")modelIdString?lastMessageAtDateTime?ChatMessage — 新增:
scopeSnapshotJson? — 记录消息创建时的 scope 快照ChatCitation — 新增:
lineStartInt?lineEndInt?Service 层变更 (
rag-chat.service.ts)createSession— 接受CreateSessionParams(scopeType + scopeId + parentKnowledgeBaseId + createdFrom)listSessions— 支持 scopeType/scopeId/parentKnowledgeBaseId 过滤sendMessage/sendMessageStream— 存储 scopeSnapshot, 使用 loadContextByScopeloadContextByScope— 按 scope 类型检索 (material→sourceRef, item→精确id, kb→全库)updateSession— PATCH 端点 (title/isPinned/isArchived/modelMode),scope 字段不可修改deleteSession— 软删除 (isDeleted=true)Controller 变更 (
rag-chat.controller.ts)POST /sessions— 接受 scopeType/scopeId/parentKnowledgeBaseId/createdFromGET /sessions— 新增 scopeType/scopeId/parentKnowledgeBaseId query paramsPATCH /sessions/:id— 新端点DELETE /sessions/:id— 软删除注意
npx prisma migrate dev --name add_chat_scope_fields完成情况
交付物
1. Prisma Schema (
prisma/schema.prisma)ChatSession 模型新增 10 个字段:
新增 4 个索引:
@@index([userId, scopeType, scopeId])— open-or-create 核心查询@@index([userId, parentKnowledgeBaseId])— 知识库内会话列表@@index([userId, isDeleted])— 排除已删除@@index([lastMessageAt])— 时间排序保留旧字段
knowledgeBaseId和knowledgeItemIds,迁移后移除。2. Service 层 (
src/modules/rag-chat/rag-chat.service.ts)createSession(userId, CreateSessionParams)— 接受 scopeType/scopeId/parentKnowledgeBaseId/createdFrom,校验 scopeType 合法性和 scopeId 必填性deriveParentKbId()— 从 scope 推导 parentKnowledgeBaseIdlistSessions()— 支持 scopeType+scopeId 精确过滤、parentKnowledgeBaseId 知识库过滤、分页3. Controller 层 (
src/modules/rag-chat/rag-chat.controller.ts)POST /sessions— 接受 scopeType/scopeId/parentKnowledgeBaseId/createdFrom/titleGET /sessions— 新增 scopeType/scopeId/parentKnowledgeBaseId/page/limit query paramsPATCH /sessions/:id— 新端点,更新 title/isPinned/isArchived/modelMode/modelIdDELETE /sessions/:id— 改为软删除 (isDeleted=true)注意事项
npx prisma migrate dev --name add_chat_scope_fields涉及文件