docs: update design docs for general chat
This commit is contained in:
@@ -910,6 +910,112 @@ Response: 200 OK
|
||||
|
||||
---
|
||||
|
||||
### 9. 通用对话模块(智能问答)
|
||||
|
||||
**功能**: 提供无项目、无智能体概念的纯AI对话功能,支持可选的@知识库引用
|
||||
|
||||
#### 9.1 发送消息(流式输出)
|
||||
```http
|
||||
POST /api/v1/chat/stream
|
||||
Content-Type: application/json
|
||||
|
||||
Request:
|
||||
{
|
||||
"content": "你好,介绍一下自己",
|
||||
"modelType": "deepseek-v3",
|
||||
"knowledgeBaseIds": ["kb-uuid-1", "kb-uuid-2"], // 可选
|
||||
"conversationId": "conv-uuid" // 可选,续接已有对话
|
||||
}
|
||||
|
||||
Response: 200 OK (Server-Sent Events)
|
||||
Content-Type: text/event-stream
|
||||
|
||||
data: {"content":"你","usage":null}
|
||||
|
||||
data: {"content":"好","usage":null}
|
||||
|
||||
data: {"content":"!","usage":null}
|
||||
|
||||
data: {"content":"我","usage":null}
|
||||
|
||||
...
|
||||
|
||||
data: [DONE]
|
||||
```
|
||||
|
||||
**参数说明:**
|
||||
- `content` - 用户消息内容(必填)
|
||||
- `modelType` - 使用的模型(必填):deepseek-v3 | qwen3-72b | gemini-pro
|
||||
- `knowledgeBaseIds` - 知识库ID数组(可选)
|
||||
- `conversationId` - 对话ID(可选,新对话时不传)
|
||||
|
||||
**响应说明:**
|
||||
- 使用SSE(Server-Sent Events)流式返回
|
||||
- 每个chunk包含:`content`(增量内容)、`usage`(token统计)
|
||||
- 最后发送 `data: [DONE]` 表示完成
|
||||
|
||||
---
|
||||
|
||||
#### 9.2 获取对话列表
|
||||
```http
|
||||
GET /api/v1/chat/conversations
|
||||
Authorization: Bearer {token}
|
||||
|
||||
Response: 200 OK
|
||||
{
|
||||
"success": true,
|
||||
"data": [
|
||||
{
|
||||
"id": "conv-uuid",
|
||||
"userId": "user-uuid",
|
||||
"title": "关于骨质疏松的讨论",
|
||||
"modelName": "deepseek-v3",
|
||||
"createdAt": "2025-10-11T10:00:00.000Z",
|
||||
"updatedAt": "2025-10-11T10:30:00.000Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
**响应说明:**
|
||||
- 按 `updatedAt` 降序排序
|
||||
- 最多返回50条
|
||||
- 不包括已删除的对话(deleted_at != null)
|
||||
|
||||
---
|
||||
|
||||
#### 9.3 删除对话
|
||||
```http
|
||||
DELETE /api/v1/chat/conversations/:id
|
||||
Authorization: Bearer {token}
|
||||
|
||||
Response: 200 OK
|
||||
{
|
||||
"success": true,
|
||||
"message": "删除成功"
|
||||
}
|
||||
```
|
||||
|
||||
**说明:**
|
||||
- 软删除,设置 `deleted_at` 字段
|
||||
- 级联删除所有消息
|
||||
- 不可恢复
|
||||
|
||||
---
|
||||
|
||||
### 通用对话 vs 项目对话
|
||||
|
||||
| 特性 | 通用对话(/chat) | 项目对话(/conversations) |
|
||||
|------|------------------|---------------------------|
|
||||
| **概念** | 无项目/智能体 | 基于项目和智能体 |
|
||||
| **使用场景** | 快速提问、知识库问答 | 结构化研究流程 |
|
||||
| **上下文** | 纯对话历史 | 项目背景 + 智能体角色 + 对话历史 |
|
||||
| **知识库** | 可选@引用 | 可选@引用 |
|
||||
| **System Prompt** | 通用AI助手 | 专业智能体角色 |
|
||||
| **数据表** | general_conversations | conversations |
|
||||
|
||||
---
|
||||
|
||||
## 错误处理
|
||||
|
||||
### 错误代码规范
|
||||
|
||||
@@ -44,10 +44,20 @@
|
||||
└──────┬──────┘
|
||||
│
|
||||
│ 1:N
|
||||
├─────────────────┐
|
||||
│ │
|
||||
▼ ▼
|
||||
┌─────────────┐ ┌──────────────┐
|
||||
├──────────────────────┐
|
||||
│ │
|
||||
├──────────────────┐ │
|
||||
│ │ │
|
||||
▼ ▼ ▼
|
||||
┌─────────────┐ ┌──────────────┐ ┌──────────────────────┐
|
||||
│ Projects │ │ Knowledge │ │ General │
|
||||
│ │ │ Bases │ │ Conversations ⭐ │
|
||||
└──────┬──────┘ └──────┬───────┘ └──────┬───────────────┘
|
||||
│ │ │
|
||||
│ 1:N │ 1:N │ 1:N
|
||||
▼ ▼ ▼
|
||||
┌─────────────┐ ┌──────────────┐ ┌──────────────────────┐
|
||||
│Conversations│ │ Documents │ │ General Messages ⭐ │
|
||||
│ Projects │ │KnowledgeBases│
|
||||
└──────┬──────┘ └──────┬───────┘
|
||||
│ │
|
||||
@@ -399,6 +409,113 @@ COMMENT ON TABLE admin_logs IS '管理员操作日志表,用于审计';
|
||||
|
||||
---
|
||||
|
||||
### 8. general_conversations - 通用对话表
|
||||
|
||||
**用途:** 存储智能问答的对话记录(无需项目和智能体)
|
||||
|
||||
```sql
|
||||
CREATE TABLE general_conversations (
|
||||
id VARCHAR(36) PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
user_id VARCHAR(36) NOT NULL,
|
||||
|
||||
-- 对话信息
|
||||
title VARCHAR(255) NOT NULL,
|
||||
model_name VARCHAR(50), -- 主要使用的模型
|
||||
|
||||
-- 时间戳
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW(),
|
||||
deleted_at TIMESTAMP, -- 软删除
|
||||
|
||||
-- 外键
|
||||
CONSTRAINT fk_general_conversations_users FOREIGN KEY (user_id)
|
||||
REFERENCES users(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
-- 索引
|
||||
CREATE INDEX idx_general_conversations_user_id ON general_conversations(user_id);
|
||||
CREATE INDEX idx_general_conversations_created_at ON general_conversations(created_at);
|
||||
CREATE INDEX idx_general_conversations_updated_at ON general_conversations(updated_at);
|
||||
|
||||
-- 注释
|
||||
COMMENT ON TABLE general_conversations IS '通用对话表,用于智能问答功能';
|
||||
```
|
||||
|
||||
**字段说明:**
|
||||
|
||||
| 字段 | 类型 | 说明 | 约束 |
|
||||
|------|------|------|------|
|
||||
| id | VARCHAR(36) | 对话ID | PRIMARY KEY, UUID |
|
||||
| user_id | VARCHAR(36) | 用户ID | NOT NULL, FK → users |
|
||||
| title | VARCHAR(255) | 对话标题(自动生成) | NOT NULL |
|
||||
| model_name | VARCHAR(50) | 主要使用的模型 | - |
|
||||
| created_at | TIMESTAMP | 创建时间 | DEFAULT NOW() |
|
||||
| updated_at | TIMESTAMP | 最后更新时间 | DEFAULT NOW() |
|
||||
| deleted_at | TIMESTAMP | 删除时间(软删除) | - |
|
||||
|
||||
---
|
||||
|
||||
### 9. general_messages - 通用消息表
|
||||
|
||||
**用途:** 存储智能问答的消息记录
|
||||
|
||||
```sql
|
||||
CREATE TABLE general_messages (
|
||||
id VARCHAR(36) PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
conversation_id VARCHAR(36) NOT NULL,
|
||||
|
||||
-- 消息内容
|
||||
role VARCHAR(20) NOT NULL, -- user / assistant
|
||||
content TEXT NOT NULL,
|
||||
|
||||
-- AI响应信息
|
||||
model VARCHAR(50), -- 使用的具体模型
|
||||
tokens INTEGER, -- token消耗
|
||||
metadata JSONB, -- 扩展信息(如knowledgeBaseIds、usage等)
|
||||
|
||||
-- 时间戳
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
|
||||
-- 外键
|
||||
CONSTRAINT fk_general_messages_conversations FOREIGN KEY (conversation_id)
|
||||
REFERENCES general_conversations(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
-- 索引
|
||||
CREATE INDEX idx_general_messages_conversation_id ON general_messages(conversation_id);
|
||||
CREATE INDEX idx_general_messages_created_at ON general_messages(created_at);
|
||||
|
||||
-- 注释
|
||||
COMMENT ON TABLE general_messages IS '通用消息表,用于智能问答功能';
|
||||
```
|
||||
|
||||
**字段说明:**
|
||||
|
||||
| 字段 | 类型 | 说明 | 约束 |
|
||||
|------|------|------|------|
|
||||
| id | VARCHAR(36) | 消息ID | PRIMARY KEY, UUID |
|
||||
| conversation_id | VARCHAR(36) | 对话ID | NOT NULL, FK → general_conversations |
|
||||
| role | VARCHAR(20) | 角色(user/assistant) | NOT NULL |
|
||||
| content | TEXT | 消息内容 | NOT NULL |
|
||||
| model | VARCHAR(50) | 使用的模型 | - |
|
||||
| tokens | INTEGER | token消耗 | - |
|
||||
| metadata | JSONB | 元数据(知识库IDs、使用统计等) | - |
|
||||
| created_at | TIMESTAMP | 创建时间 | DEFAULT NOW() |
|
||||
|
||||
**metadata结构示例:**
|
||||
```json
|
||||
{
|
||||
"knowledgeBaseIds": ["kb-uuid-1", "kb-uuid-2"],
|
||||
"usage": {
|
||||
"promptTokens": 150,
|
||||
"completionTokens": 200,
|
||||
"totalTokens": 350
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 索引设计
|
||||
|
||||
### 主要索引
|
||||
@@ -415,6 +532,9 @@ COMMENT ON TABLE admin_logs IS '管理员操作日志表,用于审计';
|
||||
| knowledge_bases | user_id | INDEX | 查询用户的知识库 |
|
||||
| documents | kb_id | INDEX | 查询知识库的文档 |
|
||||
| documents | status | INDEX | 筛选处理状态 |
|
||||
| general_conversations | user_id | INDEX | 查询用户的通用对话 |
|
||||
| general_conversations | created_at | INDEX | 按时间排序 |
|
||||
| general_messages | conversation_id | INDEX | 查询对话消息 |
|
||||
|
||||
### 复合索引(如需优化性能可添加)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user