376 lines
26 KiB
SQL
376 lines
26 KiB
SQL
-- 物业 AI HR 知识库最小表结构。
|
|
-- ponytail: adapted from ruoyi-ai knowledge_* tables; keep only fields needed by SOP RAG first.
|
|
|
|
CREATE TABLE IF NOT EXISTS `aihr_knowledge_info` (
|
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
`tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号',
|
|
`name` varchar(100) NOT NULL COMMENT '知识库名称',
|
|
`code` varchar(100) DEFAULT NULL COMMENT '租户内稳定空间编码;平台迁移会回填 legacy 编码并改为必填',
|
|
`space_type` varchar(30) NOT NULL DEFAULT 'BUSINESS' COMMENT 'PUBLIC/BUSINESS/MANAGEMENT/EXTERNAL',
|
|
`sensitivity_level` varchar(30) NOT NULL DEFAULT 'INTERNAL' COMMENT 'PUBLIC/INTERNAL/CONFIDENTIAL',
|
|
`status` varchar(20) NOT NULL DEFAULT 'ACTIVE' COMMENT 'DRAFT/ACTIVE/DISABLED',
|
|
`description` varchar(1000) DEFAULT NULL COMMENT '知识库描述',
|
|
`separator` varchar(255) DEFAULT NULL COMMENT '知识分隔符',
|
|
`overlap_char` int DEFAULT 120 COMMENT '重叠字符数',
|
|
`retrieve_limit` int DEFAULT 5 COMMENT '检索条数',
|
|
`similarity_threshold` double DEFAULT 0.5 COMMENT '相似度阈值',
|
|
`text_block_size` int DEFAULT 800 COMMENT '文本块大小',
|
|
`vector_model` varchar(50) DEFAULT NULL COMMENT '向量库',
|
|
`embedding_model` varchar(100) DEFAULT NULL COMMENT '向量模型',
|
|
`enable_hybrid` tinyint(1) DEFAULT 1 COMMENT '是否启用混合检索',
|
|
`hybrid_alpha` double DEFAULT 0.5 COMMENT '混合检索权重比例',
|
|
`system_prompt` text COMMENT '系统提示词',
|
|
`create_dept` bigint DEFAULT NULL COMMENT '创建部门',
|
|
`create_by` bigint DEFAULT NULL COMMENT '创建者',
|
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
|
`update_by` bigint DEFAULT NULL COMMENT '更新者',
|
|
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
|
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_aihr_knowledge_info_code` (`tenant_id`, `code`),
|
|
KEY `idx_aihr_knowledge_info_tenant` (`tenant_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='AI HR 知识库';
|
|
|
|
CREATE TABLE IF NOT EXISTS `aihr_knowledge_attach` (
|
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
`tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号',
|
|
`knowledge_id` bigint NOT NULL COMMENT '知识库ID',
|
|
`category_id` bigint DEFAULT NULL COMMENT '知识空间内分类ID',
|
|
`oss_id` bigint DEFAULT NULL COMMENT '对象存储ID',
|
|
`doc_id` varchar(32) DEFAULT NULL COMMENT '文档ID',
|
|
`name` varchar(500) DEFAULT NULL COMMENT '附件名称',
|
|
`type` varchar(50) NOT NULL COMMENT '附件类型',
|
|
`status` tinyint DEFAULT 0 COMMENT '解析状态: 0待解析, 1解析中, 2已解析, 3解析失败',
|
|
`create_dept` bigint DEFAULT NULL COMMENT '创建部门',
|
|
`create_by` bigint DEFAULT NULL COMMENT '创建者',
|
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
|
`update_by` bigint DEFAULT NULL COMMENT '更新者',
|
|
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
|
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_aihr_knowledge_attach_name` (`tenant_id`, `knowledge_id`, `name`),
|
|
UNIQUE KEY `uk_aihr_knowledge_attach_doc` (`tenant_id`, `knowledge_id`, `doc_id`),
|
|
KEY `idx_aihr_knowledge_attach_category` (`tenant_id`, `knowledge_id`, `category_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='AI HR 知识库附件';
|
|
|
|
CREATE TABLE IF NOT EXISTS `aihr_knowledge_category` (
|
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
`tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户编号',
|
|
`knowledge_id` bigint NOT NULL COMMENT '知识空间ID',
|
|
`code` varchar(64) NOT NULL COMMENT '空间内稳定分类编码',
|
|
`name` varchar(100) NOT NULL COMMENT '分类名称',
|
|
`status` varchar(20) NOT NULL DEFAULT 'ACTIVE' COMMENT 'ACTIVE/DISABLED',
|
|
`sort_order` int NOT NULL DEFAULT 0 COMMENT '排序,越小越靠前',
|
|
`create_by` bigint DEFAULT NULL COMMENT '创建者',
|
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
|
`update_by` bigint DEFAULT NULL COMMENT '更新者',
|
|
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_aihr_knowledge_category_code` (`tenant_id`, `knowledge_id`, `code`),
|
|
KEY `idx_aihr_knowledge_category_space` (`tenant_id`, `knowledge_id`, `status`, `sort_order`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='知识空间内容分类';
|
|
|
|
CREATE TABLE IF NOT EXISTS `aihr_knowledge_fragment` (
|
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
`tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号',
|
|
`knowledge_id` bigint NOT NULL COMMENT '知识库ID',
|
|
`idx` int NOT NULL COMMENT '片段序号',
|
|
`doc_id` varchar(32) DEFAULT NULL COMMENT '文档ID',
|
|
`content` text NOT NULL COMMENT '文档内容',
|
|
`embedding_json` longtext DEFAULT NULL COMMENT '向量 JSON',
|
|
`embedding_model` varchar(100) DEFAULT NULL COMMENT '向量模型',
|
|
`embedding_time` datetime DEFAULT NULL COMMENT '向量生成时间',
|
|
`create_dept` bigint DEFAULT NULL COMMENT '创建部门',
|
|
`create_by` bigint DEFAULT NULL COMMENT '创建者',
|
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
|
`update_by` bigint DEFAULT NULL COMMENT '更新者',
|
|
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
|
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_aihr_knowledge_fragment_doc` (`doc_id`),
|
|
KEY `idx_aihr_knowledge_fragment_kid` (`knowledge_id`),
|
|
FULLTEXT KEY `ft_aihr_knowledge_fragment_content` (`content`) WITH PARSER ngram
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='AI HR 知识片段';
|
|
|
|
CREATE TABLE IF NOT EXISTS `aihr_knowledge_fragment_locator` (
|
|
`id` bigint NOT NULL AUTO_INCREMENT,
|
|
`tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
|
`fragment_id` bigint NOT NULL,
|
|
`knowledge_id` bigint NOT NULL,
|
|
`doc_id` varchar(80) DEFAULT NULL,
|
|
`attachment_id` bigint DEFAULT NULL,
|
|
`source_kind` varchar(12) NOT NULL,
|
|
`page_number` int DEFAULT NULL,
|
|
`slide_number` int DEFAULT NULL,
|
|
`paragraph_start` int DEFAULT NULL,
|
|
`paragraph_end` int DEFAULT NULL,
|
|
`sheet_name` varchar(255) DEFAULT NULL,
|
|
`row_start` int DEFAULT NULL,
|
|
`row_end` int DEFAULT NULL,
|
|
`start_ms` bigint DEFAULT NULL,
|
|
`end_ms` bigint DEFAULT NULL,
|
|
`frame_ms` bigint DEFAULT NULL,
|
|
`locator_version` varchar(32) NOT NULL DEFAULT 'v1',
|
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_aihr_fragment_locator_fragment` (`tenant_id`, `fragment_id`),
|
|
KEY `idx_aihr_fragment_locator_attachment` (`tenant_id`, `attachment_id`, `source_kind`),
|
|
CONSTRAINT `ck_aihr_fragment_locator_kind` CHECK (`source_kind` in ('TEXT','PDF','DOCX','PPTX','XLSX','IMAGE','VIDEO')),
|
|
CONSTRAINT `ck_aihr_fragment_locator_nonnegative` CHECK (
|
|
(`page_number` is null or `page_number` >= 0) and (`slide_number` is null or `slide_number` >= 0) and
|
|
(`paragraph_start` is null or `paragraph_start` >= 0) and (`paragraph_end` is null or `paragraph_end` >= 0) and
|
|
(`row_start` is null or `row_start` >= 0) and (`row_end` is null or `row_end` >= 0) and
|
|
(`start_ms` is null or `start_ms` >= 0) and (`end_ms` is null or `end_ms` >= 0) and
|
|
(`frame_ms` is null or `frame_ms` >= 0)
|
|
)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='Knowledge fragment source location sidecar';
|
|
|
|
CREATE TABLE IF NOT EXISTS `aihr_knowledge_acl` (
|
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
`tenant_id` varchar(20) NOT NULL COMMENT '租户编号',
|
|
`knowledge_id` bigint NOT NULL COMMENT '企业知识库ID',
|
|
`access_scope` varchar(20) NOT NULL COMMENT '授权范围:TENANT/PROJECT/POSITION',
|
|
`project_code` varchar(50) DEFAULT NULL COMMENT '项目编码,PROJECT必填,POSITION可选',
|
|
`position_name` varchar(100) DEFAULT NULL COMMENT '规范岗位名称,POSITION必填',
|
|
`position_level` varchar(30) DEFAULT NULL COMMENT '岗位层级,POSITION可选',
|
|
`classification` varchar(20) NOT NULL DEFAULT 'INTERNAL' COMMENT '知识密级:INTERNAL/RESTRICTED',
|
|
`enabled` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否启用',
|
|
`rule_key` varchar(220) GENERATED ALWAYS AS
|
|
(concat(`access_scope`, '|', ifnull(`project_code`, ''), '|', ifnull(`position_name`, ''), '|', ifnull(`position_level`, ''))) STORED,
|
|
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_aihr_knowledge_acl_rule` (`tenant_id`, `knowledge_id`, `rule_key`),
|
|
KEY `idx_aihr_knowledge_acl_lookup` (`tenant_id`, `enabled`, `access_scope`),
|
|
KEY `idx_aihr_knowledge_acl_knowledge` (`tenant_id`, `knowledge_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='企业知识访问控制,默认无ACL不可见';
|
|
|
|
CREATE TABLE IF NOT EXISTS `aihr_knowledge_import_task` (
|
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
`tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号',
|
|
`directory` varchar(500) NOT NULL COMMENT '导入相对目录',
|
|
`category` varchar(100) NOT NULL COMMENT '知识库分类',
|
|
`status` tinyint DEFAULT 0 COMMENT '任务状态: 0等待, 1运行中, 2完成, 3失败, 4取消',
|
|
`total_files` int DEFAULT 0 COMMENT '发现文件数',
|
|
`imported_files` int DEFAULT 0 COMMENT '已导入文件数',
|
|
`failed_files` int DEFAULT 0 COMMENT '失败文件数',
|
|
`current_file` varchar(500) DEFAULT NULL COMMENT '当前文件',
|
|
`started_time` datetime DEFAULT NULL COMMENT '开始时间',
|
|
`finished_time` datetime DEFAULT NULL COMMENT '完成时间',
|
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
|
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
|
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_aihr_knowledge_import_task_tenant` (`tenant_id`, `update_time`),
|
|
KEY `idx_aihr_knowledge_import_task_status` (`tenant_id`, `status`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='AI HR 知识库导入任务';
|
|
|
|
INSERT INTO `aihr_knowledge_info`
|
|
(`id`, `tenant_id`, `name`, `code`, `description`, `separator`, `overlap_char`, `retrieve_limit`, `similarity_threshold`, `text_block_size`, `vector_model`, `embedding_model`, `enable_hybrid`, `hybrid_alpha`, `system_prompt`, `create_time`, `update_time`, `remark`)
|
|
VALUES
|
|
(1001, '000000', '投诉处理 SOP', 'legacy_1001', '业主投诉的接待、记录、派单、反馈和闭环确认。', '\n\n', 120, 5, 0.5, 800, NULL, NULL, 1, 1.0, '回答必须引用投诉处理 SOP 片段,不得编造未命中的金额、责任和时限。', NOW(), NOW(), 'seed:sop'),
|
|
(1002, '000000', '催缴沟通 SOP', 'legacy_1002', '缴费提醒、费用争议回应、服务问题承接。', '\n\n', 120, 5, 0.5, 800, NULL, NULL, 1, 1.0, '回答必须区分服务整改与费用义务。', NOW(), NOW(), 'seed:sop'),
|
|
(1003, '000000', '报修跟进 SOP', 'legacy_1003', '报修接单、派工、现场反馈、复核关闭。', '\n\n', 120, 5, 0.5, 800, NULL, NULL, 1, 1.0, '回答必须给出明确节点和责任人。', NOW(), NOW(), 'seed:sop'),
|
|
(1201, '000000', '增值服务需求识别 SOP', 'legacy_1201', '基于业主真实需求介绍增值服务,明确适用范围、价格和取消规则。', '\n\n', 120, 5, 0.5, 800, NULL, NULL, 1, 1.0, '只能基于已确认的服务目录和价目口径回答,不得编造优惠或效果承诺。', NOW(), NOW(), 'seed:sop:brd-supplement'),
|
|
(1202, '000000', '日常服务回访 SOP', 'legacy_1202', '服务完成后的满意度确认、遗留问题记录、责任人和回访节点。', '\n\n', 120, 5, 0.5, 800, NULL, NULL, 1, 1.0, '已完成不等于已闭环,回答必须包含满意度确认、责任人和下一次回访节点。', NOW(), NOW(), 'seed:sop:brd-supplement')
|
|
ON DUPLICATE KEY UPDATE
|
|
`description` = VALUES(`description`),
|
|
`system_prompt` = VALUES(`system_prompt`),
|
|
`update_time` = NOW();
|
|
|
|
INSERT INTO `aihr_knowledge_attach`
|
|
(`id`, `tenant_id`, `knowledge_id`, `doc_id`, `name`, `type`, `status`, `create_time`, `update_time`, `remark`)
|
|
VALUES
|
|
(1001, '000000', 1001, 'sop_complaint_v1', '投诉处理 SOP v1.0', 'sop', 2, NOW(), NOW(), 'owner:品质组'),
|
|
(1002, '000000', 1002, 'sop_payment_v1', '催缴沟通 SOP v1.0', 'sop', 2, NOW(), NOW(), 'owner:财务组'),
|
|
(1003, '000000', 1003, 'sop_repair_v1', '报修跟进 SOP v1.0', 'sop', 2, NOW(), NOW(), 'owner:工程组'),
|
|
(1201, '000000', 1201, 'sop_service_promotion_v1', '增值服务需求识别 SOP v1.0', 'sop', 2, NOW(), NOW(), 'seed:sop:brd-supplement'),
|
|
(1202, '000000', 1202, 'sop_daily_service_v1', '日常服务回访 SOP v1.0', 'sop', 2, NOW(), NOW(), 'seed:sop:brd-supplement')
|
|
ON DUPLICATE KEY UPDATE
|
|
`status` = VALUES(`status`),
|
|
`update_time` = NOW();
|
|
|
|
INSERT INTO `aihr_knowledge_fragment`
|
|
(`id`, `tenant_id`, `knowledge_id`, `idx`, `doc_id`, `content`, `create_time`, `update_time`, `remark`)
|
|
VALUES
|
|
(100101, '000000', 1001, 1, 'sop_complaint_v1', '接到业主投诉后,管家第一步应先安抚业主情绪,表达理解,避免立即争辩责任归属。', NOW(), NOW(), 'seed:sop'),
|
|
(100102, '000000', 1001, 2, 'sop_complaint_v1', '投诉记录必须包含房号、联系人、发生时间、现场照片、影响范围和业主核心诉求。', NOW(), NOW(), 'seed:sop'),
|
|
(100103, '000000', 1001, 3, 'sop_complaint_v1', '创建投诉工单后,应告知首次反馈时限、责任人和下一次同步节点。', NOW(), NOW(), 'seed:sop'),
|
|
(100201, '000000', 1002, 1, 'sop_payment_v1', '业主因服务不满拒缴时,客服应先记录具体服务问题,不以欠费事实压过诉求。', NOW(), NOW(), 'seed:sop'),
|
|
(100202, '000000', 1002, 2, 'sop_payment_v1', '催缴沟通需说明费用构成、账期和缴费渠道,避免承诺超出权限的减免。', NOW(), NOW(), 'seed:sop'),
|
|
(100203, '000000', 1002, 3, 'sop_payment_v1', '对服务整改事项设置跟进责任人,并在约定时间内反馈处理进度。', NOW(), NOW(), 'seed:sop'),
|
|
(100301, '000000', 1003, 1, 'sop_repair_v1', '报修超时跟进前,必须确认工单编号、责任班组、当前状态和超时原因。', NOW(), NOW(), 'seed:sop'),
|
|
(100302, '000000', 1003, 2, 'sop_repair_v1', '向业主同步下一次反馈或到场时间,避免只说尽快处理。', NOW(), NOW(), 'seed:sop'),
|
|
(100303, '000000', 1003, 3, 'sop_repair_v1', '维修完成后需向业主确认处理效果,再补充关闭证据并关闭工单。', NOW(), NOW(), 'seed:sop'),
|
|
(120101, '000000', 1201, 1, 'sop_service_promotion_v1', '介绍增值服务前,先确认业主的家庭场景、实际需求、预算和期望结果,不直接罗列产品。', NOW(), NOW(), 'seed:sop:brd-supplement'),
|
|
(120102, '000000', 1201, 2, 'sop_service_promotion_v1', '服务介绍必须说明适用范围、正式价目、办理路径和取消规则;未确认的信息不得口头承诺。', NOW(), NOW(), 'seed:sop:brd-supplement'),
|
|
(120103, '000000', 1201, 3, 'sop_service_promotion_v1', '业主暂不需要时应记录需求和后续咨询方式,不以夸大效果、强行推销或虚构优惠促成转化。', NOW(), NOW(), 'seed:sop:brd-supplement'),
|
|
(120201, '000000', 1202, 1, 'sop_daily_service_v1', '服务完成后要确认业主是否满意、是否还有遗留问题,并记录新的服务需求。', NOW(), NOW(), 'seed:sop:brd-supplement'),
|
|
(120202, '000000', 1202, 2, 'sop_daily_service_v1', '对未解决事项明确责任人、下一次反馈时间和记录方式,不能只说已经处理。', NOW(), NOW(), 'seed:sop:brd-supplement'),
|
|
(120203, '000000', 1202, 3, 'sop_daily_service_v1', '回访结束后更新服务记录;业主再次反馈时,应能沿用既有记录继续处理,避免重复询问。', NOW(), NOW(), 'seed:sop:brd-supplement')
|
|
ON DUPLICATE KEY UPDATE
|
|
`content` = VALUES(`content`),
|
|
`update_time` = NOW();
|
|
|
|
INSERT INTO `aihr_knowledge_acl`
|
|
(`tenant_id`, `knowledge_id`, `access_scope`, `project_code`, `position_name`, `position_level`, `classification`, `enabled`, `create_time`, `update_time`)
|
|
VALUES
|
|
('000000', 1001, 'POSITION', NULL, '生活顾问', '一线', 'INTERNAL', 1, NOW(), NOW()),
|
|
('000000', 1002, 'POSITION', NULL, '生活顾问', '一线', 'INTERNAL', 1, NOW(), NOW()),
|
|
('000000', 1003, 'POSITION', NULL, '生活顾问', '一线', 'INTERNAL', 1, NOW(), NOW())
|
|
ON DUPLICATE KEY UPDATE
|
|
`classification` = VALUES(`classification`),
|
|
`enabled` = VALUES(`enabled`),
|
|
`update_time` = NOW();
|
|
|
|
-- 知识库批量上传队列:上传秒回后由后台 worker 加工,支持单文件重试
|
|
CREATE TABLE IF NOT EXISTS `aihr_knowledge_upload_item` (
|
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
`tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号',
|
|
`batch_id` varchar(64) NOT NULL COMMENT '上传批次',
|
|
`file_name` varchar(255) NOT NULL COMMENT '文件名',
|
|
`category` varchar(100) DEFAULT '' COMMENT '目标分类',
|
|
`space_codes_json` json DEFAULT NULL COMMENT '目标知识空间编码数组',
|
|
`staging_path` varchar(500) NOT NULL COMMENT '暂存文件路径',
|
|
`source_attach_id` bigint DEFAULT NULL COMMENT '从既有附件重新解析时的附件ID',
|
|
`status` tinyint NOT NULL DEFAULT 0 COMMENT '0待处理 1处理中 2完成 3失败',
|
|
`error` varchar(500) DEFAULT NULL COMMENT '失败原因',
|
|
`doc_id` varchar(80) DEFAULT NULL COMMENT '入库文档ID',
|
|
`fragment_count` int DEFAULT NULL COMMENT '片段数',
|
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
|
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_aihr_upload_item_batch` (`tenant_id`, `batch_id`, `id`),
|
|
KEY `idx_aihr_upload_item_status` (`tenant_id`, `status`, `update_time`),
|
|
KEY `idx_aihr_upload_item_source` (`tenant_id`, `source_attach_id`, `id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='知识库批量上传队列';
|
|
|
|
CREATE TABLE IF NOT EXISTS `aihr_knowledge_space_grant` (
|
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
`tenant_id` varchar(20) NOT NULL COMMENT '租户编号',
|
|
`knowledge_id` bigint NOT NULL COMMENT '知识空间ID',
|
|
`principal_type` varchar(20) NOT NULL COMMENT 'ROLE/USER',
|
|
`principal_value` varchar(100) NOT NULL COMMENT '角色编码或用户ID',
|
|
`permission` varchar(20) NOT NULL COMMENT 'READ/MANAGE',
|
|
`status` varchar(20) NOT NULL DEFAULT 'ACTIVE' COMMENT 'ACTIVE/DISABLED',
|
|
`create_by` bigint DEFAULT NULL COMMENT '创建者',
|
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
|
`update_by` bigint DEFAULT NULL COMMENT '更新者',
|
|
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_aihr_space_grant` (`tenant_id`, `knowledge_id`, `principal_type`, `principal_value`, `permission`),
|
|
KEY `idx_aihr_space_grant_principal` (`tenant_id`, `principal_type`, `principal_value`, `status`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='知识空间主体授权';
|
|
|
|
CREATE TABLE IF NOT EXISTS `aihr_knowledge_app` (
|
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
`tenant_id` varchar(20) NOT NULL COMMENT '租户编号',
|
|
`app_code` varchar(64) NOT NULL COMMENT '调用应用稳定编码',
|
|
`app_name` varchar(100) NOT NULL COMMENT '调用应用名称',
|
|
`auth_type` varchar(20) NOT NULL COMMENT 'SESSION/API_TOKEN',
|
|
`internal_client_key` varchar(64) DEFAULT NULL COMMENT '内部登录客户端key',
|
|
`token_hash` varchar(64) DEFAULT NULL COMMENT '外部令牌SHA-256',
|
|
`status` varchar(20) NOT NULL DEFAULT 'ACTIVE' COMMENT 'ACTIVE/DISABLED',
|
|
`rate_limit_per_minute` int NOT NULL DEFAULT 60 COMMENT '每分钟请求上限',
|
|
`expires_time` datetime DEFAULT NULL COMMENT '令牌到期时间',
|
|
`last_used_time` datetime DEFAULT NULL COMMENT '最后调用时间',
|
|
`create_by` bigint DEFAULT NULL COMMENT '创建者',
|
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
|
`update_by` bigint DEFAULT NULL COMMENT '更新者',
|
|
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_aihr_knowledge_app_code` (`app_code`),
|
|
UNIQUE KEY `uk_aihr_knowledge_app_client` (`tenant_id`, `auth_type`, `internal_client_key`),
|
|
KEY `idx_aihr_knowledge_app_tenant_status` (`tenant_id`, `status`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='知识问答调用应用';
|
|
|
|
CREATE TABLE IF NOT EXISTS `aihr_knowledge_app_space` (
|
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
`tenant_id` varchar(20) NOT NULL COMMENT '租户编号',
|
|
`app_id` bigint NOT NULL COMMENT '调用应用ID',
|
|
`knowledge_id` bigint NOT NULL COMMENT '知识空间ID',
|
|
`create_by` bigint DEFAULT NULL COMMENT '创建者',
|
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_aihr_app_space` (`tenant_id`, `app_id`, `knowledge_id`),
|
|
KEY `idx_aihr_app_space_knowledge` (`tenant_id`, `knowledge_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='调用应用与知识空间授权';
|
|
|
|
CREATE TABLE IF NOT EXISTS `aihr_knowledge_query_log` (
|
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
`request_id` varchar(64) NOT NULL COMMENT '请求追踪ID',
|
|
`tenant_id` varchar(20) NOT NULL COMMENT '租户编号',
|
|
`app_id` bigint NOT NULL COMMENT '调用应用ID',
|
|
`user_id` bigint DEFAULT NULL COMMENT '内部用户ID',
|
|
`question_hash` varchar(64) NOT NULL COMMENT '问题SHA-256',
|
|
`used_space_codes_json` json DEFAULT NULL COMMENT '实际使用空间编码',
|
|
`source_types_json` json DEFAULT NULL COMMENT '来源类型',
|
|
`status` varchar(30) NOT NULL COMMENT 'SUCCESS/NO_EVIDENCE/REJECTED/FAILED',
|
|
`latency_ms` bigint NOT NULL DEFAULT 0 COMMENT '处理耗时毫秒',
|
|
`model_name` varchar(100) DEFAULT NULL COMMENT '生成模型',
|
|
`prompt_version` varchar(100) DEFAULT NULL COMMENT '提示词版本',
|
|
`create_time` datetime NOT NULL COMMENT '创建时间',
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_aihr_query_request` (`request_id`),
|
|
KEY `idx_aihr_query_tenant_app` (`tenant_id`, `app_id`, `create_time`),
|
|
KEY `idx_aihr_query_status` (`tenant_id`, `status`, `create_time`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='知识问答最小化审计日志';
|
|
|
|
CREATE TABLE IF NOT EXISTS `aihr_knowledge_conversation` (
|
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
`tenant_id` varchar(20) NOT NULL COMMENT '租户编号',
|
|
`app_id` bigint NOT NULL COMMENT '内部调用应用ID',
|
|
`user_id` bigint NOT NULL COMMENT '内部用户ID',
|
|
`conversation_id` varchar(64) NOT NULL COMMENT '客户端随机会话ID',
|
|
`project_code` varchar(100) DEFAULT NULL COMMENT '当前项目编码;多项目会话严格隔离',
|
|
`broadcast_message_id` bigint DEFAULT NULL COMMENT '绑定的公司消息ID;只存可信引用,不存消息正文',
|
|
`version` bigint NOT NULL DEFAULT 0 COMMENT '乐观并发版本',
|
|
`context_json` json DEFAULT NULL COMMENT '最近六轮脱敏短期上下文',
|
|
`state_version` bigint NOT NULL DEFAULT 0 COMMENT '受约束Agent结构化状态乐观版本',
|
|
`state_json` json DEFAULT NULL COMMENT '受控引用元数据和结构化槽位;不保存工具事实正文',
|
|
`expires_time` datetime NOT NULL COMMENT '不活跃过期时间',
|
|
`create_time` datetime NOT NULL COMMENT '创建时间',
|
|
`update_time` datetime NOT NULL COMMENT '更新时间',
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_aihr_knowledge_conversation` (`tenant_id`, `app_id`, `user_id`, `conversation_id`),
|
|
KEY `idx_aihr_knowledge_conversation_expire` (`tenant_id`, `expires_time`),
|
|
KEY `idx_aihr_knowledge_conversation_broadcast` (`tenant_id`, `broadcast_message_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='知识问答短期会话';
|
|
|
|
CREATE TABLE IF NOT EXISTS `aihr_knowledge_admin_audit` (
|
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
`tenant_id` varchar(20) NOT NULL COMMENT '租户编号',
|
|
`operator_id` bigint DEFAULT NULL COMMENT '操作人',
|
|
`action` varchar(50) NOT NULL COMMENT '操作动作',
|
|
`object_type` varchar(30) NOT NULL COMMENT 'SPACE/GRANT/APP/APP_SPACE/TOKEN',
|
|
`object_id` bigint DEFAULT NULL COMMENT '对象ID',
|
|
`before_summary` varchar(1000) DEFAULT NULL COMMENT '变更前摘要',
|
|
`after_summary` varchar(1000) DEFAULT NULL COMMENT '变更后摘要',
|
|
`create_time` datetime NOT NULL COMMENT '操作时间',
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_aihr_admin_audit_tenant` (`tenant_id`, `create_time`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='知识平台管理变更审计';
|
|
|
|
CREATE TABLE IF NOT EXISTS `aihr_agent_run` (
|
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
`run_id` varchar(64) NOT NULL COMMENT 'Agent 运行号',
|
|
`tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户编号',
|
|
`client_key` varchar(64) DEFAULT NULL COMMENT '调用客户端',
|
|
`user_id` bigint NOT NULL COMMENT '当前登录用户',
|
|
`conversation_id` varchar(64) DEFAULT NULL COMMENT '短会话ID',
|
|
`context_version` bigint DEFAULT NULL COMMENT '短会话版本',
|
|
`intent` varchar(40) NOT NULL COMMENT '受校验意图',
|
|
`tool` varchar(50) NOT NULL COMMENT '登记工具',
|
|
`status` varchar(30) NOT NULL COMMENT '最终状态',
|
|
`source_type` varchar(32) DEFAULT NULL COMMENT '主要事实来源',
|
|
`duration_ms` bigint NOT NULL DEFAULT 0 COMMENT '处理耗时毫秒',
|
|
`error_code` varchar(32) DEFAULT NULL COMMENT '脱敏错误码',
|
|
`result_ref` varchar(100) DEFAULT NULL COMMENT '领域结果类型引用',
|
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_aihr_agent_run` (`run_id`),
|
|
KEY `idx_aihr_agent_run_user` (`tenant_id`, `user_id`, `create_time`),
|
|
KEY `idx_aihr_agent_run_status` (`tenant_id`, `status`, `create_time`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='数字师傅 Agent 最小运行审计';
|