mermaid代码
erDiagramUser {varchar(32) id PKvarchar(255) access_tokenvarchar(100) nicknamevarchar(255) passwordvarchar(255) emailtext avatarvarchar(32) languagevarchar(32) color_schemavarchar(64) timezonedatetime last_login_timevarchar(1) is_authenticatedvarchar(1) is_activevarchar(1) is_anonymousvarchar login_channelvarchar(1) statusboolean is_superuser}Tenant {varchar(32) id PKvarchar(100) namevarchar(255) public_keyvarchar(128) llm_idvarchar(128) embd_idvarchar(128) asr_idvarchar(128) img2txt_idvarchar(128) rerank_idvarchar(256) tts_idvarchar(256) parser_idsint creditvarchar(1) status}UserTenant {varchar(32) id PKvarchar(32) user_id FKvarchar(32) tenant_id FKvarchar(32) rolevarchar(32) invited_byvarchar(1) status}InvitationCode {varchar(32) id PKvarchar(32) codedatetime visit_timevarchar(32) user_id FKvarchar(32) tenant_id FKvarchar(1) status}LLMFactories {varchar(128) name PKtext logovarchar(255) tagsvarchar(1) status}LLM {varchar(128) llm_name PKvarchar(128) model_typevarchar(128) fid PKint max_tokensvarchar(255) tagsboolean is_toolsvarchar(1) status}TenantLLM {varchar(32) tenant_id PKvarchar(128) llm_factory PKvarchar(128) model_typevarchar(128) llm_name PKvarchar(2048) api_keyvarchar(255) api_baseint max_tokensint used_tokens}TenantLangfuse {varchar(32) tenant_id PKvarchar(2048) secret_keyvarchar(2048) public_keyvarchar(128) host}Knowledgebase {varchar(32) id PKtext avatarvarchar(32) tenant_id FKvarchar(128) namevarchar(32) languagetext descriptionvarchar(128) embd_idvarchar(16) permissionvarchar(32) created_byint doc_numint token_numint chunk_numfloat similarity_thresholdfloat vector_similarity_weightvarchar(32) parser_idjson parser_configint pagerankvarchar(1) status}Document {varchar(32) id PKtext thumbnailvarchar(256) kb_id FKvarchar(32) parser_idjson parser_configvarchar(128) source_typevarchar(32) typevarchar(32) created_byvarchar(255) namevarchar(255) locationint sizeint token_numint chunk_numfloat progresstext progress_msgdatetime process_begin_atfloat process_duationjson meta_fieldsvarchar(1) runvarchar(1) status}File {varchar(32) id PKvarchar(32) parent_idvarchar(32) tenant_id FKvarchar(32) created_byvarchar(255) namevarchar(255) locationint sizevarchar(32) typevarchar(128) source_type}File2Document {varchar(32) id PKvarchar(32) file_id FKvarchar(32) document_id FK}Task {varchar(32) id PKvarchar(32) doc_id FKint from_pageint to_pagevarchar(32) task_typeint prioritydatetime begin_atfloat process_duationfloat progresstext progress_msgint retry_counttext digesttext chunk_ids}Dialog {varchar(32) id PKvarchar(32) tenant_id FKvarchar(255) nametext descriptiontext iconvarchar(32) languagevarchar(128) llm_idjson llm_settingvarchar(16) prompt_typejson prompt_configfloat similarity_thresholdfloat vector_similarity_weightint top_nint top_kvarchar(1) do_refervarchar(128) rerank_idjson kb_ids FKvarchar(1) status}Conversation {varchar(32) id PKvarchar(32) dialog_id FKvarchar(255) namejson messagejson referencevarchar(255) user_id FK}APIToken {varchar(32) tenant_id FKvarchar(255) tokenvarchar(32) dialog_id FKvarchar(16) sourcevarchar(255) beta}API4Conversation {varchar(32) id PKvarchar(32) dialog_id FKvarchar(255) user_id FKjson messagejson referenceint tokensvarchar(16) sourcejson dslfloat durationint roundint thumb_up}UserCanvas {varchar(32) id PKtext avatarvarchar(255) user_id FKvarchar(255) titlevarchar(16) permissiontext descriptionvarchar(32) canvas_typejson dsl}CanvasTemplate {varchar(32) id PKtext avatarvarchar(255) titletext descriptionvarchar(32) canvas_typejson dsl}UserCanvasVersion {varchar(32) id PKvarchar(255) user_canvas_id FKvarchar(255) titletext descriptionjson 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编辑器
如下图