Files
prop-ai-hr/backend/script/sql/aihr_knowledge_mysql8.sql
T
admin 939fba85ff feat(aihr): support cancelling running local import tasks
新增 POST /api/knowledge/doc/import-tasks/{id}/cancel,后台目录导入任务
运行中可取消;资料处理页任务列表接取消按钮与状态刷新。
2026-07-03 21:45:38 +08:00

127 lines
8.6 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) DEFAULT '000000' COMMENT '租户编号',
`name` varchar(100) NOT NULL COMMENT '知识库名称',
`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`),
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) DEFAULT '000000' COMMENT '租户编号',
`knowledge_id` bigint NOT 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`),
UNIQUE KEY `uk_aihr_knowledge_attach_name` (`knowledge_id`, `name`),
KEY `idx_aihr_knowledge_attach_doc` (`doc_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='AI HR 知识库附件';
CREATE TABLE IF NOT EXISTS `aihr_knowledge_fragment` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`tenant_id` varchar(20) 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_import_task` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`tenant_id` varchar(20) 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`, `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', '业主投诉的接待、记录、派单、反馈和闭环确认。', '\n\n', 120, 5, 0.5, 800, NULL, NULL, 1, 1.0, '回答必须引用投诉处理 SOP 片段,不得编造未命中的金额、责任和时限。', NOW(), NOW(), 'seed:sop'),
(1002, '000000', '催缴沟通 SOP', '缴费提醒、费用争议回应、服务问题承接。', '\n\n', 120, 5, 0.5, 800, NULL, NULL, 1, 1.0, '回答必须区分服务整改与费用义务。', NOW(), NOW(), 'seed:sop'),
(1003, '000000', '报修跟进 SOP', '报修接单、派工、现场反馈、复核关闭。', '\n\n', 120, 5, 0.5, 800, NULL, NULL, 1, 1.0, '回答必须给出明确节点和责任人。', NOW(), NOW(), 'seed:sop')
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:工程组')
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')
ON DUPLICATE KEY UPDATE
`content` = VALUES(`content`),
`update_time` = NOW();