Files
prop-ai-hr/backend/script/sql/aihr_knowledge_mysql8.sql
T

338 lines
24 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`),
UNIQUE KEY `uk_aihr_knowledge_attach_name` (`knowledge_id`, `name`),
KEY `idx_aihr_knowledge_attach_doc` (`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_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 '暂存文件路径',
`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`)
) 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 '最近六轮脱敏短期上下文',
`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 最小运行审计';