dify在1.0开始,开源部分已经拆分两个数据表,一个是原来的dify,另外一个是dify_plugin,本次先基于dify库进行分析,大概有83张表:
版本:1.17.0
来源:基于开源项目https://github.com/langgenius/dify.git
整理方法:cusor工具
accounts 表结构详细分析
表基本信息
表名: accounts
主键: id (UUID)
索引: account_email_idx (email字段)
字段详细说明
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 用户唯一标识符 |
| name | VARCHAR(255) | 非空 | - | 用户姓名/昵称 |
| VARCHAR(255) | 非空 | - | 用户邮箱地址 | |
| password | VARCHAR(255) | 可空 | NULL | 加密后的密码 |
| password_salt | VARCHAR(255) | 可空 | NULL | 密码加密盐值 |
| avatar | VARCHAR(255) | 可空 | NULL | 用户头像URL |
| interface_language | VARCHAR(255) | 可空 | NULL | 界面语言设置 |
| interface_theme | VARCHAR(255) | 可空 | NULL | 界面主题设置 |
| timezone | VARCHAR(255) | 可空 | NULL | 用户时区设置 |
| status | VARCHAR(16) | 非空 | ‘active’ | 账户状态 |
| last_login_at | DATETIME | 可空 | NULL | 最后登录时间 |
| last_login_ip | VARCHAR(255) | 可空 | NULL | 最后登录IP地址 |
| last_active_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 最后活跃时间 |
| initialized_at | DATETIME | 可空 | NULL | 账户初始化时间 |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 账户创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 账户更新时间 |
tenants 表结构详细分析
表基本信息
表名: tenants
主键: id (UUID)
描述: 租户/工作空间表,是多租户SaaS系统的核心表
字段详细说明
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 租户唯一标识符 |
| name | VARCHAR(255) | 非空 | - | 租户/工作空间名称 |
| encrypt_public_key | TEXT | 可空 | NULL | 加密公钥,用于数据加密 |
| plan | VARCHAR(255) | 非空 | ‘basic’ | 订阅计划类型 |
| status | VARCHAR(255) | 非空 | ‘normal’ | 租户状态 |
| custom_config | TEXT | 可空 | NULL | 自定义配置(JSON格式) |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 租户创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 租户更新时间 |
account_integrates 表结构详细分析
- 表基本信息
- 表名: account_integrates
- 主键: id (UUID)
- 描述: 第三方账户集成表,用于存储用户的第三方登录信息
- 字段详细说明
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 集成记录唯一标识符 |
| account_id | UUID | 非空 | - | 关联的账户ID |
第三方提供商信息
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| provider | VARCHAR(16) | 非空 | - | 第三方提供商名称 |
| open_id | VARCHAR(255) | 非空 | - | 第三方平台返回的用户唯一标识 |
| encrypted_token | VARCHAR(255) | 非空 | - | 加密存储的第三方访问令牌 |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 集成记录创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 集成记录更新时间 |
– 每个账户在每个提供商下只能有一个集成记录
UNIQUE(account_id, provider)
– 每个提供商下的open_id必须唯一
UNIQUE(provider, open_id)
- 与账户表的一对多关系
account_integrates.account_id → accounts.id
一个账户可以有多个第三方集成
每个第三方集成只属于一个账户
invitation_codes 表 - 邀请码表
表基本信息
– 表名: invitation_codes
– 主键: id (INTEGER)
– 描述: 系统邀请码管理表,用于控制用户注册
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | INTEGER | 主键 | - | 邀请码记录ID |
| batch | VARCHAR(255) | 非空 | - | 邀请码批次名称 |
| code | VARCHAR(32) | 非空 | - | 邀请码字符串 |
| status | VARCHAR(16) | 非空 | ‘unused’ | 邀请码状态 |
| used_at | DATETIME | 可空 | NULL | 使用时间 |
| used_by_tenant_id | UUID | 可空 | NULL | 使用该邀请码的租户ID |
| used_by_account_id | UUID | 可空 | NULL | 使用该邀请码的账户ID |
| deprecated_at | DATETIME | 可空 | NULL | 邀请码废弃时间 |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
索引
主键索引: invitation_code_pkey
批次索引: invitation_codes_batch_idx
状态索引: invitation_codes_code_idx (code, status)
account_plugin_permissions 表 - 账户插件权限表
表基本信息
表名: account_plugin_permissions (注意:类名是TenantPluginPermission,但表名是account_plugin_permissions)
主键: id (UUID)
描述: 租户插件权限管理表
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 权限记录ID |
| tenant_id | UUID | 非空 | - | 租户ID |
| install_permission | VARCHAR(16) | 非空 | ‘everyone’ | 安装权限 |
| debug_permission | VARCHAR(16) | 非空 | ‘noone’ | 调试权限 |
权限枚举
安装权限 (InstallPermission)
EVERYONE = “everyone” # 所有人可安装
ADMINS = “admins” # 仅管理员可安装
NOBODY = “noone” # 禁止安装
调试权限 (DebugPermission)
EVERYONE = “everyone” # 所有人可调试
ADMINS = “admins” # 仅管理员可调试
NOBODY = “noone” # 禁止调试
约束
主键约束: account_plugin_permission_pkey
唯一约束: unique_tenant_plugin (tenant_id)
3. tenant_plugin_auto_upgrade_strategies 表 - 租户插件自动升级策略表
表基本信息
表名: tenant_plugin_auto_upgrade_strategies
主键: id (UUID)
描述: 租户插件自动升级策略配置表
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 策略记录ID |
| tenant_id | UUID | 非空 | - | 租户ID |
| strategy_setting | VARCHAR(16) | 非空 | ‘fix_only’ | 升级策略设置 |
| upgrade_time_of_day | INTEGER | 非空 | 0 | 每日升级时间(秒) |
| upgrade_mode | VARCHAR(16) | 非空 | ‘exclude’ | 升级模式 |
| exclude_plugins | ARRAY[VARCHAR(255)] | 非空 | - | 排除的插件列表 |
| include_plugins | ARRAY[VARCHAR(255)] | 非空 | - | 包含的插件列表 |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
策略枚举
升级策略设置 (StrategySetting)
DISABLED = “disabled” # 禁用自动升级
FIX_ONLY = “fix_only” # 仅修复版本升级
LATEST = “latest” # 升级到最新版本
升级模式 (UpgradeMode)
ALL = “all” # 升级所有插件
PARTIAL = “partial” # 部分升级
EXCLUDE = “exclude” # 排除模式
约束
主键约束: tenant_plugin_auto_upgrade_strategy_pkey
唯一约束: unique_tenant_plugin_auto_upgrade_strategy (tenant_id)
tenant_account_joins 表结构详细分析
表基本信息
表名: tenant_account_joins
主键: id (UUID)
描述: 租户-用户关联表(中间表),实现多对多关系
作用: 管理用户在不同租户中的成员关系和权限
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 关联记录唯一标识符 |
| tenant_id | UUID | 非空 | - | 租户ID |
| account_id | UUID | 非空 | - | 用户账户ID |
| current | BOOLEAN | 非空 | false | 是否为当前活跃租户 |
| role | VARCHAR(16) | 非空 | ‘normal’ | 用户在租户中的角色 |
| invited_by | UUID | 可空 | NULL | 邀请人账户ID |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 关联记录创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 关联记录更新时间 |
class TenantAccountRole(enum.StrEnum):
OWNER = “owner” # 所有者 - 最高权限
ADMIN = “admin” # 管理员 - 管理权限
EDITOR = “editor” # 编辑者 - 编辑权限
NORMAL = “normal” # 普通用户 - 基础权限
DATASET_OPERATOR = “dataset_operator” # 数据集操作员 - 数据集权限
- 多对多关系
tenants (租户) ←→ tenant_account_joins (中间表) ←→ accounts (用户) - 外键关联
tenant_account_joins.tenant_id → tenants.id
tenant_account_joins.account_id → accounts.id
tenant_account_joins.invited_by → accounts.id
apps 表结构详细分析
表基本信息
表名: apps
主键: id (UUID)
索引: app_tenant_id_idx (tenant_id字段)
描述: 应用主表,存储所有应用的基本信息和配置
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 应用唯一标识符 |
| tenant_id | UUID | 非空 | - | 所属租户ID |
| name | VARCHAR(255) | 非空 | - | 应用名称 |
| description | TEXT | 可空 | ‘’ | 应用描述 |
| mode | VARCHAR(255) | 非空 | - | 应用模式,可选值: completion, workflow, chat, advanced-chat, agent-chat |
| icon_type | VARCHAR(255) | 可空 | NULL | 图标类型 (image/emoji) |
| icon | VARCHAR(255) | 可空 | NULL | 图标URL或emoji |
| icon_background | VARCHAR(255) | 可空 | NULL | 图标背景色 |
| use_icon_as_answer_icon | BOOLEAN | 非空 | false | 是否使用图标作为回答图标 |
| app_model_config_id | UUID | 可空 | NULL | 应用模型配置ID |
| workflow_id | UUID | 可空 | NULL | 工作流ID |
| status | VARCHAR(255) | 非空 | ‘normal’ | 应用状态 |
| enable_site | BOOLEAN | 非空 | - | 是否启用站点 |
| enable_api | BOOLEAN | 非空 | - | 是否启用API |
| is_demo | BOOLEAN | 非空 | false | 是否为演示应用 |
| is_public | BOOLEAN | 非空 | false | 是否公开 |
| is_universal | BOOLEAN | 非空 | false | 是否通用应用 |
| api_rpm | INTEGER | 非空 | 0 | API每分钟请求限制 |
| api_rph | INTEGER | 非空 | 0 | API每小时请求限制 |
| max_active_requests | INTEGER | 可空 | NULL | 最大活跃请求数 |
| tracing | TEXT | 可空 | NULL | 追踪配置 |
| created_by | UUID | 可空 | NULL | 创建者ID |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_by | UUID | 可空 | NULL | 更新者ID |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
与其他表的关联关系
- 一对多关系
apps → conversations: 一个应用可以有多个对话
关联字段: conversations.app_id = apps.id
apps → messages: 一个应用可以有多个消息
关联字段: messages.app_id = apps.id
apps → sites: 一个应用可以有多个站点配置
关联字段: sites.app_id = apps.id
apps → api_tokens: 一个应用可以有多个API令牌
关联字段: api_tokens.app_id = apps.id - 多对一关系
tenants → apps: 一个租户可以有多个应用
关联字段: apps.tenant_id = tenants.id
app_model_configs → apps: 一个应用配置对应一个应用
关联字段: apps.app_model_config_id = app_model_configs.id
workflows → apps: 一个工作流对应一个应用
关联字段: apps.workflow_id = workflows.id - 多对多关系
apps ↔ tags: 通过 tag_bindings 中间表
关联字段: tag_bindings.target_id = apps.id AND tag_bindings.tag_id = tags.id - 特殊关联
installed_apps: 应用安装关系表
关联字段: installed_apps.app_id = apps.id AND installed_apps.tenant_id = apps.tenant_id
recommended_apps: 推荐应用表
关联字段: recommended_apps.app_id = apps.id
应用模式说明
应用支持以下5种模式:
completion: 文本补全模式
workflow: 工作流模式
chat: 聊天模式
advanced-chat: 高级聊天模式
agent-chat: 智能体聊天模式
重要属性方法
is_agent: 判断是否为智能体应用
mode_compatible_with_agent: 获取兼容智能体的模式
site: 获取应用的站点配置
app_model_config: 获取应用的模型配置
workflow: 获取应用的工作流配置
tenant: 获取应用所属的租户
九个表结构详细分析
- app_model_configs - 应用模型配置表
表基本信息
表名: app_model_configs
主键: id (UUID)
索引: app_app_id_idx (app_id字段)
描述: 存储应用的AI模型配置和提示词设置
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 配置唯一标识符 |
| app_id | UUID | 非空 | - | 关联的应用ID |
| provider | VARCHAR(255) | 可空 | NULL | AI模型提供商 |
| model_id | VARCHAR(255) | 可空 | NULL | 模型ID |
| configs | JSON | 可空 | NULL | 模型配置参数 |
| opening_statement | TEXT | 可空 | NULL | 开场白 |
| suggested_questions | TEXT | 可空 | NULL | 建议问题(JSON) |
| suggested_questions_after_answer | TEXT | 可空 | NULL | 回答后建议问题(JSON) |
| speech_to_text | TEXT | 可空 | NULL | 语音转文字配置(JSON) |
| text_to_speech | TEXT | 可空 | NULL | 文字转语音配置(JSON) |
| more_like_this | TEXT | 可空 | NULL | 相似内容配置(JSON) |
| model | TEXT | 可空 | NULL | 模型配置(JSON) |
| user_input_form | TEXT | 可空 | NULL | 用户输入表单(JSON) |
| dataset_query_variable | VARCHAR(255) | 可空 | NULL | 数据集查询变量 |
| pre_prompt | TEXT | 可空 | NULL | 前置提示词 |
| agent_mode | TEXT | 可空 | NULL | 智能体模式配置(JSON) |
| sensitive_word_avoidance | TEXT | 可空 | NULL | 敏感词规避配置(JSON) |
| retriever_resource | TEXT | 可空 | NULL | 检索资源配置(JSON) |
| prompt_type | VARCHAR(255) | 非空 | ‘simple’ | 提示词类型 |
| chat_prompt_config | TEXT | 可空 | NULL | 聊天提示词配置(JSON) |
| completion_prompt_config | TEXT | 可空 | NULL | 补全提示词配置(JSON) |
| dataset_configs | TEXT | 可空 | NULL | 数据集配置(JSON) |
| external_data_tools | TEXT | 可空 | NULL | 外部数据工具(JSON) |
| file_upload | TEXT | 可空 | NULL | 文件上传配置(JSON) |
- recommended_apps - 推荐应用表
表基本信息
表名: recommended_apps
主键: id (UUID)
索引: recommended_app_app_id_idx, recommended_app_is_listed_idx
描述: 管理推荐应用展示
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 推荐记录ID |
| app_id | UUID | 非空 | - | 应用ID |
| description | JSON | 非空 | - | 多语言描述 |
| copyright | VARCHAR(255) | 非空 | - | 版权信息 |
| privacy_policy | VARCHAR(255) | 非空 | - | 隐私政策 |
| custom_disclaimer | TEXT | 可空 | ‘’ | 自定义免责声明 |
| category | VARCHAR(255) | 非空 | - | 应用分类 |
| position | INTEGER | 非空 | 0 | 排序位置 |
| is_listed | BOOLEAN | 非空 | true | 是否上架 |
| install_count | INTEGER | 非空 | 0 | 安装次数 |
| language | VARCHAR(255) | 非空 | ‘en-US’ | 语言 |
- installed_apps - 已安装应用表(中间表)
表基本信息
表名: installed_apps
主键: id (UUID)
唯一约束: unique_tenant_app (tenant_id, app_id)
描述: 租户与应用的多对多关系表
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 安装记录ID |
| tenant_id | UUID | 非空 | - | 租户ID |
| app_id | UUID | 非空 | - | 应用ID |
| app_owner_tenant_id | UUID | 非空 | - | 应用所有者租户ID |
| position | INTEGER | 非空 | 0 | 排序位置 |
| is_pinned | BOOLEAN | 非空 | false | 是否置顶 |
| last_used_at | DATETIME | 可空 | NULL | 最后使用时间 |
- sites - 应用站点配置表
表基本信息
表名: sites
主键: id (UUID)
索引: site_app_id_idx, site_code_idx
描述: 应用的公开站点配置
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 站点ID |
| app_id | UUID | 非空 | - | 应用ID |
| title | VARCHAR(255) | 非空 | - | 站点标题 |
| icon_type | VARCHAR(255) | 可空 | NULL | 图标类型 |
| icon | VARCHAR(255) | 可空 | NULL | 图标 |
| icon_background | VARCHAR(255) | 可空 | NULL | 图标背景 |
| description | TEXT | 可空 | NULL | 描述 |
| default_language | VARCHAR(255) | 非空 | - | 默认语言 |
| chat_color_theme | VARCHAR(255) | 可空 | NULL | 聊天主题色 |
| chat_color_theme_inverted | BOOLEAN | 非空 | false | 主题色反转 |
| copyright | VARCHAR(255) | 可空 | NULL | 版权信息 |
| privacy_policy | VARCHAR(255) | 可空 | NULL | 隐私政策 |
| show_workflow_steps | BOOLEAN | 非空 | true | 显示工作流步骤 |
| use_icon_as_answer_icon | BOOLEAN | 非空 | false | 使用图标作为回答图标 |
| custom_disclaimer | TEXT | 可空 | ‘’ | 自定义免责声明 |
| customize_domain | VARCHAR(255) | 可空 | NULL | 自定义域名 |
| customize_token_strategy | VARCHAR(255) | 非空 | - | 自定义令牌策略 |
| prompt_public | BOOLEAN | 非空 | false | 提示词公开 |
| status | VARCHAR(255) | 非空 | ‘normal’ | 状态 |
| code | VARCHAR(255) | 可空 | NULL | 站点代码 |
- api_tokens - API令牌表
表基本信息
表名: api_tokens
主键: id (UUID)
索引: api_token_app_id_type_idx, api_token_token_idx, api_token_tenant_idx
描述: 管理API访问令牌
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 令牌ID |
| app_id | UUID | 可空 | NULL | 应用ID |
| tenant_id | UUID | 可空 | NULL | 租户ID |
| type | VARCHAR(16) | 非空 | - | 令牌类型 |
| token | VARCHAR(255) | 非空 | - | 令牌字符串 |
| last_used_at | DATETIME | 可空 | NULL | 最后使用时间 |
- app_annotation_settings - 应用标注设置表
表基本信息
表名: app_annotation_settings
主键: id (UUID)
索引: app_annotation_settings_app_idx
描述: 应用的知识库标注配置
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 设置ID |
| app_id | UUID | 非空 | - | 应用ID |
| score_threshold | FLOAT | 非空 | 0 | 相似度阈值 |
| collection_binding_id | UUID | 非空 | - | 知识库绑定ID |
| created_user_id | UUID | 非空 | - | 创建用户ID |
| updated_user_id | UUID | 非空 | - | 更新用户ID |
- app_annotation_hit_histories - 标注命中历史表
表基本信息
表名: app_annotation_hit_histories
主键: id (UUID)
索引: 多个索引用于查询优化
描述: 记录标注匹配的历史记录
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 历史记录ID |
| app_id | UUID | 非空 | - | 应用ID |
| annotation_id | UUID | 非空 | - | 标注ID |
| source | TEXT | 非空 | - | 来源 |
| question | TEXT | 非空 | - | 用户问题 |
| account_id | UUID | 非空 | - | 账户ID |
| score | FLOAT | 非空 | 0 | 相似度分数 |
| message_id | UUID | 非空 | - | 消息ID |
| annotation_question | TEXT | 非空 | - | 标注问题 |
| annotation_content | TEXT | 非空 | - | 标注内容 |
- app_mcp_servers - MCP服务器配置表
表基本信息
表名: app_mcp_servers
主键: id (UUID)
唯一约束: unique_app_mcp_server_tenant_app_id, unique_app_mcp_server_server_code
描述: 应用的多通道协议(MCP)服务器配置
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 服务器ID |
| tenant_id | UUID | 非空 | - | 租户ID |
| app_id | UUID | 非空 | - | 应用ID |
| name | VARCHAR(255) | 非空 | - | 服务器名称 |
| description | VARCHAR(255) | 非空 | - | 描述 |
| server_code | VARCHAR(255) | 非空 | - | 服务器代码 |
| status | VARCHAR(255) | 非空 | ‘normal’ | 状态 |
| parameters | TEXT | 非空 | - | 参数配置(JSON) |
- trace_app_config - 应用追踪配置表
表基本信息
表名: trace_app_config
主键: id (UUID)
索引: trace_app_config_app_id_idx
描述: 应用的追踪和监控配置
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 配置ID |
| app_id | UUID | 非空 | - | 应用ID |
| tracing_provider | VARCHAR(255) | 可空 | NULL | 追踪提供商 |
| tracing_config | JSON | 可空 | NULL | 追踪配置 |
| is_active | BOOLEAN | 非空 | true | 是否激活 |
表关联关系总结
一对多关系:
apps → app_model_configs (一个应用一个配置)
apps → sites (一个应用一个站点)
apps → api_tokens (一个应用多个令牌)
apps → app_annotation_settings (一个应用一个标注设置)
apps → app_mcp_servers (一个应用一个MCP服务器)
apps → trace_app_config (一个应用一个追踪配置)
多对多关系:
apps ↔ tenants 通过 installed_apps (租户可以安装多个应用)
一对多关系:
apps → recommended_apps (一个应用一个推荐记录)
apps → app_annotation_hit_histories (一个应用多个命中历史)
conversations 表结构详细分析
表基本信息
表名: conversations
主键: id (UUID)
索引: conversation_app_from_user_idx (app_id, from_source, from_end_user_id)
描述: 对话表,存储用户与AI应用的对话会话信息
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 对话唯一标识符 |
| app_id | UUID | 非空 | - | 关联的应用ID |
| name | VARCHAR(255) | 非空 | - | 对话名称 |
| app_model_config_id | UUID | 可空 | NULL | 应用模型配置ID |
| model_provider | VARCHAR(255) | 可空 | NULL | AI模型提供商 |
| model_id | VARCHAR(255) | 可空 | NULL | 模型ID |
| override_model_configs | TEXT | 可空 | NULL | 覆盖的模型配置(JSON) |
| mode | VARCHAR(255) | 非空 | - | 对话模式 |
| summary | TEXT | 可空 | NULL | 对话摘要 |
| _inputs | JSON | 非空 | - | 输入参数(JSON格式) |
| introduction | TEXT | 可空 | NULL | 对话介绍 |
| system_instruction | TEXT | 可空 | NULL | 系统指令 |
| system_instruction_tokens | INTEGER | 非空 | 0 | 系统指令token数 |
| status | VARCHAR(255) | 非空 | - | 对话状态 |
| dialogue_count | INTEGER | 非空 | 0 | 对话轮次计数 |
| invoke_from | VARCHAR(255) | 可空 | NULL | 调用来源 |
| from_source | VARCHAR(255) | 非空 | - | 用户来源 |
| from_end_user_id | UUID | 可空 | NULL | 终端用户ID |
| from_account_id | UUID | 可空 | NULL | 账户用户ID |
| read_at | DATETIME | 可空 | NULL | 阅读时间 |
| read_account_id | UUID | 可空 | NULL | 阅读者账户ID |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
| is_deleted | BOOLEAN | 非空 | false | 是否已删除 |
与其他表的关联关系
- 一对多关系
conversations → messages: 一个对话包含多个消息
关联字段: messages.conversation_id = conversations.id
关系: messages = db.relationship(“Message”, backref=“conversation”, lazy=“select”, passive_deletes=“all”)
conversations → message_annotations: 一个对话可以有多个消息标注
关联字段: message_annotations.conversation_id = conversations.id
关系: message_annotations = db.relationship(“MessageAnnotation”, backref=“conversation”, lazy=“select”, passive_deletes=“all”) - 多对一关系
apps → conversations: 一个应用可以有多个对话
关联字段: conversations.app_id = apps.id
app_model_configs → conversations: 一个模型配置对应多个对话
关联字段: conversations.app_model_config_id = app_model_configs.id
accounts → conversations: 一个账户用户可以创建多个对话
关联字段: conversations.from_account_id = accounts.id
end_users → conversations: 一个终端用户可以创建多个对话
关联字段: conversations.from_end_user_id = end_users.id - 间接关联
conversations → message_feedbacks: 通过messages表关联
关联字段: message_feedbacks.conversation_id = conversations.id
重要属性方法
- 输入处理
inputs: 处理文件映射,将JSON格式的输入转换为File对象
inputs.setter: 将File对象转换为JSON格式存储 - 模型配置
model_config: 获取对话的模型配置,支持覆盖配置 - 统计信息
summary_or_query: 获取对话摘要或第一条消息的查询
message_count: 统计对话中的消息数量
dialogue_count: 对话轮次计数 - 反馈统计
user_feedback_stats: 用户反馈统计(点赞/点踩)
admin_feedback_stats: 管理员反馈统计(点赞/点踩) - 状态统计
status_count: 工作流执行状态统计(成功/失败/部分成功) - 关联查询
first_message: 获取对话的第一条消息
app: 获取关联的应用
from_end_user_session_id: 获取终端用户会话ID
from_account_name: 获取账户用户名 - 调试模式
in_debug_mode: 判断是否处于调试模式(有覆盖配置)
对话来源类型
from_source 字段可能的值:
“user”: 普通用户
“admin”: 管理员
“api”: API调用
“web”: Web界面
对话状态
status 字段可能的值:
“normal”: 正常状态
“archived”: 已归档
“deleted”: 已删除
对话模式
mode 字段对应应用模式:
“completion”: 文本补全
“chat”: 聊天对话
“advanced-chat”: 高级聊天
“agent-chat”: 智能体聊天
“workflow”: 工作流
messages 表结构详细分析
表基本信息
表名: messages
主键: id (UUID)
索引: 多个索引用于查询优化
描述: 消息表,存储用户与AI的每次交互消息
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 消息唯一标识符 |
| app_id | UUID | 非空 | - | 关联的应用ID |
| conversation_id | UUID | 非空 | - | 关联的对话ID |
| parent_message_id | UUID | 可空 | NULL | 父消息ID(用于消息链) |
| model_provider | VARCHAR(255) | 可空 | NULL | AI模型提供商 |
| model_id | VARCHAR(255) | 可空 | NULL | 模型ID |
| override_model_configs | TEXT | 可空 | NULL | 覆盖的模型配置(JSON) |
| _inputs | JSON | 非空 | - | 输入参数(JSON格式) |
| query | TEXT | 非空 | - | 用户查询内容 |
| message | JSON | 非空 | - | 消息内容(JSON格式) |
| answer | TEXT | 非空 | - | AI回答内容 |
| message_tokens | INTEGER | 非空 | 0 | 消息token数 |
| message_unit_price | NUMERIC(10,4) | 非空 | - | 消息单价 |
| message_price_unit | NUMERIC(10,7) | 非空 | 0.001 | 消息价格单位 |
| answer_tokens | INTEGER | 非空 | 0 | 回答token数 |
| answer_unit_price | NUMERIC(10,4) | 非空 | - | 回答单价 |
| answer_price_unit | NUMERIC(10,7) | 非空 | 0.001 | 回答价格单位 |
| total_price | NUMERIC(10,7) | 可空 | NULL | 总价格 |
| currency | VARCHAR(255) | 非空 | - | 货币类型 |
| provider_response_latency | FLOAT | 非空 | 0 | 提供商响应延迟 |
| status | VARCHAR(255) | 非空 | ‘normal’ | 消息状态 |
| error | TEXT | 可空 | NULL | 错误信息 |
| message_metadata | TEXT | 可空 | NULL | 消息元数据(JSON) |
| invoke_from | VARCHAR(255) | 可空 | NULL | 调用来源 |
| from_source | VARCHAR(255) | 非空 | - | 用户来源 |
| from_end_user_id | UUID | 可空 | NULL | 终端用户ID |
| from_account_id | UUID | 可空 | NULL | 账户用户ID |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
| agent_based | BOOLEAN | 非空 | false | 是否为智能体模式 |
| workflow_run_id | UUID | 可空 | NULL | 工作流运行ID |
与其他表的关联关系
- 多对一关系
conversations → messages: 一个对话包含多个消息
关联字段: messages.conversation_id = conversations.id
外键约束: db.ForeignKey(“conversations.id”)
apps → messages: 一个应用可以有多个消息
关联字段: messages.app_id = apps.id
accounts → messages: 一个账户用户可以发送多个消息
关联字段: messages.from_account_id = accounts.id
end_users → messages: 一个终端用户可以发送多个消息
关联字段: messages.from_end_user_id = end_users.id - 一对多关系
messages → message_feedbacks: 一个消息可以有多个反馈
关联字段: message_feedbacks.message_id = messages.id
messages → message_annotations: 一个消息可以有多个标注
关联字段: message_annotations.message_id = messages.id
messages → message_files: 一个消息可以包含多个文件
关联字段: message_files.message_id = messages.id
messages → message_agent_thoughts: 一个消息可以有多个智能体思考过程
关联字段: message_agent_thoughts.message_id = messages.id
messages → dataset_retriever_resources: 一个消息可以有多个检索资源
关联字段: dataset_retriever_resources.message_id = messages.id - 自关联关系
messages → messages: 消息链关系
关联字段: messages.parent_message_id = messages.id - 间接关联
workflows → messages: 通过workflow_run_id关联
关联字段: messages.workflow_run_id = workflow_runs.id
重要属性方法
- 输入处理
inputs: 处理文件映射,将JSON格式的输入转换为File对象
inputs.setter: 将File对象转换为JSON格式存储 - 文件URL重新签名
re_sign_file_url_answer: 重新签名文件URL,确保安全性 - 反馈查询
user_feedback: 获取用户反馈
admin_feedback: 获取管理员反馈
feedbacks: 获取所有反馈 - 标注查询
annotation: 获取消息标注
annotation_hit_history: 获取标注命中历史 - 模型配置
app_model_config: 获取应用模型配置
in_debug_mode: 判断是否处于调试模式 - 元数据处理
message_metadata_dict: 将JSON元数据转换为字典 - 智能体功能
agent_thoughts: 获取智能体思考过程
retriever_resources: 获取检索资源 - 文件管理
message_files: 获取消息关联的文件列表 - 工作流关联
workflow_run: 获取关联的工作流运行
消息来源类型
from_source 字段可能的值:
“user”: 普通用户
“admin”: 管理员
“api”: API调用
“web”: Web界面
消息状态
status 字段可能的值:
“normal”: 正常状态
“error”: 错误状态
“pending”: 等待状态
“processing”: 处理中
消息类型
根据 agent_based 字段:
true: 智能体模式消息
false: 普通对话消息
message_feedbacks - 消息反馈表
表基本信息
表名: message_feedbacks
主键: id (UUID)
描述: 存储用户对消息的反馈评价
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 反馈记录唯一标识符 |
| app_id | UUID | 非空 | - | 关联的应用ID |
| conversation_id | UUID | 非空 | - | 关联的对话ID |
| message_id | UUID | 非空 | - | 关联的消息ID |
| rating | VARCHAR(255) | 非空 | - | 评分等级 |
| content | TEXT | 可空 | NULL | 反馈内容 |
| from_source | VARCHAR(255) | 非空 | - | 反馈来源 |
| from_end_user_id | UUID | 可空 | NULL | 终端用户ID |
| from_account_id | UUID | 可空 | NULL | 账户ID |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
索引
主键索引: message_feedback_pkey
应用索引: message_feedback_app_idx
消息索引: message_feedback_message_idx
对话索引: message_feedback_conversation_idx
message_files - 消息文件表
表基本信息
表名: message_files
主键: id (UUID)
描述: 存储消息中附带的文件信息
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 文件记录唯一标识符 |
| message_id | UUID | 非空 | - | 关联的消息ID |
| type | VARCHAR(255) | 非空 | - | 文件类型 |
| transfer_method | VARCHAR(255) | 非空 | - | 传输方式 |
| url | TEXT | 可空 | NULL | 文件URL |
| belongs_to | VARCHAR(255) | 可空 | NULL | 归属方(user/assistant) |
| upload_file_id | UUID | 可空 | NULL | 上传文件ID |
| created_by_role | VARCHAR(255) | 非空 | - | 创建者角色 |
| created_by | UUID | 非空 | - | 创建者ID |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
索引
主键索引: message_file_pkey
消息索引: message_file_message_idx
创建者索引: message_file_created_by_idx
message_annotations - 消息标注表
表基本信息
表名: message_annotations
主键: id (UUID)
描述: 存储消息的标注信息,用于知识库检索
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 标注记录唯一标识符 |
| app_id | UUID | 非空 | - | 关联的应用ID |
| conversation_id | UUID | 可空 | NULL | 关联的对话ID |
| message_id | UUID | 可空 | NULL | 关联的消息ID |
| question | TEXT | 可空 | NULL | 问题内容 |
| content | TEXT | 非空 | - | 标注内容 |
| hit_count | INTEGER | 非空 | 0 | 命中次数 |
| account_id | UUID | 非空 | - | 创建者账户ID |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
索引
主键索引: message_annotation_pkey
应用索引: message_annotation_app_idx
对话索引: message_annotation_conversation_idx
消息索引: message_annotation_message_idx
message_chains - 消息链表
表基本信息
表名: message_chains
主键: id (UUID)
描述: 存储消息的处理链信息
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 消息链唯一标识符 |
| message_id | UUID | 非空 | - | 关联的消息ID |
| type | VARCHAR(255) | 非空 | - | 链类型 |
| input | TEXT | 可空 | NULL | 输入内容 |
| output | TEXT | 可空 | NULL | 输出内容 |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
索引
主键索引: message_chain_pkey
消息索引: message_chain_message_id_idx
message_agent_thoughts - 智能体思考表
表基本信息
表名: message_agent_thoughts
主键: id (UUID)
描述: 存储智能体的思考过程和工具使用记录
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 思考记录唯一标识符 |
| message_id | UUID | 非空 | - | 关联的消息ID |
| message_chain_id | UUID | 可空 | NULL | 关联的消息链ID |
| position | INTEGER | 非空 | - | 思考位置 |
| thought | TEXT | 可空 | NULL | 思考内容 |
| tool | TEXT | 可空 | NULL | 使用的工具 |
| tool_labels_str | TEXT | 非空 | ‘{}’ | 工具标签(JSON) |
| tool_meta_str | TEXT | 非空 | ‘{}’ | 工具元数据(JSON) |
| tool_input | TEXT | 可空 | NULL | 工具输入 |
| observation | TEXT | 可空 | NULL | 观察结果 |
| tool_process_data | TEXT | 可空 | NULL | 工具处理数据 |
| message | TEXT | 可空 | NULL | 消息内容 |
| message_token | INTEGER | 可空 | NULL | 消息令牌数 |
| message_unit_price | NUMERIC | 可空 | NULL | 消息单价 |
| message_price_unit | NUMERIC(10,7) | 非空 | 0.001 | 消息价格单位 |
| message_files | TEXT | 可空 | NULL | 消息文件 |
| answer | TEXT | 可空 | NULL | 回答内容 |
| answer_token | INTEGER | 可空 | NULL | 回答令牌数 |
| answer_unit_price | NUMERIC | 可空 | NULL | 回答单价 |
| answer_price_unit | NUMERIC(10,7) | 非空 | 0.001 | 回答价格单位 |
| tokens | INTEGER | 可空 | NULL | 总令牌数 |
| total_price | NUMERIC | 可空 | NULL | 总价格 |
| currency | VARCHAR | 可空 | NULL | 货币 |
| latency | FLOAT | 可空 | NULL | 延迟时间 |
| created_by_role | VARCHAR | 非空 | - | 创建者角色 |
| created_by | UUID | 非空 | - | 创建者ID |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
索引
主键索引: message_agent_thought_pkey
消息索引: message_agent_thought_message_id_idx
消息链索引: message_agent_thought_message_chain_id_idx
dataset_retriever_resources - 数据集检索资源表
表基本信息
表名: dataset_retriever_resources
主键: id (UUID)
描述: 存储数据集检索的资源信息
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 资源记录唯一标识符 |
| message_id | UUID | 非空 | - | 关联的消息ID |
| position | INTEGER | 非空 | - | 位置序号 |
| dataset_id | UUID | 非空 | - | 数据集ID |
| dataset_name | TEXT | 非空 | - | 数据集名称 |
| document_id | UUID | 可空 | NULL | 文档ID |
| document_name | TEXT | 非空 | - | 文档名称 |
| data_source_type | TEXT | 可空 | NULL | 数据源类型 |
| segment_id | UUID | 可空 | NULL | 段落ID |
| score | FLOAT | 可空 | NULL | 相似度分数 |
| content | TEXT | 非空 | - | 检索内容 |
| hit_count | INTEGER | 可空 | NULL | 命中次数 |
| word_count | INTEGER | 可空 | NULL | 字数统计 |
| segment_position | INTEGER | 可空 | NULL | 段落位置 |
| index_node_hash | TEXT | 可空 | NULL | 索引节点哈希 |
| retriever_from | TEXT | 非空 | - | 检索来源 |
| created_by | UUID | 非空 | - | 创建者ID |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
索引
主键索引: dataset_retriever_resource_pkey
消息索引: dataset_retriever_resource_message_id_idx
pinned_conversations - 置顶对话表
表基本信息
表名: pinned_conversations
主键: id (UUID)
描述: 存储用户置顶的对话信息
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 置顶记录唯一标识符 |
| app_id | UUID | 非空 | - | 关联的应用ID |
| conversation_id | UUID | 非空 | - | 关联的对话ID |
| created_by_role | VARCHAR(255) | 非空 | ‘end_user’ | 创建者角色 |
| created_by | UUID | 非空 | - | 创建者ID |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
索引
主键索引: pinned_conversation_pkey
对话索引: pinned_conversation_conversation_idx
saved_messages - 保存消息表
表基本信息
表名: saved_messages
主键: id (UUID)
描述: 存储用户保存的消息信息
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 保存记录唯一标识符 |
| app_id | UUID | 非空 | - | 关联的应用ID |
| message_id | UUID | 非空 | - | 关联的消息ID |
| created_by_role | VARCHAR(255) | 非空 | ‘end_user’ | 创建者角色 |
| created_by | UUID | 非空 | - | 创建者ID |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
索引
主键索引: saved_message_pkey
消息索引: saved_message_message_idx
表关联关系总结
主要关联关系
消息相关表:
messages ←→ message_feedbacks (一对多)
messages ←→ message_files (一对多)
messages ←→ message_annotations (一对多)
messages ←→ message_chains (一对多)
messages ←→ message_agent_thoughts (一对多)
messages ←→ dataset_retriever_resources (一对多)
对话相关表:
conversations ←→ pinned_conversations (一对多)
conversations ←→ message_annotations (一对多)
应用相关表:
apps ←→ saved_messages (一对多)
apps ←→ pinned_conversations (一对多)
datasets-数据集
表基本信息
表名: datasets
主键: id (UUID)
索引: dataset_tenant_idx (tenant_id字段), retrieval_model_idx (retrieval_model字段)
描述: 数据集主表,存储知识库的基本信息和配置
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 数据集唯一标识符 |
| tenant_id | UUID | 非空 | - | 所属租户ID |
| name | VARCHAR(255) | 非空 | - | 数据集名称 |
| description | TEXT | 可空 | NULL | 数据集描述 |
| provider | VARCHAR(255) | 非空 | ‘vendor’ | 数据提供商类型 |
| permission | VARCHAR(255) | 非空 | ‘only_me’ | 权限设置 |
| 可选值: only_me, all_team_members, partial_members | ||||
| data_source_type | VARCHAR(255) | 可空 | NULL | 数据源类型 |
| indexing_technique | VARCHAR(255) | 可空 | NULL | 索引技术 |
| 可选值: high_quality, economy, NULL | ||||
| index_struct | TEXT | 可空 | NULL | 索引结构(JSON格式) |
| embedding_model | VARCHAR(255) | 可空 | NULL | 嵌入模型名称 |
| embedding_model_provider | VARCHAR(255) | 可空 | NULL | 嵌入模型提供商 |
| collection_binding_id | UUID | 可空 | NULL | 集合绑定ID |
| retrieval_model | JSONB | 可空 | NULL | 检索模型配置 |
| built_in_field_enabled | BOOLEAN | 非空 | false | 是否启用内置字段 |
| created_by | UUID | 非空 | - | 创建者ID |
| updated_by | UUID | 可空 | NULL | 更新者ID |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
索引结构
| 索引名 | 字段 | 类型 | 说明 |
|---|---|---|---|
| dataset_pkey | id | 主键 | 数据集主键索引 |
| dataset_tenant_idx | tenant_id | 普通索引 | 租户索引 |
| retrieval_model_idx | retrieval_model | GIN索引 | 检索模型JSON索引 |
关联关系
一对多关系
数据集 → 文档:
datasets.id ←→ documents.dataset_id
一个数据集包含多个文档
数据集 → 处理规则:
datasets.id ←→ dataset_process_rules.dataset_id
一个数据集有多个处理规则版本
数据集 → 查询记录:
datasets.id ←→ dataset_queries.dataset_id
一个数据集有多个查询记录
数据集 → 权限:
datasets.id ←→ dataset_permissions.dataset_id
一个数据集有多个用户权限
多对多关系
数据集 ↔ 应用:
通过 app_dataset_joins 中间表关联
datasets.id ←→ app_dataset_joins.dataset_id
apps.id ←→ app_dataset_joins.app_id
数据集 ↔ 标签:
通过 tag_bindings 中间表关联
datasets.id ←→ tag_bindings.target_id
tags.id ←→ tag_bindings.tag_id
一对多关系(子表)
数据集 → 文档段落:
datasets.id ←→ document_segments.dataset_id
一个数据集包含多个文档段落
数据集 → 子块:
datasets.id ←→ child_chunks.dataset_id
一个数据集包含多个子块
数据集 → 外部知识绑定:
datasets.id ←→ external_knowledge_bindings.dataset_id
一个数据集有多个外部知识API绑定
特殊属性方法
统计属性
app_count: 关联的应用数量
document_count: 文档总数
available_document_count: 可用文档数量
available_segment_count: 可用段落数量
word_count: 总字数统计
配置属性
index_struct_dict: 索引结构字典
external_retrieval_model: 外部检索模型配置
retrieval_model_dict: 检索模型配置字典
tags: 关联的标签列表
用户属性
created_by_account: 创建者账户信息
latest_process_rule: 最新的处理规则
业务功能
核心功能
知识库管理: 存储和管理知识库的基本信息
权限控制: 通过 permission 字段控制访问权限
模型配置: 配置嵌入模型和检索模型
索引管理: 管理文档的索引结构和处理规则
数据处理流程
文档上传 → documents 表
段落分割 → document_segments 表
子块生成 → child_chunks 表
索引建立 → 向量数据库
检索查询 → dataset_queries 表
统计和分析
文档数量统计
段落数量统计
字数统计
应用关联统计
查询记录追踪
这个表是整个知识库系统的核心,管理着所有与数据集相关的配置、权限、统计和关联关系。
documents文档表
表基本信息
表名: documents
主键: id (UUID)
索引: 多个索引用于查询优化
描述: 文档表,存储知识库中的文档信息和处理状态
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 文档唯一标识符 |
| tenant_id | UUID | 非空 | - | 所属租户ID |
| dataset_id | UUID | 非空 | - | 所属数据集ID |
| position | INTEGER | 非空 | - | 文档在数据集中的位置 |
| name | VARCHAR(255) | 非空 | - | 文档名称 |
| batch | VARCHAR(255) | 非空 | - | 批次标识 |
| data_source_type | VARCHAR(255) | 非空 | - | 数据源类型 |
| 可选值: upload_file, notion_import, website_crawl | ||||
| data_source_info | TEXT | 可空 | NULL | 数据源详细信息(JSON) |
| created_from | VARCHAR(255) | 非空 | - | 创建来源 |
| dataset_process_rule_id | UUID | 可空 | NULL | 数据集处理规则ID |
| created_api_request_id | UUID | 可空 | NULL | 创建API请求ID |
| created_by | UUID | 非空 | - | 创建者ID |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
| processing_started_at | DATETIME | 可空 | NULL | 开始处理时间 |
| file_id | TEXT | 可空 | NULL | 文件ID |
| word_count | INTEGER | 可空 | NULL | 字数统计 |
| parsing_completed_at | DATETIME | 可空 | NULL | 解析完成时间 |
| cleaning_completed_at | DATETIME | 可空 | NULL | 清理完成时间 |
| splitting_completed_at | DATETIME | 可空 | NULL | 分割完成时间 |
| tokens | INTEGER | 可空 | NULL | 令牌数 |
| indexing_latency | FLOAT | 可空 | NULL | 索引延迟 |
| completed_at | DATETIME | 可空 | NULL | 完成时间 |
| is_paused | BOOLEAN | 可空 | false | 是否暂停 |
| paused_by | UUID | 可空 | NULL | 暂停操作者ID |
| paused_at | DATETIME | 可空 | NULL | 暂停时间 |
| error | TEXT | 可空 | NULL | 错误信息 |
| stopped_at | DATETIME | 可空 | NULL | 停止时间 |
| indexing_status | VARCHAR(255) | 非空 | ‘waiting’ | 索引状态,可选值: waiting, parsing, cleaning, splitting, indexing, completed, error |
| enabled | BOOLEAN | 非空 | true | 是否启用 |
| disabled_at | DATETIME | 可空 | NULL | 禁用时间 |
| disabled_by | UUID | 可空 | NULL | 禁用操作者ID |
| archived | BOOLEAN | 非空 | false | 是否归档 |
| archived_reason | VARCHAR(255) | 可空 | NULL | 归档原因 |
| archived_by | UUID | 可空 | NULL | 归档操作者ID |
| archived_at | DATETIME | 可空 | NULL | 归档时间 |
| doc_type | VARCHAR(40) | 可空 | NULL | 文档类型 |
| doc_metadata | JSONB | 可空 | NULL | 文档元数据 |
| doc_form | VARCHAR(255) | 非空 | ‘text_model’ | 文档形式 |
| doc_language | VARCHAR(255) | 可空 | NULL | 文档语言 |
索引结构
| 索引名 | 字段 | 类型 | 说明 |
|---|---|---|---|
| document_pkey | id | 主键 | 文档主键索引 |
| document_dataset_id_idx | dataset_id | 普通索引 | 数据集索引 |
| document_is_paused_idx | is_paused | 普通索引 | 暂停状态索引 |
| document_tenant_idx | tenant_id | 普通索引 | 租户索引 |
| document_metadata_idx | doc_metadata | GIN索引 | 元数据JSON索引 |
关联关系
一对多关系
数据集 → 文档:
datasets.id ←→ documents.dataset_id
一个数据集包含多个文档
文档 → 段落:
documents.id ←→ document_segments.document_id
一个文档包含多个段落
文档 → 子块:
documents.id ←→ child_chunks.document_id
一个文档包含多个子块
处理规则 → 文档:
dataset_process_rules.id ←→ documents.dataset_process_rule_id
一个处理规则应用于多个文档
多对多关系
文档 ↔ 元数据:
通过 dataset_metadata_bindings 中间表关联
documents.id ←→ dataset_metadata_bindings.document_id
dataset_metadatas.id ←→ dataset_metadata_bindings.metadata_id
一对多关系(子表)
租户 → 文档:
tenants.id ←→ documents.tenant_id
一个租户包含多个文档
用户 → 文档:
accounts.id ←→ documents.created_by
一个用户创建多个文档
特殊属性方法
统计属性
segment_count: 段落数量
hit_count: 命中次数统计
average_segment_length: 平均段落长度
用户属性
uploader: 上传者姓名
upload_date: 上传日期
last_update_date: 最后更新日期
状态属性
display_status: 显示状态
queuing: 排队中
paused: 已暂停
indexing: 索引中
error: 错误
available: 可用
disabled: 已禁用
archived: 已归档
内容属性
data_source_info_dict: 数据源信息字典
data_source_detail_dict: 数据源详细信息
doc_metadata_details: 文档元数据详情
process_rule_dict: 处理规则字典
业务功能
文档处理流程
上传阶段: 文档上传到系统
解析阶段: 解析文档内容
清理阶段: 清理和预处理
分割阶段: 分割成段落
索引阶段: 建立向量索引
完成阶段: 文档可用于检索
状态管理
等待处理: waiting
处理中: parsing, cleaning, splitting, indexing
已完成: completed
错误状态: error
暂停状态: is_paused = true
检索支持
支持多种数据源类型
元数据索引支持
段落和子块管理
命中次数统计
这个表是整个知识库系统的核心文档管理表,负责管理文档的完整生命周期,从上传到索引完成的全过程。
document_segments - 文档片段表
表基本信息
表名: document_segments
主键: id (UUID)
描述: 存储文档分割后的段落信息
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 段落唯一标识符 |
| tenant_id | UUID | 非空 | - | 所属租户ID |
| dataset_id | UUID | 非空 | - | 所属数据集ID |
| document_id | UUID | 非空 | - | 所属文档ID |
| position | INTEGER | 非空 | - | 段落位置 |
| content | TEXT | 非空 | - | 段落内容 |
| answer | TEXT | 可空 | NULL | 段落答案 |
| word_count | INTEGER | 非空 | - | 字数统计 |
| tokens | INTEGER | 非空 | - | 令牌数 |
| keywords | JSON | 可空 | NULL | 关键词 |
| index_node_id | VARCHAR(255) | 可空 | NULL | 索引节点ID |
| index_node_hash | VARCHAR(255) | 可空 | NULL | 索引节点哈希 |
| hit_count | INTEGER | 非空 | 0 | 命中次数 |
| enabled | BOOLEAN | 非空 | true | 是否启用 |
| disabled_at | DATETIME | 可空 | NULL | 禁用时间 |
| disabled_by | UUID | 可空 | NULL | 禁用操作者ID |
| status | VARCHAR(255) | 非空 | ‘waiting’ | 处理状态 |
| created_by | UUID | 非空 | - | 创建者ID |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_by | UUID | 可空 | NULL | 更新者ID |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
| indexing_at | DATETIME | 可空 | NULL | 索引时间 |
| completed_at | DATETIME | 可空 | NULL | 完成时间 |
| error | TEXT | 可空 | NULL | 错误信息 |
| stopped_at | DATETIME | 可空 | NULL | 停止时间 |
child_chunks - 子块表
表基本信息
表名: child_chunks
主键: id (UUID)
描述: 存储段落进一步分割的子块信息
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 子块唯一标识符 |
| tenant_id | UUID | 非空 | - | 所属租户ID |
| dataset_id | UUID | 非空 | - | 所属数据集ID |
| document_id | UUID | 非空 | - | 所属文档ID |
| segment_id | UUID | 非空 | - | 所属段落ID |
| position | INTEGER | 非空 | - | 子块位置 |
| content | TEXT | 非空 | - | 子块内容 |
| word_count | INTEGER | 非空 | - | 字数统计 |
| index_node_id | VARCHAR(255) | 可空 | NULL | 索引节点ID |
| index_node_hash | VARCHAR(255) | 可空 | NULL | 索引节点哈希 |
| type | VARCHAR(255) | 非空 | ‘automatic’ | 子块类型 |
| created_by | UUID | 非空 | - | 创建者ID |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_by | UUID | 可空 | NULL | 更新者ID |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
| indexing_at | DATETIME | 可空 | NULL | 索引时间 |
| completed_at | DATETIME | 可空 | NULL | 完成时间 |
| error | TEXT | 可空 | NULL | 错误信息 |
embeddings - 向量嵌入表
表基本信息
表名: embeddings
主键: id (UUID)
描述: 存储文本的向量嵌入表示
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 嵌入记录唯一标识符 |
| model_name | VARCHAR(255) | 非空 | ‘text-embedding-ada-002’ | 模型名称 |
| hash | VARCHAR(64) | 非空 | - | 内容哈希值 |
| embedding | LARGEBINARY | 非空 | - | 向量嵌入数据 |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| provider_name | VARCHAR(255) | 非空 | ‘’ | 提供商名称 |
dataset_collection_bindings - 数据集集合绑定表
表基本信息
表名: dataset_collection_bindings
主键: id (UUID)
描述: 绑定数据集与向量数据库集合
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 绑定记录唯一标识符 |
| provider_name | VARCHAR(255) | 非空 | - | 提供商名称 |
| model_name | VARCHAR(255) | 非空 | - | 模型名称 |
| type | VARCHAR(40) | 非空 | ‘dataset’ | 绑定类型 |
| collection_name | VARCHAR(64) | 非空 | - | 集合名称 |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
dataset_process_rules - 数据集处理规则表
表基本信息
表名: dataset_process_rules
主键: id (UUID)
描述: 存储数据集的处理规则配置
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 规则记录唯一标识符 |
| dataset_id | UUID | 非空 | - | 所属数据集ID |
| mode | VARCHAR(255) | 非空 | ‘automatic’ | 处理模式 |
| 可选值: automatic, custom, hierarchical | ||||
| rules | TEXT | 可空 | NULL | 处理规则(JSON) |
| created_by | UUID | 非空 | - | 创建者ID |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
dataset_queries - 数据集查询表
表基本信息
表名: dataset_queries
主键: id (UUID)
描述: 记录对数据集的查询历史
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 查询记录唯一标识符 |
| dataset_id | UUID | 非空 | - | 所属数据集ID |
| content | TEXT | 非空 | - | 查询内容 |
| source | VARCHAR(255) | 非空 | - | 查询来源 |
| source_app_id | UUID | 可空 | NULL | 来源应用ID |
| created_by_role | VARCHAR | 非空 | - | 创建者角色 |
| created_by | UUID | 非空 | - | 创建者ID |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
dataset_keyword_tables - 数据集关键词表
表基本信息
表名: dataset_keyword_tables
主键: id (UUID)
描述: 存储数据集的关键词索引表
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 关键词表记录唯一标识符 |
| dataset_id | UUID | 非空,唯一 | - | 所属数据集ID |
| keyword_table | TEXT | 非空 | - | 关键词表(JSON) |
| data_source_type | VARCHAR(255) | 非空 | ‘database’ | 数据源类型 |
dataset_permissions - 数据集权限表
表基本信息
表名: dataset_permissions
主键: id (UUID)
描述: 管理用户对数据集的访问权限
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 权限记录唯一标识符 |
| dataset_id | UUID | 非空 | - | 数据集ID |
| account_id | UUID | 非空 | - | 用户账户ID |
| tenant_id | UUID | 非空 | - | 租户ID |
| has_permission | BOOLEAN | 非空 | true | 是否有权限 |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
dataset_auto_disable_logs - 数据集自动禁用日志表
表基本信息
表名: dataset_auto_disable_logs
主键: id (UUID)
描述: 记录数据集自动禁用的日志
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 日志记录唯一标识符 |
| tenant_id | UUID | 非空 | - | 租户ID |
| dataset_id | UUID | 非空 | - | 数据集ID |
| document_id | UUID | 非空 | - | 文档ID |
| notified | BOOLEAN | 非空 | false | 是否已通知 |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
dataset_metadatas - 数据集元数据表
表基本信息
表名: dataset_metadatas
主键: id (UUID)
描述: 存储数据集的元数据字段定义
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 元数据记录唯一标识符 |
| tenant_id | UUID | 非空 | - | 租户ID |
| dataset_id | UUID | 非空 | - | 数据集ID |
| type | VARCHAR(255) | 非空 | - | 元数据类型 |
| name | VARCHAR(255) | 非空 | - | 元数据名称 |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
| created_by | UUID | 非空 | - | 创建者ID |
| updated_by | UUID | 可空 | NULL | 更新者ID |
dataset_metadata_bindings - 数据集元数据绑定表
表基本信息
表名: dataset_metadata_bindings
主键: id (UUID)
描述: 绑定文档与元数据字段
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 绑定记录唯一标识符 |
| tenant_id | UUID | 非空 | - | 租户ID |
| dataset_id | UUID | 非空 | - | 数据集ID |
| metadata_id | UUID | 非空 | - | 元数据ID |
| document_id | UUID | 非空 | - | 文档ID |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| created_by | UUID | 非空 | - | 创建者ID |
external_knowledge_apis - 外部知识API表
表基本信息
表名: external_knowledge_apis
主键: id (UUID)
描述: 存储外部知识API的配置信息
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | API记录唯一标识符 |
| name | VARCHAR(255) | 非空 | - | API名称 |
| description | VARCHAR(255) | 非空 | - | API描述 |
| tenant_id | UUID | 非空 | - | 租户ID |
| settings | TEXT | 可空 | NULL | API设置(JSON) |
| created_by | UUID | 非空 | - | 创建者ID |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_by | UUID | 可空 | NULL | 更新者ID |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
external_knowledge_bindings - 外部知识绑定表
表基本信息
表名: external_knowledge_bindings
主键: id (UUID)
描述: 绑定数据集与外部知识API
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 绑定记录唯一标识符 |
| tenant_id | UUID | 非空 | - | 租户ID |
| external_knowledge_api_id | UUID | 非空 | - | 外部知识API ID |
| dataset_id | UUID | 非空 | - | 数据集ID |
| external_knowledge_id | TEXT | 非空 | - | 外部知识ID |
| created_by | UUID | 非空 | - | 创建者ID |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_by | UUID | 可空 | NULL | 更新者ID |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
tidb_auth_bindings - TiDB认证绑定表
表基本信息
表名: tidb_auth_bindings
主键: id (UUID)
描述: 存储TiDB数据库的认证绑定信息
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 绑定记录唯一标识符 |
| tenant_id | UUID | 可空 | NULL | 租户ID |
| cluster_id | VARCHAR(255) | 非空 | - | 集群ID |
| cluster_name | VARCHAR(255) | 非空 | - | 集群名称 |
| active | BOOLEAN | 非空 | false | 是否激活 |
| status | VARCHAR(255) | 非空 | ‘CREATING’ | 状态 |
| account | VARCHAR(255) | 非空 | - | 账户名 |
| password | VARCHAR(255) | 非空 | - | 密码 |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
whitelists - 白名单表
表基本信息
表名: whitelists
主键: id (UUID)
描述: 存储系统白名单信息
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 白名单记录唯一标识符 |
| tenant_id | UUID | 可空 | NULL | 租户ID |
| category | VARCHAR(255) | 非空 | - | 白名单类别 |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
rate_limit_logs - 限流日志表
表基本信息
表名: rate_limit_logs
主键: id (UUID)
描述: 记录系统限流日志
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 日志记录唯一标识符 |
| tenant_id | UUID | 非空 | - | 租户ID |
| subscription_plan | VARCHAR(255) | 非空 | - | 订阅计划 |
| operation | VARCHAR(255) | 非空 | - | 操作类型 |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
表关联关系总结
主要关联关系
数据集相关:
datasets ←→ dataset_process_rules (一对多)
datasets ←→ dataset_queries (一对多)
datasets ←→ dataset_keyword_tables (一对一)
datasets ←→ dataset_permissions (一对多)
datasets ←→ dataset_metadatas (一对多)
文档相关:
documents ←→ document_segments (一对多)
document_segments ←→ child_chunks (一对多)
元数据相关:
dataset_metadatas ←→ dataset_metadata_bindings (一对多)
documents ←→ dataset_metadata_bindings (一对多)
外部知识相关:
external_knowledge_apis ←→ external_knowledge_bindings (一对多)
datasets ←→ external_knowledge_bindings (一对多)
功能分类
文档处理: document_segments, child_chunks
向量存储: embeddings, dataset_collection_bindings
处理规则: dataset_process_rules
查询记录: dataset_queries
关键词索引: dataset_keyword_tables
权限管理: dataset_permissions
元数据管理: dataset_metadatas, dataset_metadata_bindings
外部集成: external_knowledge_apis, external_knowledge_bindings
系统管理: tidb_auth_bindings, whitelists, rate_limit_logs
这些表共同构成了完整的知识库管理系统,支持文档处理、向量检索、权限控制、外部集成等核心功能。
workflows-工作流表
表基本信息
表名: workflows
主键: id (UUID)
索引: workflow_version_idx (tenant_id, app_id, version)
描述: 工作流表,存储工作流应用和聊天应用工作流模式的配置信息
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 工作流唯一标识符 |
| tenant_id | UUID | 非空 | - | 所属租户ID |
| app_id | UUID | 非空 | - | 所属应用ID |
| type | VARCHAR(255) | 非空 | - | 工作流类型,可选值: workflow(工作流应用), chat(聊天应用工作流模式) |
| version | VARCHAR(255) | 非空 | - | 版本号,draft 表示草稿版本(每个应用只有一个) |
| marked_name | VARCHAR(255) | 非空 | ‘’ | 标记名称 |
| marked_comment | VARCHAR(255) | 非空 | ‘’ | 标记注释 |
| graph | TEXT | 可空 | NULL | 工作流画布配置(JSON),包含节点、边和其他配置的完整画布配置 |
| _features | TEXT | 可空 | NULL | 功能特性配置(JSON) |
| created_by | UUID | 非空 | - | 创建者ID |
| updated_by | UUID | 可空 | NULL | 更新者ID |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
| _environment_variables | TEXT | 非空 | ‘{}’ | 环境变量(JSON) |
| _conversation_variables | TEXT | 非空 | ‘{}’ | 对话变量(JSON) |
关联关系
一对多关系
应用 → 工作流:
apps.id ←→ workflows.app_id
一个应用可以有多个工作流版本
工作流 → 工作流运行:
workflows.id ←→ workflow_runs.workflow_id
一个工作流可以有多个运行记录
工作流 → 节点执行:
workflows.id ←→ workflow_node_executions.workflow_id
一个工作流可以有多个节点执行记录
工作流 → 应用日志:
workflows.id ←→ workflow_app_logs.workflow_id
一个工作流可以有多个应用日志记录
工作流 → 草稿变量:
workflows.app_id ←→ workflow_draft_variables.app_id
一个工作流可以有多个草稿变量
一对多关系(子表)
租户 → 工作流:
tenants.id ←→ workflows.tenant_id
一个租户可以有多个工作流
用户 → 工作流:
accounts.id ←→ workflows.created_by
一个用户可以创建多个工作流
特殊属性方法
配置属性
graph_dict: 工作流图配置字典
features_dict: 功能特性配置字典
environment_variables: 环境变量列表
conversation_variables: 对话变量列表
节点管理
get_node_config_by_id(): 根据节点ID获取节点配置
get_node_type_from_node_config(): 从节点配置获取节点类型
get_enclosing_node_type_and_id(): 获取包含节点的类型和ID
表单生成
user_input_form(): 生成用户输入表单
安全属性
unique_hash: 唯一哈希值
tool_published: 工具是否已发布
业务功能
工作流管理
版本控制: 支持草稿版本和发布版本
画布配置: 存储完整的节点和边配置
变量管理: 管理环境变量和对话变量
功能特性: 支持文件上传等功能配置
应用类型支持
工作流应用: type = ‘workflow’
聊天应用工作流模式: type = ‘chat’
执行追踪
支持工作流运行记录
支持节点执行记录
支持应用日志记录
支持草稿变量记录
安全特性
环境变量加密存储
支持密钥变量类型
变量访问控制
工作流类型枚举
class WorkflowType(Enum):
WORKFLOW = “workflow” # 工作流应用
CHAT = “chat” # 聊天应用工作流模式
版本管理
草稿版本: version = ‘draft’ (每个应用只有一个)
发布版本: version = ‘版本号’ (如时间戳)
这个表是整个工作流系统的核心,管理着所有工作流的配置、版本、变量和执行记录。它支持复杂的工作流设计,包括节点配置、变量管理、执行追踪等功能。
workflow_runs - 工作流运行表
表基本信息
表名: workflow_runs
主键: id (UUID)
描述: 记录工作流的执行运行信息
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 运行记录唯一标识符 |
| tenant_id | UUID | 非空 | - | 所属租户ID |
| app_id | UUID | 非空 | - | 所属应用ID |
| workflow_id | UUID | 非空 | - | 关联的工作流ID |
| type | VARCHAR(255) | 非空 | - | 工作流类型 |
| triggered_from | VARCHAR(255) | 非空 | - | 触发来源,可选值: debugging(画布调试), app-run(应用执行) |
| version | VARCHAR(255) | 非空 | - | 工作流版本 |
| graph | TEXT | 可空 | NULL | 工作流画布配置(JSON) |
| inputs | TEXT | 可空 | NULL | 输入参数(JSON) |
| status | VARCHAR(255) | 非空 | - | 执行状态,可选值: running, succeeded, failed, stopped, partial-succeeded |
| outputs | TEXT | 可空 | ‘{}’ | 输出内容(JSON) |
| error | TEXT | 可空 | NULL | 错误原因 |
| elapsed_time | FLOAT | 非空 | 0 | 耗时(秒) |
| total_tokens | BIGINT | 非空 | 0 | 总令牌数 |
| total_steps | INTEGER | 可空 | 0 | 总步数 |
| created_by_role | VARCHAR(255) | 非空 | - | 创建者角色,可选值: account(控制台账户), end_user(终端用户) |
| created_by | UUID | 非空 | - | 运行者ID |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 运行时间 |
| finished_at | DATETIME | 可空 | NULL | 结束时间 |
| exceptions_count | INTEGER | 可空 | 0 | 异常次数 |
workflow_node_executions - 工作流节点执行表
表基本信息
表名: workflow_node_executions
主键: id (UUID)
描述: 记录工作流中每个节点的执行详情
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 节点执行记录唯一标识符 |
| tenant_id | UUID | 非空 | - | 所属租户ID |
| app_id | UUID | 非空 | - | 所属应用ID |
| workflow_id | UUID | 非空 | - | 关联的工作流ID |
| triggered_from | VARCHAR(255) | 非空 | - | 触发来源,可选值: single-step(单步调试), workflow-run(工作流执行) |
| workflow_run_id | UUID | 可空 | NULL | 关联的工作流运行ID |
| index | INTEGER | 非空 | - | 执行序号 |
| predecessor_node_id | VARCHAR(255) | 可空 | NULL | 前置节点ID |
| node_execution_id | VARCHAR(255) | 可空 | NULL | 节点执行ID |
| node_id | VARCHAR(255) | 非空 | - | 节点ID |
| node_type | VARCHAR(255) | 非空 | - | 节点类型(如 start) |
| title | VARCHAR(255) | 非空 | - | 节点标题 |
| inputs | TEXT | 可空 | NULL | 输入变量(JSON) |
| process_data | TEXT | 可空 | NULL | 节点处理数据(JSON) |
| outputs | TEXT | 可空 | NULL | 输出变量(JSON) |
| status | VARCHAR(255) | 非空 | - | 执行状态,可选值: running, succeeded, failed |
| error | TEXT | 可空 | NULL | 错误原因 |
| elapsed_time | FLOAT | 非空 | 0 | 耗时(秒) |
| execution_metadata | TEXT | 可空 | NULL | 执行元数据(JSON),包含: total_tokens, total_price, currency |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 运行时间 |
| created_by_role | VARCHAR(255) | 非空 | - | 创建者角色 |
| created_by | UUID | 非空 | - | 运行者ID |
| finished_at | DATETIME | 可空 | NULL | 结束时间 |
workflow_app_logs - 工作流应用日志表
表基本信息
表名: workflow_app_logs
主键: id (UUID)
描述: 记录工作流应用的执行日志(排除调试记录)
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 日志记录唯一标识符 |
| tenant_id | UUID | 非空 | - | 所属租户ID |
| app_id | UUID | 非空 | - | 所属应用ID |
| workflow_id | UUID | 非空 | - | 关联的工作流ID |
| workflow_run_id | UUID | 可空 | NULL | 关联的工作流运行ID |
| created_from | VARCHAR(255) | 非空 | - | 创建来源,可选值: service-api(OpenAPI), web-app(Web应用), installed-app(已安装应用) |
| created_by_role | VARCHAR(255) | 非空 | - | 创建者角色,可选值: account(控制台账户), end_user(终端用户) |
| created_by | UUID | 非空 | - | 创建者ID |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
workflow_conversation_variables - 工作流对话变量表
表基本信息
表名: workflow_conversation_variables
主键: id (UUID)
描述: 存储工作流对话中的变量数据
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 变量记录唯一标识符 |
| conversation_id | UUID | 非空,主键 | - | 对话ID |
| app_id | UUID | 非空 | - | 所属应用ID |
| data | TEXT | 非空 | - | 变量数据(JSON) |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
workflow_draft_variables - 工作流草稿变量表
表基本信息
表名: workflow_draft_variables
主键: id (UUID)
描述: 记录工作流调试过程中生成的变量和输出
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 草稿变量记录唯一标识符 |
| app_id | UUID | 非空 | - | 所属应用ID |
| node_id | VARCHAR(255) | 非空 | - | 节点ID,特殊值: conversation(对话变量), sys(系统变量) |
| name | VARCHAR(255) | 非空 | - | 变量名称 |
| description | VARCHAR(255) | 非空 | ‘’ | 变量描述 |
| selector | VARCHAR(255) | 非空 | - | 变量选择器 |
| value_type | ENUM | 非空 | - | 值类型 |
| value | TEXT | 非空 | - | 变量值(JSON) |
| visible | BOOLEAN | 非空 | true | 是否在变量检查面板显示 |
| editable | BOOLEAN | 非空 | false | 用户是否可修改 |
| node_execution_id | UUID | 可空 | NULL | 创建该变量的节点执行ID |
| last_edited_at | DATETIME | 可空 | NULL | 最后编辑时间 |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
关联关系
一对多关系
工作流 → 运行记录:
workflows.id ←→ workflow_runs.workflow_id
一个工作流可以有多个运行记录
工作流运行 → 节点执行:
workflow_runs.id ←→ workflow_node_executions.workflow_run_id
一个工作流运行包含多个节点执行
工作流 → 应用日志:
workflows.id ←→ workflow_app_logs.workflow_id
一个工作流可以有多个应用日志
应用 → 草稿变量:
apps.id ←→ workflow_draft_variables.app_id
一个应用可以有多个草稿变量
一对多关系(子表)
租户 → 运行记录:
tenants.id ←→ workflow_runs.tenant_id
一个租户可以有多个运行记录
用户 → 运行记录:
accounts.id ←→ workflow_runs.created_by
一个用户可以触发多个运行记录
providers表结构详细分析
表基本信息
表名: providers
主键: id (UUID)
索引: provider_tenant_id_provider_idx (tenant_id, provider_name)
描述: 存储API提供商及其配置信息
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 提供商记录唯一标识符 |
| tenant_id | UUID | 非空 | - | 所属租户ID |
| provider_name | VARCHAR(255) | 非空 | - | 提供商名称,如: openai, anthropic, google, azure 等 |
| provider_type | VARCHAR(40) | 非空 | ‘custom’ | 提供商类型,可选值: custom(自定义), system(系统) |
| encrypted_config | TEXT | 可空 | NULL | 加密的配置信息,包含API密钥、端点URL等敏感信息 |
| is_valid | BOOLEAN | 非空 | false | 是否有效 |
| last_used | DATETIME | 可空 | NULL | 最后使用时间 |
| quota_type | VARCHAR(40) | 可空 | ‘’ | 配额类型 |
| 可选值: paid(付费), free(免费), trial(试用) | ||||
| quota_limit | BIGINT | 可空 | NULL | 配额限制 |
| quota_used | BIGINT | 可空 | 0 | 已使用配额 |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
索引结构
| 索引名 | 字段 | 类型 | 说明 |
|---|---|---|---|
| provider_pkey | id | 主键 | 提供商主键索引 |
| provider_tenant_id_provider_idx | tenant_id, provider_name | 复合索引 | 租户提供商查询索引 |
| unique_provider_name_type_quota | tenant_id, provider_name, provider_type, quota_type | 唯一约束 | 提供商名称类型配额唯一约束 |
关联关系
一对多关系
租户 → 提供商:
tenants.id ←→ providers.tenant_id
一个租户可以有多个提供商配置
提供商 → 提供商模型:
providers.provider_name ←→ provider_models.provider_name
一个提供商可以有多个模型配置
提供商 → 默认模型:
providers.provider_name ←→ tenant_default_models.provider_name
一个提供商可以有多个默认模型
提供商 → 模型设置:
providers.provider_name ←→ provider_model_settings.provider_name
一个提供商可以有多个模型设置
提供商 → 负载均衡配置:
providers.provider_name ←→ load_balancing_model_configs.provider_name
一个提供商可以有多个负载均衡配置
提供商 → 订单:
providers.provider_name ←→ provider_orders.provider_name
一个提供商可以有多个订单记录
一对多关系(子表)
用户 → 提供商订单:
accounts.id ←→ provider_orders.account_id
一个用户可以创建多个提供商订单
特殊属性方法
安全属性
token_is_set: 检查是否设置了令牌
is_enabled: 检查提供商是否启用
系统提供商: 只需要 is_valid = true
自定义提供商: 需要 is_valid = true 且 token_is_set = true
枚举定义
ProviderType 枚举
class ProviderType(Enum):
CUSTOM = “custom” # 自定义提供商
SYSTEM = “system” # 系统提供商
ProviderQuotaType 枚举
class ProviderQuotaType(Enum):
PAID = “paid” # 托管付费配额
FREE = “free” # 第三方免费配额
TRIAL = “trial” # 托管试用配额
业务功能
提供商管理
配置管理: 存储API密钥、端点等配置信息
类型区分: 支持系统提供商和自定义提供商
状态管理: 管理提供商的有效性和启用状态
使用追踪: 记录最后使用时间
配额管理
配额类型: 支持付费、免费、试用三种配额类型
配额限制: 设置配额上限
使用统计: 跟踪已使用的配额量
安全特性
配置加密: 敏感配置信息加密存储
访问控制: 基于租户的访问控制
状态验证: 提供商启用状态验证
监控功能
使用统计: 记录最后使用时间
配额监控: 监控配额使用情况
状态追踪: 追踪提供商有效性
相关表结构
- provider_models - 提供商模型表
存储每个提供商的具体模型配置
包含模型名称、类型、配置等信息 - tenant_default_models - 租户默认模型表
存储租户的默认模型设置
按提供商和模型类型分组 - provider_model_settings - 提供商模型设置表
管理模型的启用状态和负载均衡设置 - load_balancing_model_configs - 负载均衡模型配置表
配置负载均衡的具体参数 - provider_orders - 提供商订单表
记录提供商相关的订单信息
包含支付状态、金额等信息
这个表是整个AI提供商管理系统的核心,负责管理各种AI服务提供商的配置、配额、状态等信息,为应用提供AI模型服务支持。
provider_models - 提供商模型表
表基本信息
表名: provider_models
主键: id (UUID)
索引: provider_model_tenant_id_provider_idx (tenant_id, provider_name)
描述: 存储每个提供商下的具体模型配置
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 模型记录唯一标识符 |
| tenant_id | UUID | 非空 | - | 所属租户ID |
| provider_name | VARCHAR(255) | 非空 | - | 提供商名称 |
| model_name | VARCHAR(255) | 非空 | - | 模型名称 |
| model_type | VARCHAR(40) | 非空 | - | 模型类型,如: llm, embedding, rerank, speech_to_text |
| encrypted_config | TEXT | 可空 | NULL | 加密的模型配置 |
| is_valid | BOOLEAN | 非空 | false | 模型是否有效 |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
provider_orders - 提供商订单表
表基本信息
表名: provider_orders
主键: id (UUID)
索引: provider_order_tenant_provider_idx (tenant_id, provider_name)
描述: 存储提供商服务的购买订单信息
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 订单唯一标识符 |
| tenant_id | UUID | 非空 | - | 所属租户ID |
| provider_name | VARCHAR(255) | 非空 | - | 提供商名称 |
| account_id | UUID | 非空 | - | 购买者账户ID |
| payment_product_id | VARCHAR(191) | 非空 | - | 支付产品ID |
| payment_id | VARCHAR(191) | 可空 | NULL | 支付ID |
| transaction_id | VARCHAR(191) | 可空 | NULL | 交易ID |
| quantity | INTEGER | 非空 | 1 | 购买数量 |
| currency | VARCHAR(40) | 可空 | NULL | 货币类型 |
| total_amount | INTEGER | 可空 | NULL | 总金额(分) |
| payment_status | VARCHAR(40) | 非空 | ‘wait_pay’ | 支付状态,可选值: wait_pay, paid, failed, refunded |
| paid_at | DATETIME | 可空 | NULL | 支付时间 |
| pay_failed_at | DATETIME | 可空 | NULL | 支付失败时间 |
| refunded_at | DATETIME | 可空 | NULL | 退款时间 |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
provider_model_settings - 提供商模型设置表
表基本信息
表名: provider_model_settings
主键: id (UUID)
索引: provider_model_setting_tenant_provider_model_idx (tenant_id, provider_name, model_type)
描述: 存储模型启用状态和负载均衡配置
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 设置记录唯一标识符 |
| tenant_id | UUID | 非空 | - | 所属租户ID |
| provider_name | VARCHAR(255) | 非空 | - | 提供商名称 |
| model_name | VARCHAR(255) | 非空 | - | 模型名称 |
| model_type | VARCHAR(40) | 非空 | - | 模型类型 |
| enabled | BOOLEAN | 非空 | true | 模型是否启用 |
| load_balancing_enabled | BOOLEAN | 非空 | false | 是否启用负载均衡 |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
load_balancing_model_configs - 负载均衡模型配置表
表基本信息
表名: load_balancing_model_configs
主键: id (UUID)
索引: load_balancing_model_config_tenant_provider_model_idx (tenant_id, provider_name, model_type)
描述: 存储负载均衡模型的详细配置
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 配置记录唯一标识符 |
| tenant_id | UUID | 非空 | - | 所属租户ID |
| provider_name | VARCHAR(255) | 非空 | - | 提供商名称 |
| model_name | VARCHAR(255) | 非空 | - | 模型名称 |
| model_type | VARCHAR(40) | 非空 | - | 模型类型 |
| name | VARCHAR(255) | 非空 | - | 配置名称 |
| encrypted_config | TEXT | 可空 | NULL | 加密的负载均衡配置 |
| enabled | BOOLEAN | 非空 | true | 配置是否启用 |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
tenant_default_models - 租户默认模型表
表基本信息
表名: tenant_default_models
主键: id (UUID)
索引: tenant_default_model_tenant_id_provider_type_idx (tenant_id, provider_name, model_type)
描述: 存储租户的默认模型配置
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 默认模型记录唯一标识符 |
| tenant_id | UUID | 非空 | - | 所属租户ID |
| provider_name | VARCHAR(255) | 非空 | - | 提供商名称 |
| model_name | VARCHAR(255) | 非空 | - | 默认模型名称 |
| model_type | VARCHAR(40) | 非空 | - | 模型类型 |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
tenant_preferred_model_providers - 租户首选模型提供商表
表基本信息
表名: tenant_preferred_model_providers
主键: id (UUID)
索引: tenant_preferred_model_provider_tenant_provider_idx (tenant_id, provider_name)
描述: 存储租户的首选模型提供商配置
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 首选提供商记录唯一标识符 |
| tenant_id | UUID | 非空 | - | 所属租户ID |
| provider_name | VARCHAR(255) | 非空 | - | 提供商名称 |
| preferred_provider_type | VARCHAR(40) | 非空 | - | 首选提供商类型,如: custom, system |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
表关联关系
一对多关系:
providers → provider_models (一个提供商有多个模型)
providers → provider_orders (一个提供商有多个订单)
providers → provider_model_settings (一个提供商有多个模型设置)
providers → load_balancing_model_configs (一个提供商有多个负载均衡配置)
多对一关系:
provider_models → providers (多个模型属于一个提供商)
provider_orders → providers (多个订单属于一个提供商)
provider_model_settings → providers (多个设置属于一个提供商)
关联字段:
所有表都通过 tenant_id 关联到租户
通过 provider_name 关联到具体的提供商
通过 model_type 区分不同类型的模型(LLM、Embedding等)
这些表共同构成了完整的AI模型提供商管理系统,支持多租户、多提供商、多模型的复杂配置。
tool_builtin_providers - 内置工具提供商表
表基本信息
表名: tool_builtin_providers
主键: id (UUID)
描述: 存储内置工具的提供商配置信息
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 提供商记录唯一标识符 |
| name | VARCHAR(256) | 非空 | ‘API KEY 1’ | 提供商名称 |
| tenant_id | UUID | 可空 | NULL | 所属租户ID |
| user_id | UUID | 非空 | - | 创建者用户ID |
| provider | VARCHAR(256) | 非空 | - | 提供商类型 |
| encrypted_credentials | TEXT | 可空 | NULL | 加密的凭证信息 |
| is_default | BOOLEAN | 非空 | false | 是否为默认提供商 |
| credential_type | VARCHAR(32) | 非空 | ‘api-key’ | 凭证类型 |
| 可选值: api-key, oauth2 | ||||
| expires_at | BIGINT | 非空 | -1 | 过期时间戳 |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
tool_api_providers - API工具提供商表
表基本信息
表名: tool_api_providers
主键: id (UUID)
描述: 存储API工具的提供商配置信息
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 提供商记录唯一标识符 |
| name | VARCHAR(255) | 非空 | ‘API KEY 1’ | 提供商名称 |
| icon | VARCHAR(255) | 非空 | - | 提供商图标 |
| schema | TEXT | 非空 | - | 原始Schema定义 |
| schema_type_str | VARCHAR(40) | 非空 | - | Schema类型 |
| user_id | UUID | 非空 | - | 创建者用户ID |
| tenant_id | UUID | 非空 | - | 所属租户ID |
| description | TEXT | 非空 | - | 提供商描述 |
| tools_str | TEXT | 非空 | - | 工具列表(JSON格式) |
| credentials_str | TEXT | 非空 | - | 凭证信息(JSON格式) |
| privacy_policy | VARCHAR(255) | 可空 | NULL | 隐私政策URL |
| custom_disclaimer | TEXT | 可空 | ‘’ | 自定义免责声明 |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
tool_workflow_providers - 工作流工具提供商表
表基本信息
表名: tool_workflow_providers
主键: id (UUID)
描述: 存储工作流工具的提供商配置信息
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 提供商记录唯一标识符 |
| name | VARCHAR(255) | 非空 | - | 提供商名称 |
| label | VARCHAR(255) | 非空 | ‘’ | 提供商标签 |
| icon | VARCHAR(255) | 非空 | - | 提供商图标 |
| app_id | UUID | 非空 | - | 关联的应用ID |
| version | VARCHAR(255) | 非空 | ‘’ | 版本号 |
| user_id | UUID | 非空 | - | 创建者用户ID |
| tenant_id | UUID | 非空 | - | 所属租户ID |
| description | TEXT | 非空 | - | 提供商描述 |
| parameter_configuration | TEXT | 非空 | ‘[]’ | 参数配置(JSON格式) |
| privacy_policy | VARCHAR(255) | 可空 | ‘’ | 隐私政策URL |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
tool_mcp_providers - MCP工具提供商表
表基本信息
表名: tool_mcp_providers
主键: id (UUID)
描述: 存储MCP(Model Context Protocol)工具的提供商配置信息
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 提供商记录唯一标识符 |
| name | VARCHAR(40) | 非空 | - | 提供商名称 |
| server_identifier | VARCHAR(64) | 非空 | - | 服务器标识符 |
| server_url | TEXT | 非空 | - | 加密的服务器URL |
| server_url_hash | VARCHAR(64) | 非空 | - | 服务器URL哈希值 |
| icon | VARCHAR(255) | 可空 | NULL | 提供商图标 |
| tenant_id | UUID | 非空 | - | 所属租户ID |
| user_id | UUID | 非空 | - | 创建者用户ID |
| encrypted_credentials | TEXT | 可空 | NULL | 加密的凭证信息 |
| authed | BOOLEAN | 非空 | false | 是否已认证 |
| tools | TEXT | 非空 | ‘[]’ | 工具列表(JSON格式) |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
tool_label_bindings - 工具标签绑定表
表基本信息
表名: tool_label_bindings
主键: id (UUID)
描述: 存储工具与标签的绑定关系
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 绑定记录唯一标识符 |
| tool_id | VARCHAR(64) | 非空 | - | 工具ID |
| tool_type | VARCHAR(40) | 非空 | - | 工具类型 |
| label_name | VARCHAR(40) | 非空 | - | 标签名称 |
tool_model_invokes - 工具模型调用表
表基本信息
表名: tool_model_invokes
主键: id (UUID)
描述: 存储工具调用的日志记录
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 调用记录唯一标识符 |
| user_id | UUID | 非空 | - | 调用者用户ID |
| tenant_id | UUID | 非空 | - | 所属租户ID |
| provider | VARCHAR(255) | 非空 | - | 提供商名称 |
| tool_type | VARCHAR(40) | 非空 | - | 工具类型 |
| tool_name | VARCHAR(128) | 非空 | - | 工具名称 |
| model_parameters | TEXT | 非空 | - | 模型参数(JSON格式) |
| prompt_messages | TEXT | 非空 | - | 提示消息(JSON格式) |
| model_response | TEXT | 非空 | - | 模型响应(JSON格式) |
| prompt_tokens | INTEGER | 非空 | 0 | 提示令牌数 |
| answer_tokens | INTEGER | 非空 | 0 | 回答令牌数 |
| answer_unit_price | NUMERIC(10,4) | 非空 | - | 回答单价 |
| answer_price_unit | NUMERIC(10,7) | 非空 | 0.001 | 价格单位 |
| provider_response_latency | FLOAT | 非空 | 0 | 提供商响应延迟 |
| total_price | NUMERIC(10,7) | 可空 | NULL | 总价格 |
| currency | VARCHAR(255) | 非空 | - | 货币类型 |
| created_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 非空 | CURRENT_TIMESTAMP | 更新时间 |
tool_files - 工具文件表
表基本信息
表名: tool_files
主键: id (UUID)
描述: 存储工作流中生成的文件元数据
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 文件记录唯一标识符 |
| user_id | UUID | 可空 | NULL | 创建者用户ID |
| tenant_id | UUID | 可空 | NULL | 所属租户ID |
| conversation_id | UUID | 可空 | NULL | 关联的对话ID |
| file_key | VARCHAR(255) | 非空 | - | 文件键值 |
| mimetype | VARCHAR(255) | 非空 | - | MIME类型 |
| original_url | VARCHAR(2048) | 可空 | NULL | 原始URL |
| name | VARCHAR(255) | 可空 | ‘’ | 文件名称 |
| size | INTEGER | 可空 | -1 | 文件大小 |
tool_oauth_system_clients - 工具OAuth系统客户端表
表基本信息
表名: tool_oauth_system_clients
主键: id (UUID)
描述: 存储系统级别的OAuth客户端配置
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 客户端记录唯一标识符 |
| plugin_id | VARCHAR(512) | 非空 | - | 插件ID |
| provider | VARCHAR(255) | 非空 | - | 提供商名称 |
| encrypted_oauth_params | TEXT | 非空 | - | 加密的OAuth参数 |
tool_oauth_tenant_clients - 工具OAuth租户客户端表
表基本信息
表名: tool_oauth_tenant_clients
主键: id (UUID)
描述: 存储租户级别的OAuth客户端配置
| 字段名 | 类型 | 约束 | 默认值 | 说明 |
|---|---|---|---|---|
| id | UUID | 主键 | uuid_generate_v4() | 客户端记录唯一标识符 |
| tenant_id | UUID | 非空 | - | 所属租户ID |
| plugin_id | VARCHAR(512) | 非空 | - | 插件ID |
| provider | VARCHAR(255) | 非空 | - | 提供商名称 |
| enabled | BOOLEAN | 非空 | true | 是否启用 |
| encrypted_oauth_params | TEXT | 非空 | - | 加密的OAuth参数 |
表关联关系
一对多关系:
accounts → tool_builtin_providers (一个用户创建多个内置工具提供商)
accounts → tool_api_providers (一个用户创建多个API工具提供商)
accounts → tool_workflow_providers (一个用户创建多个工作流工具提供商)
accounts → tool_mcp_providers (一个用户创建多个MCP工具提供商)
accounts → tool_model_invokes (一个用户有多个工具调用记录)
多对一关系:
tool_workflow_providers → apps (多个工作流工具提供商关联到一个应用)
关联字段:
所有表都通过 tenant_id 关联到租户
通过 user_id 关联到创建者用户
通过 provider 字段区分不同的工具提供商类型
通过 tool_type 字段区分不同的工具类型
这些表共同构成了完整的工具管理系统,支持内置工具、API工具、工作流工具和MCP工具等多种类型的工具提供商配置和管理。
upload_files(上传文件表)
| 字段名 | 含义 |
|---|---|
| id | 主键,UUID |
| tenant_id | 所属租户ID |
| storage_type | 存储类型(如本地、云存储等) |
| key | 存储key/路径 |
| name | 文件名 |
| size | 文件大小(字节) |
| extension | 文件扩展名 |
| mime_type | 文件MIME类型 |
| created_by_role | 创建者角色(如account等) |
| created_by | 创建者ID |
| created_at | 创建时间 |
| used | 是否被使用 |
| used_by | 被谁使用 |
| used_at | 被使用时间 |
| hash | 文件hash值 |
| source_url | 来源URL |
tags(标签表)
| 字段名 | 含义 |
|---|---|
| id | 主键,UUID |
| tenant_id | 所属租户ID |
| type | 标签类型(如knowledge, app) |
| name | 标签名称 |
| created_by | 创建者ID |
| created_at | 创建时间 |
tag_bindings(标签绑定表/中间表)
| 字段名 | 含义 |
|---|---|
| id | 主键,UUID |
| tenant_id | 所属租户ID |
| tag_id | 标签ID |
| target_id | 绑定对象ID |
| created_by | 创建者ID |
| created_at | 创建时间 |
dify_setups(系统设置表)
| 字段名 | 含义 |
|---|---|
| version | 版本号(主键) |
| setup_at | 安装/初始化时间 |
api_requests(API请求日志表)
| 字段名 | 含义 |
|---|---|
| id | 主键,UUID |
| tenant_id | 所属租户ID |
| api_token_id | API Token ID |
| path | 请求路径 |
| request | 请求内容 |
| response | 响应内容 |
| ip | 请求IP |
| created_at | 创建时间 |
celery_taskmeta(Celery任务表)
| 字段名 | 含义 |
|---|---|
| id | 主键,自增 |
| task_id | 任务ID(唯一) |
| status | 任务状态 |
| result | 任务结果(序列化) |
| date_done | 完成时间 |
| traceback | 异常堆栈 |
| name | 任务名 |
| args | 参数(序列化) |
| kwargs | 关键字参数(序列化) |
| worker | 执行worker |
| retries | 重试次数 |
| queue | 队列名 |
celery_tasksetmeta(Celery任务集表)
| 字段名 | 含义 |
|---|---|
| id | 主键,自增 |
| taskset_id | 任务集ID(唯一) |
| result | 任务集结果(序列化) |
| date_done | 完成时间 |
api_based_extensions(API扩展表)
| 字段名 | 含义 |
|---|---|
| id | 主键,UUID |
| tenant_id | 所属租户ID |
| name | 扩展名称 |
| api_endpoint | API地址 |
| api_key | API密钥 |
| created_at | 创建时间 |
api_based_extension_points(API扩展点表)
该表在模型中未直接定义为表,而是以枚举形式存在,常见的扩展点有:
APP_EXTERNAL_DATA_TOOL_QUERY
PING
APP_MODERATION_INPUT
APP_MODERATION_OUTPUT
还有些枚举类当做表了。整理了一天多,还是耐心发表一下,说明:这个仅是半成品,仅做参考使用。
308

被折叠的 条评论
为什么被折叠?



