mermaid代码
erDiagram
User {
varchar(32) id PK
varchar(255) access_token
varchar(100) nickname
varchar(255) password
varchar(255) email
text avatar
varchar(32) language
varchar(32) color_schema
varchar(64) timezone
datetime last_login_time
varchar(1) is_authenticated
varchar(1) is_active
varchar(1) is_anonymous
varchar login_channel
varchar(1) status
boolean is_superuser
}
Tenant {
varchar(32) id PK
varchar(100) name
varchar(255) public_key
varchar(128) llm_id
varchar(128) embd_id
varchar(128) asr_id
varchar(128) img2txt_id
varchar(128) rerank_id
varchar(256) tts_id
varchar(256) parser_ids
int credit
varchar(1) status
}
UserTenant {
varchar(32) id PK
varchar(32) user_id FK
varchar(32) tenant_id FK
varchar(32) role
varchar(32) invited_by
varchar(1) status
}
InvitationCode {
varchar(32) id PK
varchar(32) code
datetime visit_time
varchar(32) user_id FK
varchar(32) tenant_id FK
varchar(1) status
}
LLMFactories {
varchar(128) name PK
text logo
varchar(255) tags
varchar(1) status
}
LLM {
varchar(128) llm_name PK
varchar(128) model_type
varchar(128) fid PK
int max_tokens
varchar(255) tags
boolean is_tools
varchar(1) status
}
TenantLLM {
varchar(32) tenant_id PK
varchar(128) llm_factory PK
varchar(128) model_type
varchar(128) llm_name PK
varchar(2048) api_key
varchar(255) api_base
int max_tokens
int used_tokens
}
TenantLangfuse {
varchar(32) tenant_id PK
varchar(2048) secret_key
varchar(2048) public_key
varchar(128) host
}
Knowledgebase {
varchar(32) id PK
text avatar
varchar(32) tenant_id FK
varchar(128) name
varchar(32) language
text description
varchar(128) embd_id
varchar(16) permission
varchar(32) created_by
int doc_num
int token_num
int chunk_num
float similarity_threshold
float vector_similarity_weight
varchar(32) parser_id
json parser_config
int pagerank
varchar(1) status
}
Document {
varchar(32) id PK
text thumbnail
varchar(256) kb_id FK
varchar(32) parser_id
json parser_config
varchar(128) source_type
varchar(32) type
varchar(32) created_by
varchar(255) name
varchar(255) location
int size
int token_num
int chunk_num
float progress
text progress_msg
datetime process_begin_at
float process_duation
json meta_fields
varchar(1) run
varchar(1) status
}
File {
varchar(32) id PK
varchar(32) parent_id
varchar(32) tenant_id FK
varchar(32) created_by
varchar(255) name
varchar(255) location
int size
varchar(32) type
varchar(128) source_type
}
File2Document {
varchar(32) id PK
varchar(32) file_id FK
varchar(32) document_id FK
}
Task {
varchar(32) id PK
varchar(32) doc_id FK
int from_page
int to_page
varchar(32) task_type
int priority
datetime begin_at
float process_duation
float progress
text progress_msg
int retry_count
text digest
text chunk_ids
}
Dialog {
varchar(32) id PK
varchar(32) tenant_id FK
varchar(255) name
text description
text icon
varchar(32) language
varchar(128) llm_id
json llm_setting
varchar(16) prompt_type
json prompt_config
float similarity_threshold
float vector_similarity_weight
int top_n
int top_k
varchar(1) do_refer
varchar(128) rerank_id
json kb_ids FK
varchar(1) status
}
Conversation {
varchar(32) id PK
varchar(32) dialog_id FK
varchar(255) name
json message
json reference
varchar(255) user_id FK
}
APIToken {
varchar(32) tenant_id FK
varchar(255) token
varchar(32) dialog_id FK
varchar(16) source
varchar(255) beta
}
API4Conversation {
varchar(32) id PK
varchar(32) dialog_id FK
varchar(255) user_id FK
json message
json reference
int tokens
varchar(16) source
json dsl
float duration
int round
int thumb_up
}
UserCanvas {
varchar(32) id PK
text avatar
varchar(255) user_id FK
varchar(255) title
varchar(16) permission
text description
varchar(32) canvas_type
json dsl
}
CanvasTemplate {
varchar(32) id PK
text avatar
varchar(255) title
text description
varchar(32) canvas_type
json dsl
}
UserCanvasVersion {
varchar(32) id PK
varchar(255) user_canvas_id FK
varchar(255) title
text description
json dsl
}
User ||--o{ UserTenant : "可以属于多个"
Tenant ||--o{ UserTenant : "可以拥有多个"
User ||--o{ InvitationCode : "可以使用多个"
Tenant ||--|{ InvitationCode : "可以生成多个"
LLMFactories ||--o{ LLM : "拥有多个模型"
LLM ||--o{ TenantLLM : "被租户配置"
Tenant ||--o{ TenantLLM : "配置多个模型"
Tenant ||--|{ TenantLangfuse : "拥有一个"
Tenant ||--o{ Knowledgebase : "拥有多个知识库"
Knowledgebase ||--o{ Document : "包含多个文档"
Tenant ||--o{ File : "拥有多个文件"
File ||--o{ File2Document : "关联多个文档"
Document ||--o{ File2Document : "被多个文件关联"
Document ||--o{ Task : "包含多个任务"
Tenant ||--o{ Dialog : "拥有多个对话应用"
Dialog ||--o{ Knowledgebase : "关联多个知识库"
Dialog ||--o{ Conversation : "包含多个对话"
User ||--o{ Conversation : "参与多个对话"
Tenant ||--o{ APIToken : "拥有多个API令牌"
Dialog ||--o{ APIToken : "关联多个API令牌"
Dialog ||--o{ API4Conversation : "包含多个API对话"
User ||--o{ API4Conversation : "参与多个API对话"
User ||--o{ UserCanvas : "拥有多个画布"
UserCanvas ||--o{ UserCanvasVersion : "有多个版本"
CanvasTemplate ||--o{ UserCanvas : "作为模板创建"
可视化
将代码放在mermaid编辑器
如下图