fix(knowledge): gate policy answers by formal sources
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
-- 正式知识来源治理:附件级权威性、发布状态、版本、生效期和原文件哈希。
|
||||
-- 只创建治理契约,不把任何既有附件自动认定为正式来源。
|
||||
-- 可重复执行;生产请求只读校验,不允许在运行时补表。
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `aihr_knowledge_source_governance` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
`tenant_id` varchar(20) NOT NULL COMMENT '租户编号',
|
||||
`source_id` varchar(80) NOT NULL COMMENT '稳定来源编号',
|
||||
`attachment_id` bigint NOT NULL COMMENT '知识附件ID',
|
||||
`source_doc_id` varchar(80) NOT NULL COMMENT '审批时附件文档ID快照',
|
||||
`authority_type` varchar(30) NOT NULL COMMENT 'FORMAL_POLICY/TRAINING/EXPERIENCE/INTERVIEW/DRAFT',
|
||||
`lifecycle_status` varchar(20) NOT NULL DEFAULT 'DRAFT' COMMENT 'DRAFT/APPROVED/REJECTED/RETIRED',
|
||||
`source_version` varchar(80) NOT NULL COMMENT '正式版本或发文号',
|
||||
`effective_date` date NOT NULL COMMENT '生效日期',
|
||||
`expires_date` date DEFAULT NULL COMMENT '失效日期',
|
||||
`applicability_scope` varchar(500) NOT NULL COMMENT '适用范围',
|
||||
`content_sha256` char(64) NOT NULL COMMENT '审批时原文件SHA-256',
|
||||
`approval_basis` varchar(255) NOT NULL COMMENT '审批依据或受控试点决策',
|
||||
`approved_by` varchar(100) DEFAULT NULL COMMENT '审批主体',
|
||||
`approved_time` datetime DEFAULT NULL COMMENT '审批时间',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_aihr_knowledge_source_id` (`tenant_id`, `source_id`),
|
||||
UNIQUE KEY `uk_aihr_knowledge_source_attachment` (`tenant_id`, `attachment_id`),
|
||||
KEY `idx_aihr_knowledge_source_retrieval`
|
||||
(`tenant_id`, `authority_type`, `lifecycle_status`, `effective_date`, `expires_date`),
|
||||
KEY `idx_aihr_knowledge_source_doc` (`tenant_id`, `source_doc_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
|
||||
COMMENT='AIHR知识附件来源治理';
|
||||
|
||||
-- 与租户事实表保持同一排序规则,兼容历史库和全新 MySQL 8 数据库。
|
||||
SET @formal_source_target_collation := (
|
||||
SELECT collation_name FROM information_schema.columns
|
||||
WHERE table_schema = DATABASE()
|
||||
AND table_name = 'aihr_knowledge_info'
|
||||
AND column_name = 'tenant_id'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @formal_source_target_collation := COALESCE(@formal_source_target_collation, @@collation_database);
|
||||
SET @formal_source_table_collation := (
|
||||
SELECT table_collation FROM information_schema.tables
|
||||
WHERE table_schema = DATABASE()
|
||||
AND table_name = 'aihr_knowledge_source_governance'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @formal_source_ddl := IF(
|
||||
@formal_source_table_collation = @formal_source_target_collation,
|
||||
'SELECT 1',
|
||||
CONCAT(
|
||||
'ALTER TABLE aihr_knowledge_source_governance ',
|
||||
'CONVERT TO CHARACTER SET utf8mb4 COLLATE ',
|
||||
@formal_source_target_collation
|
||||
)
|
||||
);
|
||||
PREPARE aihr_formal_source_stmt FROM @formal_source_ddl;
|
||||
EXECUTE aihr_formal_source_stmt;
|
||||
DEALLOCATE PREPARE aihr_formal_source_stmt;
|
||||
|
||||
SET @formal_source_target_collation := NULL;
|
||||
SET @formal_source_table_collation := NULL;
|
||||
SET @formal_source_ddl := NULL;
|
||||
Reference in New Issue
Block a user