docs: update design docs for general chat

This commit is contained in:
AI Clinical Dev Team
2025-10-12 10:08:27 +08:00
parent 4ea14dc66d
commit 2a4f59b08b
3 changed files with 868 additions and 4 deletions

View File

@@ -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 | 查询对话消息 |
### 复合索引(如需优化性能可添加)