fix(aihr): version knowledge feedback migrations

This commit is contained in:
2026-07-15 00:51:42 +08:00
parent d246bbeae7
commit d9fec80e6c
5 changed files with 129 additions and 3 deletions
@@ -0,0 +1,92 @@
-- AIHR 知识反馈与知识缺口日志迁移(MySQL 8.x)
-- 补齐生产不能依赖运行时懒建表的两张治理表;不写入业务数据,可重复执行。
CREATE TABLE IF NOT EXISTS `aihr_knowledge_gap` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号',
`query_text` varchar(1000) NOT NULL COMMENT '未命中问题',
`category` varchar(100) DEFAULT NULL COMMENT '知识分类',
`position` varchar(80) DEFAULT NULL COMMENT '岗位',
`source` varchar(50) DEFAULT 'knowledge_search' COMMENT '来源',
`status` varchar(30) DEFAULT '待补充' COMMENT '状态',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_aihr_knowledge_gap_status` (`tenant_id`, `status`, `create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='AI HR 知识缺口日志';
CREATE TABLE IF NOT EXISTS `aihr_knowledge_answer_feedback` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号',
`query_text` varchar(1000) NOT NULL COMMENT '问题原文',
`query_norm` varchar(500) NOT NULL COMMENT '规范化问题',
`fragment_id` bigint NOT NULL COMMENT '知识片段ID',
`verdict` varchar(10) NOT NULL COMMENT '反馈: up/down',
`category` varchar(100) DEFAULT NULL COMMENT '知识分类',
`position` varchar(80) DEFAULT NULL COMMENT '岗位',
`source` varchar(50) DEFAULT 'knowledge_search' COMMENT '来源',
`review_id` bigint DEFAULT NULL COMMENT '对应SOP问答评审ID',
`review_status` varchar(30) DEFAULT '待复核' COMMENT '复核状态',
`reviewer` varchar(100) DEFAULT NULL COMMENT '复核人',
`reviewed_time` datetime DEFAULT NULL COMMENT '复核时间',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_aihr_answer_feedback_pair` (`tenant_id`, `query_norm`, `fragment_id`),
KEY `idx_aihr_answer_feedback_verdict` (`tenant_id`, `query_norm`, `fragment_id`, `verdict`),
KEY `idx_aihr_answer_feedback_review` (`tenant_id`, `review_status`, `create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='AI HR 知识答案反馈';
SET @aihr_feedback_table_exists := (
SELECT COUNT(*)
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'aihr_knowledge_answer_feedback'
);
SET @aihr_feedback_review_id_exists := (
SELECT COUNT(*)
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'aihr_knowledge_answer_feedback'
AND COLUMN_NAME = 'review_id'
);
SET @aihr_feedback_review_id_ddl := IF(
@aihr_feedback_table_exists = 1 AND @aihr_feedback_review_id_exists = 0,
'ALTER TABLE aihr_knowledge_answer_feedback ADD COLUMN `review_id` bigint DEFAULT NULL COMMENT ''对应SOP问答评审ID'' AFTER `source`',
'SELECT 1'
);
PREPARE aihr_feedback_review_id_stmt FROM @aihr_feedback_review_id_ddl;
EXECUTE aihr_feedback_review_id_stmt;
DEALLOCATE PREPARE aihr_feedback_review_id_stmt;
SET @aihr_feedback_reviewer_exists := (
SELECT COUNT(*)
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'aihr_knowledge_answer_feedback'
AND COLUMN_NAME = 'reviewer'
);
SET @aihr_feedback_reviewer_ddl := IF(
@aihr_feedback_table_exists = 1 AND @aihr_feedback_reviewer_exists = 0,
'ALTER TABLE aihr_knowledge_answer_feedback ADD COLUMN `reviewer` varchar(100) DEFAULT NULL COMMENT ''复核人'' AFTER `review_status`',
'SELECT 1'
);
PREPARE aihr_feedback_reviewer_stmt FROM @aihr_feedback_reviewer_ddl;
EXECUTE aihr_feedback_reviewer_stmt;
DEALLOCATE PREPARE aihr_feedback_reviewer_stmt;
SET @aihr_feedback_reviewed_time_exists := (
SELECT COUNT(*)
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'aihr_knowledge_answer_feedback'
AND COLUMN_NAME = 'reviewed_time'
);
SET @aihr_feedback_reviewed_time_ddl := IF(
@aihr_feedback_table_exists = 1 AND @aihr_feedback_reviewed_time_exists = 0,
'ALTER TABLE aihr_knowledge_answer_feedback ADD COLUMN `reviewed_time` datetime DEFAULT NULL COMMENT ''复核时间'' AFTER `reviewer`',
'SELECT 1'
);
PREPARE aihr_feedback_reviewed_time_stmt FROM @aihr_feedback_reviewed_time_ddl;
EXECUTE aihr_feedback_reviewed_time_stmt;
DEALLOCATE PREPARE aihr_feedback_reviewed_time_stmt;