肥仔教程网

SEO 优化与 Web 开发技术学习分享平台

Coze开源产品coze-studio 数据库建表语句

Coze开源了coze-studio



Coze开源了,Dify、Fastgpt等平台要哭了,

没错,(′°︿°)

本地想部署的,直接去这里

coze-studio github地址

身为一名程序员,可以做什么,先见一些骨头啃啃吧

没错,这是 coze-studio的数据库设计

什么工作流、什么插件、什么知识库,如何设计的

看到这个数据库,可以管中窥豹了

DROP TABLE IF EXISTS agent_to_database;
CREATE TABLE agent_to_database(
    `id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'ID' ,
    `agent_id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'Agent;ID' ,
    `database_id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'ID;of database_info' ,
    `is_draft` BIT(1) NOT NULL   COMMENT 'Is;draft' ,
    `prompt_disable` BIT(1) NOT NULL  DEFAULT 0 COMMENT 'Support;prompt calls: 1 not supported, 0 supported' ,
    PRIMARY KEY (id)
)  COMMENT = 'agent_to_database;info';


CREATE UNIQUE INDEX uniq_agent_db_draft ON agent_to_database(agent_id,database_id,is_draft);

DROP TABLE IF EXISTS agent_tool_draft;
CREATE TABLE agent_tool_draft(
    `id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Primary;Key ID' ,
    `agent_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Agent;ID' ,
    `plugin_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Plugin;ID' ,
    `tool_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Tool;ID' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Create;Time in Milliseconds' ,
    `sub_url` VARCHAR(512) NOT NULL   COMMENT 'Sub;URL Path' ,
    `method` VARCHAR(64) NOT NULL   COMMENT 'HTTP;Request Method' ,
    `tool_name` VARCHAR(255) NOT NULL   COMMENT 'Tool;Name' ,
    `tool_version` VARCHAR(255) NOT NULL   COMMENT 'Tool;Version, e.g. v1.0.0' ,
    `operation` JSON    COMMENT 'Tool;Openapi Operation Schema' ,
    PRIMARY KEY (id)
)  COMMENT = 'Draft;Agent Tool';


CREATE UNIQUE INDEX uniq_idx_agent_tool_id ON agent_tool_draft(agent_id,tool_id);
CREATE UNIQUE INDEX uniq_idx_agent_tool_name ON agent_tool_draft(agent_id,tool_name);
CREATE INDEX idx_agent_plugin_tool ON agent_tool_draft(agent_id,plugin_id,tool_id);
CREATE INDEX idx_agent_tool_bind ON agent_tool_draft(agent_id,created_at);

DROP TABLE IF EXISTS agent_tool_version;
CREATE TABLE agent_tool_version(
    `id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Primary;Key ID' ,
    `agent_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Agent;ID' ,
    `plugin_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Plugin;ID' ,
    `tool_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Tool;ID' ,
    `agent_version` VARCHAR(255) NOT NULL   COMMENT 'Agent;Tool Version' ,
    `tool_name` VARCHAR(255) NOT NULL   COMMENT 'Tool;Name' ,
    `tool_version` VARCHAR(255) NOT NULL   COMMENT 'Tool;Version, e.g. v1.0.0' ,
    `sub_url` VARCHAR(512) NOT NULL   COMMENT 'Sub;URL Path' ,
    `method` VARCHAR(64) NOT NULL   COMMENT 'HTTP;Request Method' ,
    `operation` JSON    COMMENT 'Tool;Openapi Operation Schema' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Create;Time in Milliseconds' ,
    PRIMARY KEY (id)
)  COMMENT = 'Agent;Tool Version';


CREATE UNIQUE INDEX uniq_idx_agent_tool_id_agent_version ON agent_tool_version(agent_id,tool_id,agent_version);
CREATE UNIQUE INDEX uniq_idx_agent_tool_name_agent_version ON agent_tool_version(agent_id,tool_name,agent_version);
CREATE INDEX idx_agent_tool_id_created_at ON agent_tool_version(agent_id,tool_id,created_at);
CREATE INDEX idx_agent_tool_name_created_at ON agent_tool_version(agent_id,tool_name,created_at);

DROP TABLE IF EXISTS api_key;
CREATE TABLE api_key(
    `id` BIGINT UNSIGNED(21) NOT NULL AUTO_INCREMENT  COMMENT 'Primary;Key ID' ,
    `api_key` VARCHAR(255) NOT NULL   COMMENT 'API;Key hash' ,
    `name` VARCHAR(255) NOT NULL   COMMENT 'API;Key Name' ,
    `status` TINYINT(4) NOT NULL  DEFAULT 0 COMMENT '0;normal, 1 deleted' ,
    `user_id` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT 'API;Key Owner' ,
    `expired_at` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT 'API;Key Expired Time' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Create;Time in Milliseconds' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Update;Time in Milliseconds' ,
    `last_used_at` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT 'Used;Time in Milliseconds' ,
    PRIMARY KEY (id)
)  COMMENT = 'api;key table';

DROP TABLE IF EXISTS app_connector_release_ref;
CREATE TABLE app_connector_release_ref(
    `id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Primary;Key' ,
    `record_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Publish;Record ID' ,
    `connector_id` BIGINT UNSIGNED(21)    COMMENT 'Publish;Connector ID' ,
    `publish_config` JSON    COMMENT 'Publish;Configuration' ,
    `publish_status` TINYINT(4) NOT NULL  DEFAULT 0 COMMENT 'Publish;Status' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Create;Time in Milliseconds' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Update;Time in Milliseconds' ,
    PRIMARY KEY (id)
)  COMMENT = 'Connector;Release Record Reference';


CREATE UNIQUE INDEX uniq_record_connector ON app_connector_release_ref(record_id,connector_id);

DROP TABLE IF EXISTS app_draft;
CREATE TABLE app_draft(
    `id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'APP;ID' ,
    `space_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Space;ID' ,
    `owner_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Owner;ID' ,
    `icon_uri` VARCHAR(512) NOT NULL   COMMENT 'Icon;URI' ,
    `name` VARCHAR(255) NOT NULL   COMMENT 'Application;Name' ,
    `description` TEXT    COMMENT 'Application;Description' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Create;Time in Milliseconds' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Update;Time in Milliseconds' ,
    `deleted_at` DATETIME    COMMENT 'Delete;Time' ,
    PRIMARY KEY (id)
)  COMMENT = 'Draft;Application';

DROP TABLE IF EXISTS app_release_record;
CREATE TABLE app_release_record(
    `id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Publish;Record ID' ,
    `app_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Application;ID' ,
    `space_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Space;ID' ,
    `owner_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Owner;ID' ,
    `icon_uri` VARCHAR(512) NOT NULL   COMMENT 'Icon;URI' ,
    `name` VARCHAR(255) NOT NULL   COMMENT 'Application;Name' ,
    `description` TEXT    COMMENT 'Application;Description' ,
    `connector_ids` JSON    COMMENT 'Publish;Connector IDs' ,
    `extra_info` JSON    COMMENT 'Publish;Extra Info' ,
    `version` VARCHAR(255) NOT NULL   COMMENT 'Release;Version' ,
    `version_desc` TEXT    COMMENT 'Version;Description' ,
    `publish_status` TINYINT(4) NOT NULL  DEFAULT 0 COMMENT 'Publish;Status' ,
    `publish_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Publish;Time in Milliseconds' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Create;Time in Milliseconds' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Update;Time in Milliseconds' ,
    PRIMARY KEY (id)
)  COMMENT = 'Application;Release Record';


CREATE UNIQUE INDEX uniq_idx_app_version_connector ON app_release_record(app_id,version);
CREATE INDEX idx_app_publish_at ON app_release_record(app_id,publish_at);

DROP TABLE IF EXISTS connector_workflow_version;
CREATE TABLE connector_workflow_version(
    `id` BIGINT UNSIGNED(21) NOT NULL AUTO_INCREMENT  COMMENT 'id' ,
    `app_id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'app;id' ,
    `connector_id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'connector;id' ,
    `workflow_id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'workflow;id' ,
    `version` VARCHAR(256) NOT NULL   COMMENT 'version' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'create;time in millisecond' ,
    PRIMARY KEY (id)
)  COMMENT = '';


CREATE UNIQUE INDEX idx_connector_id_workflow_id_version ON connector_workflow_version(connector_id,workflow_id,version);
CREATE INDEX idx_connector_id_workflow_id_create_at ON connector_workflow_version(connector_id,workflow_id,created_at);

DROP TABLE IF EXISTS conversation;
CREATE TABLE conversation(
    `id` BIGINT UNSIGNED(21) NOT NULL AUTO_INCREMENT  COMMENT '主键ID' ,
    `connector_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '业务线;ID' ,
    `agent_id` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT 'agent_id' ,
    `scene` TINYINT(4) NOT NULL  DEFAULT 0 COMMENT '会话场景' ,
    `section_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '最新section_id' ,
    `creator_id` BIGINT UNSIGNED(21)   DEFAULT 0 COMMENT '创建者id' ,
    `ext` TEXT    COMMENT '扩展字段' ,
    `status` TINYINT(4) NOT NULL  DEFAULT 1 COMMENT 'status:;1-normal 2-deleted' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '创建时间' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '更新时间' ,
    PRIMARY KEY (id)
)  COMMENT = '会话信息表';


CREATE INDEX idx_connector_bot_status ON conversation(connector_id,agent_id,creator_id);

DROP TABLE IF EXISTS data_copy_task;
CREATE TABLE data_copy_task(
    `master_task_id` VARCHAR(128) NOT NULL   COMMENT '复制任务ID' ,
    `origin_data_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '源id' ,
    `target_data_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '目标id' ,
    `origin_space_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '源团队空间' ,
    `target_space_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '目标团队空间' ,
    `origin_user_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '源用户ID' ,
    `target_user_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '目标用户ID' ,
    `origin_app_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '源AppID' ,
    `target_app_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '目标AppID' ,
    `data_type` TINYINT UNSIGNED(4) NOT NULL  DEFAULT 0 COMMENT '数据类型;1:knowledge, 2:database' ,
    `ext_info` VARCHAR(255) NOT NULL   COMMENT '存储额外信息' ,
    `start_time` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT '任务开始时间' ,
    `finish_time` BIGINT(20)    COMMENT '任务结束时间' ,
    `status` TINYINT(4) NOT NULL  DEFAULT 1 COMMENT '1:创建;2:执行中 3:成功 4:失败' ,
    `error_msg` VARCHAR(128)    COMMENT '错误信息' ,
    `id` BIGINT UNSIGNED(21) NOT NULL AUTO_INCREMENT  COMMENT 'ID' ,
    PRIMARY KEY (id)
)  COMMENT = 'data方向复制任务记录表';


CREATE UNIQUE INDEX uniq_master_task_id_origin_data_id_data_type ON data_copy_task(master_task_id,origin_data_id,data_type);

DROP TABLE IF EXISTS draft_database_info;
CREATE TABLE draft_database_info(
    `id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'ID' ,
    `app_id` BIGINT UNSIGNED(21)    COMMENT 'App;ID' ,
    `space_id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'Space;ID' ,
    `related_online_id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'The;primary key ID of online_database_info table' ,
    `is_visible` TINYINT(4) NOT NULL  DEFAULT 1 COMMENT 'Visibility:;0 invisible, 1 visible' ,
    `prompt_disabled` TINYINT(4) NOT NULL  DEFAULT 0 COMMENT 'Support;prompt calls: 1 not supported, 0 supported' ,
    `table_name` VARCHAR(255) NOT NULL   COMMENT 'Table;name' ,
    `table_desc` VARCHAR(256)    COMMENT 'Table;description' ,
    `table_field` TEXT    COMMENT 'Table;field info' ,
    `creator_id` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT 'Creator;ID' ,
    `icon_uri` VARCHAR(255) NOT NULL   COMMENT 'Icon;Uri' ,
    `physical_table_name` VARCHAR(255)    COMMENT 'The;name of the real physical table' ,
    `rw_mode` BIGINT(20) NOT NULL  DEFAULT 1 COMMENT 'Read;and write permission modes: 1. Limited read and write mode 2. Read-only mode 3. Full read and write mode' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Create;Time in Milliseconds' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Update;Time in Milliseconds' ,
    `deleted_at` DATETIME    COMMENT 'Delete;Time' ,
    PRIMARY KEY (id)
)  COMMENT = 'draft;database info';


CREATE INDEX idx_space_app_creator_deleted ON draft_database_info(space_id,app_id,creator_id,deleted_at);

DROP TABLE IF EXISTS knowledge;
CREATE TABLE knowledge(
    `id` BIGINT UNSIGNED(21) NOT NULL   COMMENT '主键ID' ,
    `name` VARCHAR(150) NOT NULL   COMMENT '名称' ,
    `app_id` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT '项目ID;标识该资源是否是项目独有' ,
    `creator_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'ID' ,
    `space_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '空间ID' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Create;Time in Milliseconds' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Update;Time in Milliseconds' ,
    `deleted_at` DATETIME    COMMENT 'Delete;Time in Milliseconds' ,
    `status` TINYINT(4) NOT NULL  DEFAULT 1 COMMENT '0;初始化, 1 生效 2 失效' ,
    `description` TEXT    COMMENT '描述' ,
    `icon_uri` VARCHAR(150)    COMMENT '头像uri' ,
    `format_type` TINYINT(4) NOT NULL  DEFAULT 0 COMMENT '0:文本;1:表格 2:图片' ,
    PRIMARY KEY (id)
)  COMMENT = '知识库表';


CREATE INDEX idx_app_id ON knowledge(app_id);
CREATE INDEX idx_creator_id ON knowledge(creator_id);
CREATE INDEX idx_space_id_deleted_at_updated_at ON knowledge(space_id,deleted_at,updated_at);

DROP TABLE IF EXISTS knowledge_document;
CREATE TABLE knowledge_document(
    `id` BIGINT UNSIGNED(21) NOT NULL   COMMENT '主键ID' ,
    `knowledge_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '所属knowledge的ID' ,
    `name` VARCHAR(150) NOT NULL   COMMENT '文档名称' ,
    `file_extension` VARCHAR(20) NOT NULL  DEFAULT '0' COMMENT '文档类型,;txt/pdf/csv/...' ,
    `document_type` INT(11) NOT NULL  DEFAULT 0 COMMENT '文档类型:;0:文本 1:表格 2:图片' ,
    `uri` TEXT    COMMENT '资源uri' ,
    `size` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '文档大小' ,
    `slice_count` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '分片数量' ,
    `char_count` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '字符数' ,
    `creator_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '创建者ID' ,
    `space_id` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT '空间id' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Create;Time in Milliseconds' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Update;Time in Milliseconds' ,
    `deleted_at` DATETIME    COMMENT 'Delete;Time in Milliseconds' ,
    `source_type` INT(11) NOT NULL  DEFAULT 0 COMMENT '0:本地文件上传,;2:自定义文本' ,
    `status` INT(11) NOT NULL  DEFAULT 0 COMMENT '状态' ,
    `fail_reason` TEXT    COMMENT '失败原因' ,
    `parse_rule` JSON    COMMENT '解析+切片规则' ,
    `table_info` JSON    COMMENT '表格信息' ,
    PRIMARY KEY (id)
)  COMMENT = '知识库文档表';


CREATE INDEX idx_creator_id ON knowledge_document(creator_id);
CREATE INDEX idx_knowledge_id_deleted_at_updated_at ON knowledge_document(knowledge_id,deleted_at,updated_at);

DROP TABLE IF EXISTS knowledge_document_review;
CREATE TABLE knowledge_document_review(
    `id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '主键ID' ,
    `knowledge_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'knowledge;id' ,
    `space_id` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT '空间id' ,
    `name` VARCHAR(150) NOT NULL   COMMENT '文档名称' ,
    `type` VARCHAR(10) NOT NULL  DEFAULT '0' COMMENT '文档类型' ,
    `uri` TEXT    COMMENT '资源标识' ,
    `format_type` TINYINT UNSIGNED(4) NOT NULL  DEFAULT 0 COMMENT '0;文本, 1 表格, 2 图片' ,
    `status` TINYINT UNSIGNED(4) NOT NULL  DEFAULT 0 COMMENT '0;处理中,1 已完成,2 失败,3 失效' ,
    `chunk_resp_uri` TEXT    COMMENT '预切片tos资源标识' ,
    `deleted_at` DATETIME    COMMENT 'Delete;Time in Milliseconds' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Create;Time in Milliseconds' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Update;Time in Milliseconds' ,
    `creator_id` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT '创建者ID' ,
    PRIMARY KEY (id)
)  COMMENT = '文档审阅表';


CREATE INDEX idx_dataset_id ON knowledge_document_review(knowledge_id,status,updated_at);
CREATE INDEX idx_uri ON knowledge_document_review(uri);

DROP TABLE IF EXISTS knowledge_document_slice;
CREATE TABLE knowledge_document_slice(
    `id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '主键ID' ,
    `knowledge_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'knowledge;id' ,
    `document_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'document;id' ,
    `content` TEXT    COMMENT '切片内容' ,
    `sequence` DECIMAL(20,5) NOT NULL   COMMENT '切片顺序号,;从1开始' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Create;Time in Milliseconds' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Update;Time in Milliseconds' ,
    `deleted_at` DATETIME    COMMENT 'Delete;Time in Milliseconds' ,
    `creator_id` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT '创建者ID' ,
    `space_id` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT '空间ID' ,
    `status` INT(11) NOT NULL  DEFAULT 0 COMMENT '状态' ,
    `fail_reason` TEXT    COMMENT '失败原因' ,
    `hit` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '命中次数' ,
    PRIMARY KEY (id)
)  COMMENT = '知识库文件切片表';


CREATE INDEX idx_document_id_deleted_at_sequence ON knowledge_document_slice(document_id,deleted_at,sequence);
CREATE INDEX idx_knowledge_id_document_id ON knowledge_document_slice(knowledge_id,document_id);
CREATE INDEX idx_sequence ON knowledge_document_slice(sequence);

DROP TABLE IF EXISTS message;
CREATE TABLE message(
    `id` BIGINT UNSIGNED(21) NOT NULL AUTO_INCREMENT  COMMENT '主键ID' ,
    `run_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '对应的run_id' ,
    `conversation_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'conversation;id' ,
    `user_id` VARCHAR(60) NOT NULL   COMMENT 'user;id' ,
    `agent_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'agent_id' ,
    `role` VARCHAR(100) NOT NULL   COMMENT '角色:;user、assistant、system' ,
    `content_type` VARCHAR(100) NOT NULL   COMMENT '内容类型;1 text' ,
    `content` MEDIUMTEXT    COMMENT '内容' ,
    `message_type` VARCHAR(100) NOT NULL   COMMENT '消息类型:' ,
    `display_content` TEXT    COMMENT '展示内容' ,
    `ext` TEXT    COMMENT 'message;扩展字段' ,
    `section_id` BIGINT UNSIGNED(21)    COMMENT '段落id' ,
    `broken_position` INT(11)   DEFAULT -1 COMMENT '打断位置' ,
    `status` TINYINT UNSIGNED(4) NOT NULL  DEFAULT 0 COMMENT '消息状态;1 Available 2 Deleted 3 Replaced 4 Broken 5 Failed 6 Streaming 7 Pending' ,
    `model_content` MEDIUMTEXT    COMMENT '模型输入内容' ,
    `meta_info` TEXT    COMMENT '引用、高亮等文本标记信息' ,
    `reasoning_content` TEXT    COMMENT '思考内容' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '创建时间' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '更新时间' ,
    PRIMARY KEY (id)
)  COMMENT = '消息表';


CREATE INDEX idx_conversation_id ON message(conversation_id);
CREATE INDEX idx_run_id ON message(run_id);

DROP TABLE IF EXISTS model_entity;
CREATE TABLE model_entity(
    `id` BIGINT UNSIGNED(21) NOT NULL   COMMENT '主键ID' ,
    `meta_id` BIGINT UNSIGNED(21) NOT NULL   COMMENT '模型元信息;id' ,
    `name` VARCHAR(128) NOT NULL   COMMENT '名称' ,
    `description` TEXT    COMMENT '描述' ,
    `default_params` JSON    COMMENT '默认参数' ,
    `scenario` BIGINT UNSIGNED(21) NOT NULL   COMMENT '模型应用场景' ,
    `status` INT(11) NOT NULL  DEFAULT 1 COMMENT '模型状态' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Create;Time in Milliseconds' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Update;Time in Milliseconds' ,
    `deleted_at` BIGINT UNSIGNED(21)    COMMENT 'Delete;Time in Milliseconds' ,
    PRIMARY KEY (id)
)  COMMENT = '模型信息';


CREATE INDEX idx_scenario ON model_entity(scenario);
CREATE INDEX idx_status ON model_entity(status);

DROP TABLE IF EXISTS model_meta;
CREATE TABLE model_meta(
    `id` BIGINT UNSIGNED(21) NOT NULL   COMMENT '主键ID' ,
    `model_name` VARCHAR(128) NOT NULL   COMMENT '模型名称' ,
    `protocol` VARCHAR(128) NOT NULL   COMMENT '模型协议' ,
    `icon_uri` VARCHAR(255) NOT NULL   COMMENT 'Icon;URI' ,
    `capability` JSON    COMMENT '模型能力' ,
    `conn_config` JSON    COMMENT '模型连接配置' ,
    `status` INT(11) NOT NULL  DEFAULT 1 COMMENT '模型状态' ,
    `description` VARCHAR(2048) NOT NULL   COMMENT '模型描述' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Create;Time in Milliseconds' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Update;Time in Milliseconds' ,
    `deleted_at` BIGINT UNSIGNED(21)    COMMENT 'Delete;Time in Milliseconds' ,
    `icon_url` VARCHAR(255) NOT NULL   COMMENT 'Icon;URL' ,
    PRIMARY KEY (id)
)  COMMENT = '模型元信息';


CREATE INDEX idx_status ON model_meta(status);

DROP TABLE IF EXISTS node_execution;
CREATE TABLE node_execution(
    `id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'node;execution id' ,
    `execute_id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'the;workflow execute id this node execution belongs to' ,
    `node_id` VARCHAR(128) NOT NULL   COMMENT 'node;key' ,
    `node_name` VARCHAR(128) NOT NULL   COMMENT 'name;of the node' ,
    `node_type` VARCHAR(128) NOT NULL   COMMENT 'the;type of the node, in string' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'create;time in millisecond' ,
    `status` TINYINT UNSIGNED(4) NOT NULL   COMMENT '1=waiting;2=running 3=success 4=fail' ,
    `duration` BIGINT UNSIGNED(21)    COMMENT 'execution;duration in millisecond' ,
    `input` MEDIUMTEXT    COMMENT 'actual;input of the node' ,
    `output` MEDIUMTEXT    COMMENT 'actual;output of the node' ,
    `raw_output` MEDIUMTEXT    COMMENT 'the;original output of the node' ,
    `error_info` MEDIUMTEXT    COMMENT 'error;info' ,
    `error_level` VARCHAR(32)    COMMENT 'level;of the error' ,
    `input_tokens` BIGINT UNSIGNED(21)    COMMENT 'number;of input tokens' ,
    `output_tokens` BIGINT UNSIGNED(21)    COMMENT 'number;of output tokens' ,
    `updated_at` BIGINT UNSIGNED(21)    COMMENT 'update;time in millisecond' ,
    `composite_node_index` BIGINT UNSIGNED(21)    COMMENT 'loop;or batch's execution index' ,
    `composite_node_items` MEDIUMTEXT    COMMENT 'the;items extracted from parent composite node for this index' ,
    `parent_node_id` VARCHAR(128)    COMMENT 'when;as inner node for loop or batch, this is the parent node's key' ,
    `sub_execute_id` BIGINT UNSIGNED(21)    COMMENT 'if;this node is sub_workflow, the exe id of the sub workflow' ,
    `extra` MEDIUMTEXT    COMMENT 'extra;info' ,
    PRIMARY KEY (id)
)  COMMENT = 'node;节点运行记录,用于记录每次workflow执行时,每个节点的状态信息';


CREATE INDEX idx_execute_id_node_id ON node_execution(execute_id,node_id);
CREATE INDEX idx_execute_id_parent_node_id ON node_execution(execute_id,parent_node_id);

DROP TABLE IF EXISTS online_database_info;
CREATE TABLE online_database_info(
    `id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'ID' ,
    `app_id` BIGINT UNSIGNED(21)    COMMENT 'App;ID' ,
    `space_id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'Space;ID' ,
    `related_draft_id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'The;primary key ID of draft_database_info table' ,
    `is_visible` TINYINT(4) NOT NULL  DEFAULT 1 COMMENT 'Visibility:;0 invisible, 1 visible' ,
    `prompt_disabled` TINYINT(4) NOT NULL  DEFAULT 0 COMMENT 'Support;prompt calls: 1 not supported, 0 supported' ,
    `table_name` VARCHAR(255) NOT NULL   COMMENT 'Table;name' ,
    `table_desc` VARCHAR(256)    COMMENT 'Table;description' ,
    `table_field` TEXT    COMMENT 'Table;field info' ,
    `creator_id` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT 'Creator;ID' ,
    `icon_uri` VARCHAR(255) NOT NULL   COMMENT 'Icon;Uri' ,
    `physical_table_name` VARCHAR(255)    COMMENT 'The;name of the real physical table' ,
    `rw_mode` BIGINT(20) NOT NULL  DEFAULT 1 COMMENT 'Read;and write permission modes: 1. Limited read and write mode 2. Read-only mode 3. Full read and write mode' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Create;Time in Milliseconds' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Update;Time in Milliseconds' ,
    `deleted_at` DATETIME    COMMENT 'Delete;Time' ,
    PRIMARY KEY (id)
)  COMMENT = 'online;database info';


CREATE INDEX idx_space_app_creator_deleted ON online_database_info(space_id,app_id,creator_id,deleted_at);

DROP TABLE IF EXISTS plugin;
CREATE TABLE plugin(
    `id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Plugin;ID' ,
    `space_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Space;ID' ,
    `developer_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Developer;ID' ,
    `app_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Application;ID' ,
    `icon_uri` VARCHAR(512) NOT NULL   COMMENT 'Icon;URI' ,
    `server_url` VARCHAR(512) NOT NULL   COMMENT 'Server;URL' ,
    `plugin_type` TINYINT(4) NOT NULL  DEFAULT 0 COMMENT 'Plugin;Type, 1:http, 6:local' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Create;Time in Milliseconds' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Update;Time in Milliseconds' ,
    `version` VARCHAR(255) NOT NULL   COMMENT 'Plugin;Version, e.g. v1.0.0' ,
    `version_desc` TEXT    COMMENT 'Plugin;Version Description' ,
    `manifest` JSON    COMMENT 'Plugin;Manifest' ,
    `openapi_doc` JSON    COMMENT 'OpenAPI;Document, only stores the root' ,
    PRIMARY KEY (id)
)  COMMENT = 'Latest;Plugin';


CREATE INDEX idx_space_created_at ON plugin(space_id,created_at);
CREATE INDEX idx_space_updated_at ON plugin(space_id,updated_at);

DROP TABLE IF EXISTS plugin_draft;
CREATE TABLE plugin_draft(
    `id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Plugin;ID' ,
    `space_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Space;ID' ,
    `developer_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Developer;ID' ,
    `app_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Application;ID' ,
    `icon_uri` VARCHAR(512) NOT NULL   COMMENT 'Icon;URI' ,
    `server_url` VARCHAR(512) NOT NULL   COMMENT 'Server;URL' ,
    `plugin_type` TINYINT(4) NOT NULL  DEFAULT 0 COMMENT 'Plugin;Type, 1:http, 6:local' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Create;Time in Milliseconds' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Update;Time in Milliseconds' ,
    `deleted_at` DATETIME    COMMENT 'Delete;Time' ,
    `manifest` JSON    COMMENT 'Plugin;Manifest' ,
    `openapi_doc` JSON    COMMENT 'OpenAPI;Document, only stores the root' ,
    PRIMARY KEY (id)
)  COMMENT = 'Draft;Plugin';


CREATE INDEX idx_app_id ON plugin_draft(app_id,id);
CREATE INDEX idx_space_app_created_at ON plugin_draft(space_id,app_id,created_at);
CREATE INDEX idx_space_app_updated_at ON plugin_draft(space_id,app_id,updated_at);

DROP TABLE IF EXISTS plugin_oauth_auth;
CREATE TABLE plugin_oauth_auth(
    `id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Primary;Key' ,
    `user_id` VARCHAR(255) NOT NULL   COMMENT 'User;ID' ,
    `plugin_id` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT 'Plugin;ID' ,
    `is_draft` BIT(1) NOT NULL  DEFAULT 0 COMMENT 'Is;Draft Plugin' ,
    `oauth_config` JSON    COMMENT 'Authorization;Code OAuth Config' ,
    `access_token` TEXT NOT NULL   COMMENT 'Access;Token' ,
    `refresh_token` TEXT NOT NULL   COMMENT 'Refresh;Token' ,
    `token_expired_at` BIGINT(20)    COMMENT 'Token;Expired in Milliseconds' ,
    `next_token_refresh_at` BIGINT(20)    COMMENT 'Next;Token Refresh Time in Milliseconds' ,
    `last_active_at` BIGINT(20)    COMMENT 'Last;active time in Milliseconds' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Create;Time in Milliseconds' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Update;Time in Milliseconds' ,
    PRIMARY KEY (id)
)  COMMENT = 'Plugin;OAuth Authorization Code Info';


CREATE UNIQUE INDEX uniq_idx_user_plugin_is_draft ON plugin_oauth_auth(user_id,plugin_id,is_draft);
CREATE INDEX idx_last_active_at ON plugin_oauth_auth(last_active_at);
CREATE INDEX idx_last_token_expired_at ON plugin_oauth_auth(token_expired_at);
CREATE INDEX idx_next_token_refresh_at ON plugin_oauth_auth(next_token_refresh_at);

DROP TABLE IF EXISTS plugin_version;
CREATE TABLE plugin_version(
    `id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Primary;Key ID' ,
    `space_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Space;ID' ,
    `developer_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Developer;ID' ,
    `plugin_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Plugin;ID' ,
    `app_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Application;ID' ,
    `icon_uri` VARCHAR(512) NOT NULL   COMMENT 'Icon;URI' ,
    `server_url` VARCHAR(512) NOT NULL   COMMENT 'Server;URL' ,
    `plugin_type` TINYINT(4) NOT NULL  DEFAULT 0 COMMENT 'Plugin;Type, 1:http, 6:local' ,
    `version` VARCHAR(255) NOT NULL   COMMENT 'Plugin;Version, e.g. v1.0.0' ,
    `version_desc` TEXT    COMMENT 'Plugin;Version Description' ,
    `manifest` JSON    COMMENT 'Plugin;Manifest' ,
    `openapi_doc` JSON    COMMENT 'OpenAPI;Document, only stores the root' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Create;Time in Milliseconds' ,
    `deleted_at` DATETIME    COMMENT 'Delete;Time' ,
    PRIMARY KEY (id)
)  COMMENT = 'Plugin;Version';


CREATE UNIQUE INDEX uniq_idx_plugin_version ON plugin_version(plugin_id,version);

DROP TABLE IF EXISTS prompt_resource;
CREATE TABLE prompt_resource(
    `id` BIGINT UNSIGNED(21) NOT NULL AUTO_INCREMENT  COMMENT '主键ID' ,
    `space_id` BIGINT(20) NOT NULL   COMMENT '空间ID' ,
    `name` VARCHAR(255) NOT NULL   COMMENT '名称' ,
    `description` VARCHAR(255) NOT NULL   COMMENT '描述' ,
    `prompt_text` MEDIUMTEXT    COMMENT 'prompt正文' ,
    `status` INT(11) NOT NULL   COMMENT '状态;0无效,1有效' ,
    `creator_id` BIGINT(20) NOT NULL   COMMENT '创建者ID' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '创建时间' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '更新时间' ,
    PRIMARY KEY (id)
)  COMMENT = 'prompt_resource';


CREATE INDEX idx_creator_id ON prompt_resource(creator_id);

DROP TABLE IF EXISTS run_record;
CREATE TABLE run_record(
    `id` BIGINT UNSIGNED(21) NOT NULL   COMMENT '主键ID' ,
    `conversation_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '会话;ID' ,
    `section_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'section;ID' ,
    `agent_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'agent_id' ,
    `user_id` VARCHAR(255) NOT NULL   COMMENT 'user;id' ,
    `source` TINYINT UNSIGNED(4) NOT NULL  DEFAULT 0 COMMENT '执行来源;0 API,' ,
    `status` VARCHAR(255) NOT NULL   COMMENT '状态,0;Unknown, 1-Created,2-InProgress,3-Completed,4-Failed,5-Expired,6-Cancelled,7-RequiresAction' ,
    `creator_id` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT '创建者标识' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '创建时间' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '更新时间' ,
    `failed_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '失败时间' ,
    `last_error` TEXT    COMMENT 'error;message' ,
    `completed_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '结束时间' ,
    `chat_request` TEXT    COMMENT '保存原始请求的部分字段' ,
    `ext` TEXT    COMMENT '扩展字段' ,
    `usage` JSON    COMMENT 'usage' ,
    PRIMARY KEY (id)
)  COMMENT = '执行记录表';


CREATE INDEX idx_c_s ON run_record(conversation_id,section_id);

DROP TABLE IF EXISTS shortcut_command;
CREATE TABLE shortcut_command(
    `id` BIGINT UNSIGNED(21) NOT NULL AUTO_INCREMENT  COMMENT '主键ID' ,
    `object_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '实体ID;该实体可用这个指令' ,
    `command_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '命令ID' ,
    `command_name` VARCHAR(255) NOT NULL   COMMENT '命令名称' ,
    `shortcut_command` VARCHAR(255) NOT NULL   COMMENT '快捷指令' ,
    `description` VARCHAR(2000) NOT NULL   COMMENT '命令描述' ,
    `send_type` TINYINT UNSIGNED(4) NOT NULL  DEFAULT 0 COMMENT '发送类型;0:query 1:panel' ,
    `tool_type` TINYINT UNSIGNED(4) NOT NULL  DEFAULT 0 COMMENT '使用工具的type;1:workFlow 2:插件' ,
    `work_flow_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '使用workFlow的id' ,
    `plugin_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '使用插件的id' ,
    `plugin_tool_name` VARCHAR(255) NOT NULL   COMMENT '使用插件的api_name' ,
    `template_query` TEXT    COMMENT 'query模板' ,
    `components` JSON    COMMENT 'panel参数' ,
    `card_schema` TEXT    COMMENT '卡片schema' ,
    `tool_info` JSON    COMMENT '工具信息;包含name+变量列表' ,
    `status` TINYINT UNSIGNED(4) NOT NULL  DEFAULT 0 COMMENT '状态;0无效,1有效' ,
    `creator_id` BIGINT UNSIGNED(21)   DEFAULT 0 COMMENT '创建者ID' ,
    `is_online` TINYINT UNSIGNED(4) NOT NULL  DEFAULT 0 COMMENT '是否为线上信息;0草稿 1线上' ,
    `created_at` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT '创建时间' ,
    `updated_at` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT '更新时间' ,
    `agent_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'multi的指令时;该指令由哪个节点执行' ,
    `shortcut_icon` JSON    COMMENT '快捷指令图标' ,
    `plugin_tool_id` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT 'tool_id' ,
    PRIMARY KEY (id)
)  COMMENT = 'bot快捷指令表';


CREATE UNIQUE INDEX uniq_object_command_id_type ON shortcut_command(object_id,command_id,is_online);

DROP TABLE IF EXISTS single_agent_draft;
CREATE TABLE single_agent_draft(
    `id` BIGINT UNSIGNED(21) NOT NULL AUTO_INCREMENT  COMMENT 'Primary;Key ID' ,
    `agent_id` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT 'Agent;ID' ,
    `creator_id` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT 'Creator;ID' ,
    `space_id` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT 'Space;ID' ,
    `name` VARCHAR(255) NOT NULL   COMMENT 'Agent;Name' ,
    `description` TEXT NOT NULL   COMMENT 'Agent;Description' ,
    `icon_uri` VARCHAR(255) NOT NULL   COMMENT 'Icon;URI' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Create;Time in Milliseconds' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Update;Time in Milliseconds' ,
    `deleted_at` DATETIME    COMMENT 'delete;time in millisecond' ,
    `variables_meta_id` BIGINT(20)    COMMENT 'variables;meta 表 ID' ,
    `model_info` JSON    COMMENT 'Model;Configuration Information' ,
    `onboarding_info` JSON    COMMENT 'Onboarding;Information' ,
    `prompt` JSON    COMMENT 'Agent;Prompt Configuration' ,
    `plugin` JSON    COMMENT 'Agent;Plugin Base Configuration' ,
    `knowledge` JSON    COMMENT 'Agent;Knowledge Base Configuration' ,
    `workflow` JSON    COMMENT 'Agent;Workflow Configuration' ,
    `suggest_reply` JSON    COMMENT 'Suggested;Replies' ,
    `jump_config` JSON    COMMENT 'Jump;Configuration' ,
    `background_image_info_list` JSON    COMMENT 'Background;image' ,
    `database_config` JSON    COMMENT 'Agent;Database Base Configuration' ,
    `shortcut_command` JSON    COMMENT 'shortcut;command' ,
    PRIMARY KEY (id)
)  COMMENT = 'Single;Agent Draft Copy Table';


CREATE UNIQUE INDEX uniq_agent_id ON single_agent_draft(agent_id);
CREATE INDEX idx_creator_id ON single_agent_draft(creator_id);

DROP TABLE IF EXISTS single_agent_publish;
CREATE TABLE single_agent_publish(
    `id` BIGINT UNSIGNED(21) NOT NULL AUTO_INCREMENT  COMMENT '主键id' ,
    `agent_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'agent_id' ,
    `publish_id` VARCHAR(50) NOT NULL   COMMENT '发布;id' ,
    `connector_ids` JSON    COMMENT '发布的;connector_ids' ,
    `version` VARCHAR(255) NOT NULL   COMMENT 'Agent;Version' ,
    `publish_info` TEXT    COMMENT '发布信息' ,
    `publish_time` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '发布时间' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Create;Time in Milliseconds' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Update;Time in Milliseconds' ,
    `creator_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '发布人;user_id' ,
    `status` TINYINT(4) NOT NULL  DEFAULT 0 COMMENT '状态;0:使用中 1:删除 3:禁用' ,
    `extra` JSON    COMMENT '扩展字段' ,
    PRIMARY KEY (id)
)  COMMENT = 'bot;渠道和发布版本流水表';


CREATE INDEX idx_agent_id_version ON single_agent_publish(agent_id,version);
CREATE INDEX idx_creator_id ON single_agent_publish(creator_id);
CREATE INDEX idx_publish_id ON single_agent_publish(publish_id);

DROP TABLE IF EXISTS single_agent_version;
CREATE TABLE single_agent_version(
    `id` BIGINT UNSIGNED(21) NOT NULL AUTO_INCREMENT  COMMENT 'Primary;Key ID' ,
    `agent_id` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT 'Agent;ID' ,
    `creator_id` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT 'Creator;ID' ,
    `space_id` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT 'Space;ID' ,
    `name` VARCHAR(255) NOT NULL   COMMENT 'Agent;Name' ,
    `description` TEXT NOT NULL   COMMENT 'Agent;Description' ,
    `icon_uri` VARCHAR(255) NOT NULL   COMMENT 'Icon;URI' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Create;Time in Milliseconds' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Update;Time in Milliseconds' ,
    `deleted_at` DATETIME    COMMENT 'delete;time in millisecond' ,
    `variables_meta_id` BIGINT(20)    COMMENT 'variables;meta 表 ID' ,
    `model_info` JSON    COMMENT 'Model;Configuration Information' ,
    `onboarding_info` JSON    COMMENT 'Onboarding;Information' ,
    `prompt` JSON    COMMENT 'Agent;Prompt Configuration' ,
    `plugin` JSON    COMMENT 'Agent;Plugin Base Configuration' ,
    `knowledge` JSON    COMMENT 'Agent;Knowledge Base Configuration' ,
    `workflow` JSON    COMMENT 'Agent;Workflow Configuration' ,
    `suggest_reply` JSON    COMMENT 'Suggested;Replies' ,
    `jump_config` JSON    COMMENT 'Jump;Configuration' ,
    `connector_id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'Connector;ID' ,
    `version` VARCHAR(255) NOT NULL   COMMENT 'Agent;Version' ,
    `background_image_info_list` JSON    COMMENT 'Background;image' ,
    `database_config` JSON    COMMENT 'Agent;Database Base Configuration' ,
    `shortcut_command` JSON    COMMENT 'shortcut;command' ,
    PRIMARY KEY (id)
)  COMMENT = 'Single;Agent Version Copy Table';


CREATE UNIQUE INDEX uniq_agent_id_and_version_connector_id ON single_agent_version(agent_id,version,connector_id);
CREATE INDEX idx_creator_id ON single_agent_version(creator_id);

DROP TABLE IF EXISTS space;
CREATE TABLE space(
    `id` BIGINT UNSIGNED(21) NOT NULL AUTO_INCREMENT  COMMENT 'Primary;Key ID, Space ID' ,
    `owner_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Owner;ID' ,
    `name` VARCHAR(200) NOT NULL   COMMENT 'Space;Name' ,
    `description` VARCHAR(2000) NOT NULL   COMMENT 'Space;Description' ,
    `icon_uri` VARCHAR(200) NOT NULL   COMMENT 'Icon;URI' ,
    `creator_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Creator;ID' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Creation;Time (Milliseconds)' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Update;Time (Milliseconds)' ,
    `deleted_at` BIGINT UNSIGNED(21)    COMMENT 'Deletion;Time (Milliseconds)' ,
    PRIMARY KEY (id)
)  COMMENT = 'Space;Table';


CREATE INDEX idx_creator_id ON space(creator_id);
CREATE INDEX idx_owner_id ON space(owner_id);

DROP TABLE IF EXISTS space_user;
CREATE TABLE space_user(
    `id` BIGINT UNSIGNED(21) NOT NULL AUTO_INCREMENT  COMMENT 'Primary;Key ID, Auto Increment' ,
    `space_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Space;ID' ,
    `user_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'User;ID' ,
    `role_type` INT(11) NOT NULL  DEFAULT 3 COMMENT 'Role;Type: 1.owner 2.admin 3.member' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Creation;Time (Milliseconds)' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Update;Time (Milliseconds)' ,
    PRIMARY KEY (id)
)  COMMENT = 'Space;Member Table';


CREATE UNIQUE INDEX uniq_space_user ON space_user(space_id,user_id);
CREATE INDEX idx_user_id ON space_user(user_id);

DROP TABLE IF EXISTS table_7531376064140935168;
CREATE TABLE table_7531376064140935168(
    `f_1` VARCHAR(255)    COMMENT '姓名' ,
    `f_2` VARCHAR(255) NOT NULL   COMMENT '手机号' ,
    `bstudio_id` BIGINT(20) NOT NULL AUTO_INCREMENT  COMMENT '' ,
    `bstudio_connector_uid` VARCHAR(255) NOT NULL   COMMENT '' ,
    `bstudio_connector_id` VARCHAR(255) NOT NULL   COMMENT '' ,
    `bstudio_create_time` TIMESTAMP NOT NULL  DEFAULT 'CURRENT_TIMESTAMP' COMMENT '' ,
    PRIMARY KEY (bstudio_id)
)  COMMENT = '';


CREATE INDEX idx_uid ON table_7531376064140935168(bstudio_connector_uid,bstudio_connector_id);

DROP TABLE IF EXISTS table_7531376064480673792;
CREATE TABLE table_7531376064480673792(
    `f_1` VARCHAR(255)    COMMENT '姓名' ,
    `f_2` VARCHAR(255) NOT NULL   COMMENT '手机号' ,
    `bstudio_id` BIGINT(20) NOT NULL AUTO_INCREMENT  COMMENT '' ,
    `bstudio_connector_uid` VARCHAR(255) NOT NULL   COMMENT '' ,
    `bstudio_connector_id` VARCHAR(255) NOT NULL   COMMENT '' ,
    `bstudio_create_time` TIMESTAMP NOT NULL  DEFAULT 'CURRENT_TIMESTAMP' COMMENT '' ,
    PRIMARY KEY (bstudio_id)
)  COMMENT = '';


CREATE INDEX idx_uid ON table_7531376064480673792(bstudio_connector_uid,bstudio_connector_id);

DROP TABLE IF EXISTS template;
CREATE TABLE template(
    `id` BIGINT UNSIGNED(21) NOT NULL AUTO_INCREMENT  COMMENT 'Primary;Key ID' ,
    `agent_id` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT 'Agent;ID' ,
    `workflow_id` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT 'Workflow;ID' ,
    `space_id` BIGINT(20) NOT NULL  DEFAULT 0 COMMENT 'Space;ID' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Create;Time in Milliseconds' ,
    `heat` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Heat' ,
    `product_entity_type` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Product;Entity Type' ,
    `meta_info` JSON    COMMENT 'Meta;Info' ,
    `agent_extra` JSON    COMMENT 'Agent;Extra Info' ,
    `workflow_extra` JSON    COMMENT 'Workflow;Extra Info' ,
    `project_extra` JSON    COMMENT 'Project;Extra Info' ,
    PRIMARY KEY (id)
)  COMMENT = 'Template;Info Table';


CREATE UNIQUE INDEX uniq_agent_id ON template(agent_id);

DROP TABLE IF EXISTS tool;
CREATE TABLE tool(
    `id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Tool;ID' ,
    `plugin_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Plugin;ID' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Create;Time in Milliseconds' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Update;Time in Milliseconds' ,
    `version` VARCHAR(255) NOT NULL   COMMENT 'Tool;Version, e.g. v1.0.0' ,
    `sub_url` VARCHAR(512) NOT NULL   COMMENT 'Sub;URL Path' ,
    `method` VARCHAR(64) NOT NULL   COMMENT 'HTTP;Request Method' ,
    `operation` JSON    COMMENT 'Tool;Openapi Operation Schema' ,
    `activated_status` TINYINT UNSIGNED(4) NOT NULL  DEFAULT 0 COMMENT '0:activated;;1:deactivated' ,
    PRIMARY KEY (id)
)  COMMENT = 'Latest;Tool';


CREATE UNIQUE INDEX uniq_idx_plugin_sub_url_method ON tool(plugin_id,sub_url,method);
CREATE INDEX idx_plugin_activated_status ON tool(plugin_id,activated_status);

DROP TABLE IF EXISTS tool_draft;
CREATE TABLE tool_draft(
    `id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Tool;ID' ,
    `plugin_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Plugin;ID' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Create;Time in Milliseconds' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Update;Time in Milliseconds' ,
    `sub_url` VARCHAR(512) NOT NULL   COMMENT 'Sub;URL Path' ,
    `method` VARCHAR(64) NOT NULL   COMMENT 'HTTP;Request Method' ,
    `operation` JSON    COMMENT 'Tool;Openapi Operation Schema' ,
    `debug_status` TINYINT UNSIGNED(4) NOT NULL  DEFAULT 0 COMMENT '0:not;pass; 1:pass' ,
    `activated_status` TINYINT UNSIGNED(4) NOT NULL  DEFAULT 0 COMMENT '0:activated;;1:deactivated' ,
    PRIMARY KEY (id)
)  COMMENT = 'Draft;Tool';


CREATE UNIQUE INDEX uniq_idx_plugin_sub_url_method ON tool_draft(plugin_id,sub_url,method);
CREATE INDEX idx_plugin_created_at_id ON tool_draft(plugin_id,created_at,id);

DROP TABLE IF EXISTS tool_version;
CREATE TABLE tool_version(
    `id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Primary;Key ID' ,
    `tool_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Tool;ID' ,
    `plugin_id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Plugin;ID' ,
    `version` VARCHAR(255) NOT NULL   COMMENT 'Tool;Version, e.g. v1.0.0' ,
    `sub_url` VARCHAR(512) NOT NULL   COMMENT 'Sub;URL Path' ,
    `method` VARCHAR(64) NOT NULL   COMMENT 'HTTP;Request Method' ,
    `operation` JSON    COMMENT 'Tool;Openapi Operation Schema' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Create;Time in Milliseconds' ,
    `deleted_at` DATETIME    COMMENT 'Delete;Time' ,
    PRIMARY KEY (id)
)  COMMENT = 'Tool;Version';


CREATE UNIQUE INDEX uniq_idx_tool_version ON tool_version(tool_id,version);

DROP TABLE IF EXISTS user;
CREATE TABLE user(
    `id` BIGINT UNSIGNED(21) NOT NULL AUTO_INCREMENT  COMMENT 'Primary;Key ID' ,
    `name` VARCHAR(128) NOT NULL   COMMENT 'User;Nickname' ,
    `unique_name` VARCHAR(128) NOT NULL   COMMENT 'User;Unique Name' ,
    `email` VARCHAR(128) NOT NULL   COMMENT 'Email' ,
    `password` VARCHAR(128) NOT NULL   COMMENT 'Password;(Encrypted)' ,
    `description` VARCHAR(512) NOT NULL   COMMENT 'User;Description' ,
    `icon_uri` VARCHAR(512) NOT NULL   COMMENT 'Avatar;URI' ,
    `user_verified` BIT(1) NOT NULL  DEFAULT 0 COMMENT 'User;Verification Status' ,
    `locale` VARCHAR(128) NOT NULL   COMMENT 'Locale' ,
    `session_key` VARCHAR(256) NOT NULL   COMMENT 'Session;Key' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Creation;Time (Milliseconds)' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'Update;Time (Milliseconds)' ,
    `deleted_at` BIGINT UNSIGNED(21)    COMMENT 'Deletion;Time (Milliseconds)' ,
    PRIMARY KEY (id)
)  COMMENT = 'User;Table';


CREATE UNIQUE INDEX uniq_email ON user(email);
CREATE UNIQUE INDEX uniq_unique_name ON user(unique_name);
CREATE INDEX idx_session_key ON user(session_key);

DROP TABLE IF EXISTS variable_instance;
CREATE TABLE variable_instance(
    `id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '主键ID' ,
    `biz_type` TINYINT UNSIGNED(4) NOT NULL   COMMENT '1;for agent,2 for app' ,
    `biz_id` VARCHAR(128) NOT NULL   COMMENT '1;for agent_id,2 for app_id' ,
    `version` VARCHAR(255) NOT NULL   COMMENT 'agent;or project 版本,为空代表草稿态' ,
    `keyword` VARCHAR(255) NOT NULL   COMMENT '记忆的KEY' ,
    `type` TINYINT(4) NOT NULL   COMMENT '记忆类型;1 KV 2 list' ,
    `content` TEXT    COMMENT '记忆内容' ,
    `connector_uid` VARCHAR(255) NOT NULL   COMMENT '二方用户ID' ,
    `connector_id` BIGINT(20) NOT NULL   COMMENT '二方id,;e.g. coze = 10000010' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '创建时间' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '更新时间' ,
    PRIMARY KEY (id)
)  COMMENT = 'KV;Memory';


CREATE INDEX idx_connector_key ON variable_instance(biz_id,biz_type,version,connector_uid,connector_id);

DROP TABLE IF EXISTS variables_meta;
CREATE TABLE variables_meta(
    `id` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT '主键ID' ,
    `creator_id` BIGINT UNSIGNED(21) NOT NULL   COMMENT '创建者ID' ,
    `biz_type` TINYINT UNSIGNED(4) NOT NULL   COMMENT '1;for agent,2 for app' ,
    `biz_id` VARCHAR(128) NOT NULL   COMMENT '1;for agent_id,2 for app_id' ,
    `variable_list` JSON    COMMENT '变量配置的json数据' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'create;time' ,
    `updated_at` BIGINT UNSIGNED(21) NOT NULL  DEFAULT 0 COMMENT 'update;time' ,
    `version` VARCHAR(255) NOT NULL   COMMENT 'project版本;为空代表草稿态' ,
    PRIMARY KEY (id)
)  COMMENT = 'KV;Memory meta';


CREATE UNIQUE INDEX uniq_project_key ON variables_meta(biz_id,biz_type,version);
CREATE INDEX idx_user_key ON variables_meta(creator_id);

DROP TABLE IF EXISTS workflow_draft;
CREATE TABLE workflow_draft(
    `id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'workflow;ID' ,
    `canvas` MEDIUMTEXT NOT NULL   COMMENT '前端;schema' ,
    `input_params` MEDIUMTEXT    COMMENT '入参;schema' ,
    `output_params` MEDIUMTEXT    COMMENT '出参;schema' ,
    `test_run_success` BIT(1) NOT NULL  DEFAULT 0 COMMENT '0;未运行, 1 运行成功' ,
    `modified` BIT(1) NOT NULL  DEFAULT 0 COMMENT '0;未被修改, 1 已被修改' ,
    `updated_at` BIGINT UNSIGNED(21)    COMMENT '' ,
    `deleted_at` DATETIME    COMMENT '' ,
    `commit_id` VARCHAR(255) NOT NULL   COMMENT 'used;to uniquely identify a draft snapshot' ,
    PRIMARY KEY (id)
)  COMMENT = 'workflow;画布草稿表,用于记录workflow最新的草稿画布信息';


CREATE INDEX idx_updated_at ON workflow_draft(updated_at);

DROP TABLE IF EXISTS workflow_execution;
CREATE TABLE workflow_execution(
    `id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'execute;id' ,
    `workflow_id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'workflow_id' ,
    `version` VARCHAR(50)    COMMENT 'workflow;version. empty if is draft' ,
    `space_id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'the;space id the workflow belongs to' ,
    `mode` TINYINT UNSIGNED(4) NOT NULL   COMMENT 'the;execution mode: 1. debug run 2. release run 3. node debug' ,
    `operator_id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'the;user id that runs this workflow' ,
    `connector_id` BIGINT UNSIGNED(21)    COMMENT 'the;connector on which this execution happened' ,
    `connector_uid` VARCHAR(64)    COMMENT 'user;id of the connector' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'create;time in millisecond' ,
    `log_id` VARCHAR(128)    COMMENT 'log;id' ,
    `status` TINYINT UNSIGNED(4)    COMMENT '1=running;2=success 3=fail 4=interrupted' ,
    `duration` BIGINT UNSIGNED(21)    COMMENT 'execution;duration in millisecond' ,
    `input` MEDIUMTEXT    COMMENT 'actual;input of this execution' ,
    `output` MEDIUMTEXT    COMMENT 'the;actual output of this execution' ,
    `error_code` VARCHAR(255)    COMMENT 'error;code if any' ,
    `fail_reason` MEDIUMTEXT    COMMENT 'the;reason for failure' ,
    `input_tokens` BIGINT UNSIGNED(21)    COMMENT 'number;of input tokens' ,
    `output_tokens` BIGINT UNSIGNED(21)    COMMENT 'number;of output tokens' ,
    `updated_at` BIGINT UNSIGNED(21)    COMMENT 'update;time in millisecond' ,
    `root_execution_id` BIGINT UNSIGNED(21)    COMMENT 'the;top level execution id. Null if this is the root' ,
    `parent_node_id` VARCHAR(128)    COMMENT 'the;node key for the sub_workflow node that executes this workflow' ,
    `app_id` BIGINT UNSIGNED(21)    COMMENT 'app;id this workflow execution belongs to' ,
    `node_count` MEDIUMINT UNSIGNED(9)    COMMENT 'the;total node count of the workflow' ,
    `resume_event_id` BIGINT UNSIGNED(21)    COMMENT 'the;current event ID which is resuming' ,
    `agent_id` BIGINT UNSIGNED(21)    COMMENT 'the;agent that this execution binds to' ,
    `sync_pattern` TINYINT UNSIGNED(4)    COMMENT 'the;sync pattern 1. sync 2. async 3. stream' ,
    `commit_id` VARCHAR(255)    COMMENT 'draft;commit id this execution belongs to' ,
    PRIMARY KEY (id)
)  COMMENT = 'workflow;执行记录表,用于记录每次workflow执行时的状态';


CREATE INDEX idx_workflow_id_version_mode_created_at ON workflow_execution(workflow_id,version,mode,created_at);

DROP TABLE IF EXISTS workflow_meta;
CREATE TABLE workflow_meta(
    `id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'workflow;id' ,
    `name` VARCHAR(256) NOT NULL   COMMENT 'workflow;name' ,
    `description` VARCHAR(2000) NOT NULL   COMMENT 'workflow;description' ,
    `icon_uri` VARCHAR(256) NOT NULL   COMMENT 'icon;uri' ,
    `status` TINYINT UNSIGNED(4) NOT NULL   COMMENT '0:未发布过,;1:已发布过' ,
    `content_type` TINYINT UNSIGNED(4) NOT NULL   COMMENT '0用户;1官方' ,
    `mode` TINYINT UNSIGNED(4) NOT NULL   COMMENT '0:workflow,;3:chat_flow' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'create;time in millisecond' ,
    `updated_at` BIGINT UNSIGNED(21)    COMMENT 'update;time in millisecond' ,
    `deleted_at` DATETIME    COMMENT 'delete;time in millisecond' ,
    `creator_id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'user;id for creator' ,
    `tag` TINYINT UNSIGNED(4)    COMMENT 'template;tag: Tag: 1=All, 2=Hot, 3=Information, 4=Music, 5=Picture, 6=UtilityTool, 7=Life, 8=Traval, 9=Network, 10=System, 11=Movie, 12=Office, 13=Shopping, 14=Education, 15=Health, 16=Social, 17=Entertainment, 18=Finance, 100=Hidden' ,
    `author_id` BIGINT UNSIGNED(21) NOT NULL   COMMENT '原作者用户;ID' ,
    `space_id` BIGINT UNSIGNED(21) NOT NULL   COMMENT '空间;ID' ,
    `updater_id` BIGINT UNSIGNED(21)    COMMENT '更新元信息的用户;ID' ,
    `source_id` BIGINT UNSIGNED(21)    COMMENT '复制来源的;workflow ID' ,
    `app_id` BIGINT UNSIGNED(21)    COMMENT '应用;ID' ,
    `latest_version` VARCHAR(50)    COMMENT 'the;version of the most recent publish' ,
    `latest_version_ts` BIGINT UNSIGNED(21)    COMMENT 'create;time of latest version' ,
    PRIMARY KEY (id)
)  COMMENT = 'workflow;元信息表,用于记录workflow基本的元信息';


CREATE INDEX idx_app_id ON workflow_meta(app_id);
CREATE INDEX idx_latest_version_ts ON workflow_meta(latest_version_ts);
CREATE INDEX idx_space_id_app_id_status_latest_version_ts ON workflow_meta(space_id,app_id,status,latest_version_ts);

DROP TABLE IF EXISTS workflow_reference;
CREATE TABLE workflow_reference(
    `id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'workflow;id' ,
    `referred_id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'the;id of the workflow that is referred by other entities' ,
    `referring_id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'the;entity id that refers this workflow' ,
    `refer_type` TINYINT UNSIGNED(4) NOT NULL   COMMENT '1;subworkflow 2 tool' ,
    `referring_biz_type` TINYINT UNSIGNED(4) NOT NULL   COMMENT 'the;biz type the referring entity belongs to: 1. workflow 2. agent' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'create;time in millisecond' ,
    `status` TINYINT UNSIGNED(4) NOT NULL   COMMENT 'whether;this reference currently takes effect. 0: disabled 1: enabled' ,
    `deleted_at` DATETIME    COMMENT '' ,
    PRIMARY KEY (id)
)  COMMENT = 'workflow;关联关系表,用于记录workflow 直接互相引用关系';


CREATE UNIQUE INDEX uniq_referred_id_referring_id_refer_type ON workflow_reference(referred_id,referring_id,refer_type);
CREATE INDEX idx_referred_id_referring_biz_type_status ON workflow_reference(referred_id,referring_biz_type,status);
CREATE INDEX idx_referring_id_status ON workflow_reference(referring_id,status);

DROP TABLE IF EXISTS workflow_snapshot;
CREATE TABLE workflow_snapshot(
    `workflow_id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'workflow;id this snapshot belongs to' ,
    `commit_id` VARCHAR(255) NOT NULL   COMMENT 'the;commit id of the workflow draft' ,
    `canvas` MEDIUMTEXT NOT NULL   COMMENT 'frontend;schema for this snapshot' ,
    `input_params` MEDIUMTEXT    COMMENT 'input;parameter info' ,
    `output_params` MEDIUMTEXT    COMMENT 'output;parameter info' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL   COMMENT '' ,
    `id` BIGINT UNSIGNED(21) NOT NULL AUTO_INCREMENT  COMMENT 'ID' ,
    PRIMARY KEY (id)
)  COMMENT = 'snapshot;for executed workflow draft';


CREATE UNIQUE INDEX uniq_workflow_id_commit_id ON workflow_snapshot(workflow_id,commit_id);

DROP TABLE IF EXISTS workflow_version;
CREATE TABLE workflow_version(
    `id` BIGINT UNSIGNED(21) NOT NULL AUTO_INCREMENT  COMMENT 'ID' ,
    `workflow_id` BIGINT UNSIGNED(21) NOT NULL   COMMENT 'workflow;id' ,
    `version` VARCHAR(50) NOT NULL   COMMENT '发布版本' ,
    `version_description` VARCHAR(2000) NOT NULL   COMMENT '版本描述' ,
    `canvas` MEDIUMTEXT NOT NULL   COMMENT '前端;schema' ,
    `input_params` MEDIUMTEXT    COMMENT '' ,
    `output_params` MEDIUMTEXT    COMMENT '' ,
    `creator_id` BIGINT UNSIGNED(21) NOT NULL   COMMENT '发布用户;ID' ,
    `created_at` BIGINT UNSIGNED(21) NOT NULL   COMMENT '创建时间毫秒时间戳' ,
    `deleted_at` DATETIME    COMMENT '删除毫秒时间戳' ,
    `commit_id` VARCHAR(255) NOT NULL   COMMENT 'the;commit id corresponding to this version' ,
    PRIMARY KEY (id)
)  COMMENT = 'workflow;画布版本信息表,用于记录不同版本的画布信息';


CREATE UNIQUE INDEX uniq_workflow_id_version ON workflow_version(workflow_id,version);
CREATE INDEX idx_id_created_at ON workflow_version(workflow_id,created_at);

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言