feat: stabilize rag chat conversations and auto title sync

This commit is contained in:
wren
2026-05-19 15:52:05 +08:00
parent 564f2bebc8
commit afaba4dd99
19 changed files with 1988 additions and 93 deletions
+20 -2
View File
@@ -309,10 +309,12 @@ data: {"event":"error","task_id":"...","message_id":"...","code":"llm_error","me
服务端行为说明:
-`conversationId` 为空,会自动创建新会话
-`conversationId` 为空,会自动创建新会话,默认标题为 `新对话`
- 会先落一条 `role = user` 消息,再流式生成回答
- 流结束后会落一条 `role = assistant` 消息
- 若命中知识库,会把引用结果写入 `sources / metadata`
- 会根据对话内容追加 `suggested_questions`
- 首轮回答完成后,后端会异步尝试生成会话标题
- 当前应用解析顺序是:指定 `appId` -> 任意默认应用 -> 排序第一条应用;每一步都只检查当前命中的那一条记录是否可见,不会遍历全部可见应用
### 4.6 获取会话列表
@@ -337,10 +339,12 @@ data: {"event":"error","task_id":"...","message_id":"...","code":"llm_error","me
"data": [
{
"id": "b17d3b0b-xxxx-xxxx",
"name": "新对话",
"name": "烟草专卖法中的烟草定义",
"introduction": "",
"titleSource": "auto",
"createdAt": 1746580000,
"updatedAt": 1746580066
"updatedAt": 1746580066,
"lastMessageAt": 1746580066
}
],
"hasMore": false,
@@ -349,6 +353,15 @@ data: {"event":"error","task_id":"...","message_id":"...","code":"llm_error","me
}
```
补充说明:
- `titleSource` 取值:
- `default`:默认标题,例如 `新对话`
- `auto`:系统自动生成标题
- `manual`:用户手动重命名
- 会话列表排序按 `COALESCE(last_message_at, updated_at) DESC, updated_at DESC`
- 自动标题更新不应该被前端视作“新消息到达”
### 4.7 获取会话消息
`GET /api/v3/rag/chat/conversations/{ConversationId}/messages`
@@ -402,6 +415,11 @@ data: {"event":"error","task_id":"...","message_id":"...","code":"llm_error","me
}
```
补充说明:
- 手动重命名会将该会话的标题来源标记为 `manual`
- 已手动重命名的会话,后续自动标题任务不得覆盖
说明:
- 返回结构是按“问答对”聚合后的结果,不是底层 `rag_message` 原始逐条结果。