feat: 登录信息加密传输
This commit is contained in:
@@ -124,7 +124,7 @@ easyflow:
|
||||
analytical-db:
|
||||
# 是否启用分析数据库
|
||||
enabled: true
|
||||
url: jdbc:clickhouse://114.66.22.180:38123/easyflow_dev?jdbc_ignore_unsupported_values=true&socket_timeout=30000&compress=false&ssl=false
|
||||
url: jdbc:clickhouse://110.42.53.158:38123/easyflow_dev?jdbc_ignore_unsupported_values=true&socket_timeout=30000&compress=false&ssl=false
|
||||
username: easyflow
|
||||
password: 123456
|
||||
driver-class-name: com.clickhouse.jdbc.ClickHouseDriver
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
CREATE TABLE IF NOT EXISTS `tb_skill_category` (
|
||||
`id` BIGINT NOT NULL COMMENT 'ID',
|
||||
`tenant_id` BIGINT NULL COMMENT '租户ID',
|
||||
`parent_id` BIGINT NULL COMMENT '父分类ID',
|
||||
`category_name` VARCHAR(128) NOT NULL COMMENT '分类名称',
|
||||
`level_no` INT DEFAULT 1 COMMENT '层级',
|
||||
`ancestors` VARCHAR(512) NULL COMMENT '祖级路径',
|
||||
`sort_no` INT DEFAULT 0 COMMENT '排序',
|
||||
`status` INT DEFAULT 1 COMMENT '状态',
|
||||
`created` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`created_by` BIGINT NULL COMMENT '创建人',
|
||||
`modified` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
|
||||
`modified_by` BIGINT NULL COMMENT '修改人',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_skill_category_tenant_parent` (`tenant_id`, `parent_id`, `status`, `sort_no`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Skill 分类';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `tb_skill` (
|
||||
`id` BIGINT NOT NULL COMMENT 'ID',
|
||||
`tenant_id` BIGINT NULL COMMENT '租户ID',
|
||||
`dept_id` BIGINT NULL COMMENT '部门ID',
|
||||
`category_id` BIGINT NULL COMMENT '分类ID',
|
||||
`name` VARCHAR(128) NOT NULL COMMENT 'Skill 名称',
|
||||
`display_name` VARCHAR(128) NULL COMMENT '展示名称',
|
||||
`description` VARCHAR(1024) NULL COMMENT '描述',
|
||||
`metadata_json` JSON NULL COMMENT '元数据',
|
||||
`skill_content` MEDIUMTEXT NULL COMMENT 'SKILL.md 内容',
|
||||
`enabled` TINYINT(1) DEFAULT 1 COMMENT '是否启用',
|
||||
`visibility_scope` VARCHAR(32) NULL COMMENT '可见范围',
|
||||
`source_type` VARCHAR(32) NULL COMMENT '来源类型',
|
||||
`package_hash` VARCHAR(128) NULL COMMENT '包 hash',
|
||||
`reference_count` INT DEFAULT 0 COMMENT '引用文档数量',
|
||||
`script_count` INT DEFAULT 0 COMMENT '脚本数量',
|
||||
`asset_count` INT DEFAULT 0 COMMENT '资产数量',
|
||||
`publish_status` VARCHAR(32) DEFAULT 'DRAFT' COMMENT '发布状态',
|
||||
`current_approval_instance_id` BIGINT NULL COMMENT '当前审批实例ID',
|
||||
`published_snapshot_json` JSON NULL COMMENT '已发布快照',
|
||||
`published_at` DATETIME NULL COMMENT '发布时间',
|
||||
`published_by` BIGINT NULL COMMENT '发布人',
|
||||
`created` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`created_by` BIGINT NULL COMMENT '创建人',
|
||||
`modified` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
|
||||
`modified_by` BIGINT NULL COMMENT '修改人',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_skill_tenant_name` (`tenant_id`, `name`),
|
||||
KEY `idx_skill_tenant_category` (`tenant_id`, `category_id`, `enabled`),
|
||||
KEY `idx_skill_publish_status` (`publish_status`),
|
||||
KEY `idx_skill_created_by` (`created_by`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Skill';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `tb_skill_reference` (
|
||||
`id` BIGINT NOT NULL COMMENT 'ID',
|
||||
`tenant_id` BIGINT NULL COMMENT '租户ID',
|
||||
`skill_id` BIGINT NOT NULL COMMENT 'Skill ID',
|
||||
`path` VARCHAR(512) NOT NULL COMMENT '逻辑路径',
|
||||
`name` VARCHAR(255) NULL COMMENT '文件名',
|
||||
`content` MEDIUMTEXT NULL COMMENT '内容',
|
||||
`content_hash` VARCHAR(128) NULL COMMENT '内容 hash',
|
||||
`size` BIGINT DEFAULT 0 COMMENT '大小',
|
||||
`metadata_json` JSON NULL COMMENT '元数据',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_skill_reference_path` (`skill_id`, `path`),
|
||||
KEY `idx_skill_reference_skill` (`skill_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Skill reference';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `tb_skill_script` (
|
||||
`id` BIGINT NOT NULL COMMENT 'ID',
|
||||
`tenant_id` BIGINT NULL COMMENT '租户ID',
|
||||
`skill_id` BIGINT NOT NULL COMMENT 'Skill ID',
|
||||
`path` VARCHAR(512) NOT NULL COMMENT '逻辑路径',
|
||||
`language` VARCHAR(32) NULL COMMENT '脚本语言',
|
||||
`content` MEDIUMTEXT NULL COMMENT '内容',
|
||||
`content_hash` VARCHAR(128) NULL COMMENT '内容 hash',
|
||||
`size` BIGINT DEFAULT 0 COMMENT '大小',
|
||||
`metadata_json` JSON NULL COMMENT '元数据',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_skill_script_path` (`skill_id`, `path`),
|
||||
KEY `idx_skill_script_skill` (`skill_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Skill script';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `tb_skill_asset` (
|
||||
`id` BIGINT NOT NULL COMMENT 'ID',
|
||||
`tenant_id` BIGINT NULL COMMENT '租户ID',
|
||||
`skill_id` BIGINT NOT NULL COMMENT 'Skill ID',
|
||||
`path` VARCHAR(512) NOT NULL COMMENT '逻辑路径',
|
||||
`name` VARCHAR(255) NULL COMMENT '文件名',
|
||||
`media_type` VARCHAR(128) NULL COMMENT '媒体类型',
|
||||
`content_ref` VARCHAR(128) NOT NULL COMMENT '内容引用',
|
||||
`content_hash` VARCHAR(128) NULL COMMENT '内容 hash',
|
||||
`size` BIGINT DEFAULT 0 COMMENT '大小',
|
||||
`metadata_json` JSON NULL COMMENT '元数据',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_skill_asset_path` (`skill_id`, `path`),
|
||||
KEY `idx_skill_asset_skill` (`skill_id`),
|
||||
KEY `idx_skill_asset_content_ref` (`content_ref`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Skill asset';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `tb_skill_asset_content` (
|
||||
`content_ref` VARCHAR(128) NOT NULL COMMENT '内容引用',
|
||||
`content_hash` VARCHAR(128) NOT NULL COMMENT '内容 hash',
|
||||
`file_path` VARCHAR(1024) NOT NULL COMMENT '文件路径',
|
||||
`media_type` VARCHAR(128) NULL COMMENT '媒体类型',
|
||||
`size` BIGINT DEFAULT 0 COMMENT '大小',
|
||||
`ref_count` INT DEFAULT 0 COMMENT '引用数',
|
||||
`created` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`modified` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
|
||||
PRIMARY KEY (`content_ref`),
|
||||
KEY `idx_skill_asset_content_hash` (`content_hash`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Skill asset 内容索引';
|
||||
@@ -0,0 +1,172 @@
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
INSERT INTO `tb_sys_menu` (
|
||||
`id`, `parent_id`, `menu_type`, `menu_title`, `menu_url`, `component`, `menu_icon`,
|
||||
`is_show`, `permission_tag`, `sort_no`, `status`, `created`, `created_by`, `modified`, `modified_by`, `remark`
|
||||
)
|
||||
SELECT
|
||||
367400000000000001, 0, 0, '技能管理', '/ai/skill', '/ai/skill/SkillList', 'lucide:badge-check',
|
||||
1, '', 3, 0, '2026-06-05 20:00:00', 1, '2026-06-05 20:00:00', 1, '管理端 Skill 管理菜单'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `tb_sys_menu` WHERE `id` = 367400000000000001
|
||||
);
|
||||
|
||||
INSERT INTO `tb_sys_menu` (
|
||||
`id`, `parent_id`, `menu_type`, `menu_title`, `menu_url`, `component`, `menu_icon`,
|
||||
`is_show`, `permission_tag`, `sort_no`, `status`, `created`, `created_by`, `modified`, `modified_by`, `remark`
|
||||
)
|
||||
SELECT
|
||||
367400000000000011, 367400000000000001, 1, '查询', '', '', '',
|
||||
0, '/api/v1/skill/query', 1, 0, '2026-06-05 20:00:00', 1, '2026-06-05 20:00:00', 1, 'Skill-查询'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `tb_sys_menu` WHERE `id` = 367400000000000011
|
||||
);
|
||||
|
||||
INSERT INTO `tb_sys_menu` (
|
||||
`id`, `parent_id`, `menu_type`, `menu_title`, `menu_url`, `component`, `menu_icon`,
|
||||
`is_show`, `permission_tag`, `sort_no`, `status`, `created`, `created_by`, `modified`, `modified_by`, `remark`
|
||||
)
|
||||
SELECT
|
||||
367400000000000012, 367400000000000001, 1, '详情', '', '', '',
|
||||
0, '/api/v1/skill/getDetail', 2, 0, '2026-06-05 20:00:00', 1, '2026-06-05 20:00:00', 1, 'Skill-详情'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `tb_sys_menu` WHERE `id` = 367400000000000012
|
||||
);
|
||||
|
||||
INSERT INTO `tb_sys_menu` (
|
||||
`id`, `parent_id`, `menu_type`, `menu_title`, `menu_url`, `component`, `menu_icon`,
|
||||
`is_show`, `permission_tag`, `sort_no`, `status`, `created`, `created_by`, `modified`, `modified_by`, `remark`
|
||||
)
|
||||
SELECT
|
||||
367400000000000013, 367400000000000001, 1, '保存', '', '', '',
|
||||
0, '/api/v1/skill/save', 3, 0, '2026-06-05 20:00:00', 1, '2026-06-05 20:00:00', 1, 'Skill-保存'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `tb_sys_menu` WHERE `id` = 367400000000000013
|
||||
);
|
||||
|
||||
INSERT INTO `tb_sys_menu` (
|
||||
`id`, `parent_id`, `menu_type`, `menu_title`, `menu_url`, `component`, `menu_icon`,
|
||||
`is_show`, `permission_tag`, `sort_no`, `status`, `created`, `created_by`, `modified`, `modified_by`, `remark`
|
||||
)
|
||||
SELECT
|
||||
367400000000000014, 367400000000000001, 1, '更新', '', '', '',
|
||||
0, '/api/v1/skill/update', 4, 0, '2026-06-05 20:00:00', 1, '2026-06-05 20:00:00', 1, 'Skill-更新'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `tb_sys_menu` WHERE `id` = 367400000000000014
|
||||
);
|
||||
|
||||
INSERT INTO `tb_sys_menu` (
|
||||
`id`, `parent_id`, `menu_type`, `menu_title`, `menu_url`, `component`, `menu_icon`,
|
||||
`is_show`, `permission_tag`, `sort_no`, `status`, `created`, `created_by`, `modified`, `modified_by`, `remark`
|
||||
)
|
||||
SELECT
|
||||
367400000000000015, 367400000000000001, 1, '删除', '', '', '',
|
||||
0, '/api/v1/skill/remove', 5, 0, '2026-06-05 20:00:00', 1, '2026-06-05 20:00:00', 1, 'Skill-删除'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `tb_sys_menu` WHERE `id` = 367400000000000015
|
||||
);
|
||||
|
||||
INSERT INTO `tb_sys_menu` (
|
||||
`id`, `parent_id`, `menu_type`, `menu_title`, `menu_url`, `component`, `menu_icon`,
|
||||
`is_show`, `permission_tag`, `sort_no`, `status`, `created`, `created_by`, `modified`, `modified_by`, `remark`
|
||||
)
|
||||
SELECT
|
||||
367400000000000016, 367400000000000001, 1, '发布', '', '', '',
|
||||
0, '/api/v1/skill/submitPublishApproval', 6, 0, '2026-06-05 20:00:00', 1, '2026-06-05 20:00:00', 1, 'Skill-发布审批'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `tb_sys_menu` WHERE `id` = 367400000000000016
|
||||
);
|
||||
|
||||
INSERT INTO `tb_sys_menu` (
|
||||
`id`, `parent_id`, `menu_type`, `menu_title`, `menu_url`, `component`, `menu_icon`,
|
||||
`is_show`, `permission_tag`, `sort_no`, `status`, `created`, `created_by`, `modified`, `modified_by`, `remark`
|
||||
)
|
||||
SELECT
|
||||
367400000000000017, 367400000000000001, 1, '下线', '', '', '',
|
||||
0, '/api/v1/skill/submitOfflineApproval', 7, 0, '2026-06-05 20:00:00', 1, '2026-06-05 20:00:00', 1, 'Skill-下线审批'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `tb_sys_menu` WHERE `id` = 367400000000000017
|
||||
);
|
||||
|
||||
INSERT INTO `tb_sys_menu` (
|
||||
`id`, `parent_id`, `menu_type`, `menu_title`, `menu_url`, `component`, `menu_icon`,
|
||||
`is_show`, `permission_tag`, `sort_no`, `status`, `created`, `created_by`, `modified`, `modified_by`, `remark`
|
||||
)
|
||||
SELECT
|
||||
367400000000000018, 367400000000000001, 1, '删除审批', '', '', '',
|
||||
0, '/api/v1/skill/submitDeleteApproval', 8, 0, '2026-06-05 20:00:00', 1, '2026-06-05 20:00:00', 1, 'Skill-删除审批'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `tb_sys_menu` WHERE `id` = 367400000000000018
|
||||
);
|
||||
|
||||
INSERT INTO `tb_sys_role_menu` (`id`, `role_id`, `menu_id`)
|
||||
SELECT 367400000000000101, 1, 367400000000000001
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `tb_sys_role_menu` WHERE `role_id` = 1 AND `menu_id` = 367400000000000001
|
||||
);
|
||||
|
||||
INSERT INTO `tb_sys_role_menu` (`id`, `role_id`, `menu_id`)
|
||||
SELECT 367400000000000111, 1, 367400000000000011
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `tb_sys_role_menu` WHERE `role_id` = 1 AND `menu_id` = 367400000000000011
|
||||
);
|
||||
|
||||
INSERT INTO `tb_sys_role_menu` (`id`, `role_id`, `menu_id`)
|
||||
SELECT 367400000000000112, 1, 367400000000000012
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `tb_sys_role_menu` WHERE `role_id` = 1 AND `menu_id` = 367400000000000012
|
||||
);
|
||||
|
||||
INSERT INTO `tb_sys_role_menu` (`id`, `role_id`, `menu_id`)
|
||||
SELECT 367400000000000113, 1, 367400000000000013
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `tb_sys_role_menu` WHERE `role_id` = 1 AND `menu_id` = 367400000000000013
|
||||
);
|
||||
|
||||
INSERT INTO `tb_sys_role_menu` (`id`, `role_id`, `menu_id`)
|
||||
SELECT 367400000000000114, 1, 367400000000000014
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `tb_sys_role_menu` WHERE `role_id` = 1 AND `menu_id` = 367400000000000014
|
||||
);
|
||||
|
||||
INSERT INTO `tb_sys_role_menu` (`id`, `role_id`, `menu_id`)
|
||||
SELECT 367400000000000115, 1, 367400000000000015
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `tb_sys_role_menu` WHERE `role_id` = 1 AND `menu_id` = 367400000000000015
|
||||
);
|
||||
|
||||
INSERT INTO `tb_sys_role_menu` (`id`, `role_id`, `menu_id`)
|
||||
SELECT 367400000000000116, 1, 367400000000000016
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `tb_sys_role_menu` WHERE `role_id` = 1 AND `menu_id` = 367400000000000016
|
||||
);
|
||||
|
||||
INSERT INTO `tb_sys_role_menu` (`id`, `role_id`, `menu_id`)
|
||||
SELECT 367400000000000117, 1, 367400000000000017
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `tb_sys_role_menu` WHERE `role_id` = 1 AND `menu_id` = 367400000000000017
|
||||
);
|
||||
|
||||
INSERT INTO `tb_sys_role_menu` (`id`, `role_id`, `menu_id`)
|
||||
SELECT 367400000000000118, 1, 367400000000000018
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `tb_sys_role_menu` WHERE `role_id` = 1 AND `menu_id` = 367400000000000018
|
||||
);
|
||||
@@ -0,0 +1,24 @@
|
||||
CREATE TABLE IF NOT EXISTS `tb_auth_credential_key` (
|
||||
`id` BIGINT NOT NULL COMMENT 'ID',
|
||||
`key_id` VARCHAR(64) NOT NULL COMMENT '密钥标识',
|
||||
`public_key_pem` TEXT NOT NULL COMMENT '公钥PEM',
|
||||
`encrypted_private_key` TEXT NOT NULL COMMENT '加密后的私钥PEM',
|
||||
`fingerprint` VARCHAR(128) NOT NULL COMMENT '公钥指纹',
|
||||
`status` VARCHAR(32) NOT NULL COMMENT '状态',
|
||||
`rotate_seq` BIGINT NOT NULL COMMENT '轮换序号',
|
||||
`parent_key_id` VARCHAR(64) NULL COMMENT '上一密钥标识',
|
||||
`transition_payload` TEXT NULL COMMENT '轮换载荷',
|
||||
`transition_signature` TEXT NULL COMMENT '轮换签名',
|
||||
`not_before` DATETIME NOT NULL COMMENT '生效时间',
|
||||
`expires_at` DATETIME NOT NULL COMMENT '过期时间',
|
||||
`rotate_at` DATETIME NOT NULL COMMENT '计划轮换时间',
|
||||
`previous_until` DATETIME NULL COMMENT '旧密钥保留解密截止时间',
|
||||
`created` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`modified` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_auth_credential_key_id` (`key_id`),
|
||||
UNIQUE KEY `uk_auth_credential_fingerprint` (`fingerprint`),
|
||||
KEY `idx_auth_credential_status` (`status`),
|
||||
KEY `idx_auth_credential_rotate_seq` (`rotate_seq`),
|
||||
KEY `idx_auth_credential_previous_until` (`previous_until`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='认证传输密钥环';
|
||||
Reference in New Issue
Block a user