fix(aihr): version candidate interview review migration
This commit is contained in:
@@ -0,0 +1,196 @@
|
||||
-- AIHR 候选人资料、面试复核和入职关联迁移(MySQL 8.x)
|
||||
-- 仅补齐生产结构,不写入业务数据;可重复执行。
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `aihr_candidate_material` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
`tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号',
|
||||
`candidate_id` varchar(80) NOT NULL COMMENT '候选人外部ID',
|
||||
`candidate_name` varchar(100) DEFAULT NULL COMMENT '候选人姓名',
|
||||
`material_type` varchar(50) DEFAULT NULL COMMENT '资料类型',
|
||||
`file_name` varchar(255) NOT NULL COMMENT '文件名',
|
||||
`file_size` bigint DEFAULT 0 COMMENT '文件大小',
|
||||
`content_type` varchar(100) DEFAULT NULL COMMENT '文件MIME',
|
||||
`oss_id` bigint NOT NULL COMMENT '对象存储ID',
|
||||
`status` varchar(20) 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`),
|
||||
KEY `idx_aihr_candidate_material_candidate` (`tenant_id`, `candidate_id`, `id`),
|
||||
KEY `idx_aihr_candidate_material_review` (`tenant_id`, `status`, `id`),
|
||||
KEY `idx_aihr_candidate_material_oss` (`oss_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='AI HR 候选人补充资料';
|
||||
|
||||
SET @aihr_candidate_material_reviewer_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'aihr_candidate_material'
|
||||
AND COLUMN_NAME = 'reviewer'
|
||||
);
|
||||
SET @aihr_candidate_material_reviewer_ddl := IF(
|
||||
@aihr_candidate_material_reviewer_exists = 0,
|
||||
'ALTER TABLE aihr_candidate_material ADD COLUMN `reviewer` varchar(100) DEFAULT NULL COMMENT ''审核人''',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE aihr_candidate_material_reviewer_stmt FROM @aihr_candidate_material_reviewer_ddl;
|
||||
EXECUTE aihr_candidate_material_reviewer_stmt;
|
||||
DEALLOCATE PREPARE aihr_candidate_material_reviewer_stmt;
|
||||
|
||||
SET @aihr_candidate_material_reviewed_time_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'aihr_candidate_material'
|
||||
AND COLUMN_NAME = 'reviewed_time'
|
||||
);
|
||||
SET @aihr_candidate_material_reviewed_time_ddl := IF(
|
||||
@aihr_candidate_material_reviewed_time_exists = 0,
|
||||
'ALTER TABLE aihr_candidate_material ADD COLUMN `reviewed_time` datetime DEFAULT NULL COMMENT ''审核时间''',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE aihr_candidate_material_reviewed_time_stmt FROM @aihr_candidate_material_reviewed_time_ddl;
|
||||
EXECUTE aihr_candidate_material_reviewed_time_stmt;
|
||||
DEALLOCATE PREPARE aihr_candidate_material_reviewed_time_stmt;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `aihr_interview_result` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
`tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号',
|
||||
`session_id` varchar(100) NOT NULL COMMENT '面试会话ID',
|
||||
`candidate_id` varchar(80) DEFAULT NULL COMMENT '候选人ID',
|
||||
`candidate_name` varchar(100) DEFAULT NULL COMMENT '候选人姓名',
|
||||
`position_code` varchar(120) DEFAULT NULL COMMENT '岗位',
|
||||
`total_score` int DEFAULT NULL COMMENT '总分',
|
||||
`reviewed_score` int DEFAULT NULL COMMENT '人工复核分',
|
||||
`review_status` varchar(20) DEFAULT '待复核' COMMENT '人工复核状态',
|
||||
`reviewer` varchar(100) DEFAULT NULL COMMENT '复核人',
|
||||
`review_note` varchar(1000) DEFAULT NULL COMMENT '人工复核意见',
|
||||
`reviewed_time` datetime DEFAULT NULL COMMENT '复核时间',
|
||||
`result` varchar(40) DEFAULT NULL COMMENT '结论',
|
||||
`suggestion` varchar(500) DEFAULT NULL COMMENT '建议',
|
||||
`ai_summary` varchar(1000) DEFAULT NULL COMMENT 'AI摘要',
|
||||
`evidence` varchar(1000) DEFAULT NULL COMMENT '评分依据',
|
||||
`source` varchar(40) DEFAULT NULL COMMENT '评分来源',
|
||||
`answers_json` text DEFAULT NULL COMMENT '候选人回答JSON',
|
||||
`questions_json` text DEFAULT NULL COMMENT '面试问题与回答快照JSON',
|
||||
`dimensions_json` text DEFAULT NULL COMMENT '维度评分JSON',
|
||||
`finished_time` datetime DEFAULT NULL COMMENT '完成时间',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_aihr_interview_session` (`tenant_id`, `session_id`),
|
||||
KEY `idx_aihr_interview_candidate` (`tenant_id`, `candidate_id`, `finished_time`),
|
||||
KEY `idx_aihr_interview_finished` (`tenant_id`, `finished_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='AI HR 面试结果';
|
||||
|
||||
SET @aihr_interview_result_questions_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'aihr_interview_result'
|
||||
AND COLUMN_NAME = 'questions_json'
|
||||
);
|
||||
SET @aihr_interview_result_questions_ddl := IF(
|
||||
@aihr_interview_result_questions_exists = 0,
|
||||
'ALTER TABLE aihr_interview_result ADD COLUMN `questions_json` text DEFAULT NULL COMMENT ''面试问题与回答快照JSON''',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE aihr_interview_result_questions_stmt FROM @aihr_interview_result_questions_ddl;
|
||||
EXECUTE aihr_interview_result_questions_stmt;
|
||||
DEALLOCATE PREPARE aihr_interview_result_questions_stmt;
|
||||
|
||||
SET @aihr_interview_reviewed_score_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'aihr_interview_result'
|
||||
AND COLUMN_NAME = 'reviewed_score'
|
||||
);
|
||||
SET @aihr_interview_reviewed_score_ddl := IF(
|
||||
@aihr_interview_reviewed_score_exists = 0,
|
||||
'ALTER TABLE aihr_interview_result ADD COLUMN `reviewed_score` int DEFAULT NULL COMMENT ''人工复核分''',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE aihr_interview_reviewed_score_stmt FROM @aihr_interview_reviewed_score_ddl;
|
||||
EXECUTE aihr_interview_reviewed_score_stmt;
|
||||
DEALLOCATE PREPARE aihr_interview_reviewed_score_stmt;
|
||||
|
||||
SET @aihr_interview_review_status_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'aihr_interview_result'
|
||||
AND COLUMN_NAME = 'review_status'
|
||||
);
|
||||
SET @aihr_interview_review_status_ddl := IF(
|
||||
@aihr_interview_review_status_exists = 0,
|
||||
'ALTER TABLE aihr_interview_result ADD COLUMN `review_status` varchar(20) DEFAULT ''待复核'' COMMENT ''人工复核状态''',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE aihr_interview_review_status_stmt FROM @aihr_interview_review_status_ddl;
|
||||
EXECUTE aihr_interview_review_status_stmt;
|
||||
DEALLOCATE PREPARE aihr_interview_review_status_stmt;
|
||||
|
||||
SET @aihr_interview_reviewer_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'aihr_interview_result'
|
||||
AND COLUMN_NAME = 'reviewer'
|
||||
);
|
||||
SET @aihr_interview_reviewer_ddl := IF(
|
||||
@aihr_interview_reviewer_exists = 0,
|
||||
'ALTER TABLE aihr_interview_result ADD COLUMN `reviewer` varchar(100) DEFAULT NULL COMMENT ''复核人''',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE aihr_interview_reviewer_stmt FROM @aihr_interview_reviewer_ddl;
|
||||
EXECUTE aihr_interview_reviewer_stmt;
|
||||
DEALLOCATE PREPARE aihr_interview_reviewer_stmt;
|
||||
|
||||
SET @aihr_interview_review_note_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'aihr_interview_result'
|
||||
AND COLUMN_NAME = 'review_note'
|
||||
);
|
||||
SET @aihr_interview_review_note_ddl := IF(
|
||||
@aihr_interview_review_note_exists = 0,
|
||||
'ALTER TABLE aihr_interview_result ADD COLUMN `review_note` varchar(1000) DEFAULT NULL COMMENT ''人工复核意见''',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE aihr_interview_review_note_stmt FROM @aihr_interview_review_note_ddl;
|
||||
EXECUTE aihr_interview_review_note_stmt;
|
||||
DEALLOCATE PREPARE aihr_interview_review_note_stmt;
|
||||
|
||||
SET @aihr_interview_reviewed_time_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'aihr_interview_result'
|
||||
AND COLUMN_NAME = 'reviewed_time'
|
||||
);
|
||||
SET @aihr_interview_reviewed_time_ddl := IF(
|
||||
@aihr_interview_reviewed_time_exists = 0,
|
||||
'ALTER TABLE aihr_interview_result ADD COLUMN `reviewed_time` datetime DEFAULT NULL COMMENT ''复核时间''',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE aihr_interview_reviewed_time_stmt FROM @aihr_interview_reviewed_time_ddl;
|
||||
EXECUTE aihr_interview_reviewed_time_stmt;
|
||||
DEALLOCATE PREPARE aihr_interview_reviewed_time_stmt;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `aihr_candidate_employee_link` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
`tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号',
|
||||
`candidate_id` varchar(80) NOT NULL COMMENT '本地候选人ID',
|
||||
`ext_party_id` varchar(100) NOT NULL COMMENT '外部员工主体ID',
|
||||
`status` varchar(20) DEFAULT '已关联' COMMENT '关联状态',
|
||||
`linked_by` varchar(100) DEFAULT NULL COMMENT '关联操作人',
|
||||
`linked_time` datetime DEFAULT NULL COMMENT '关联时间',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_aihr_candidate_employee_link_candidate` (`tenant_id`, `candidate_id`),
|
||||
UNIQUE KEY `uk_aihr_candidate_employee_link_party` (`tenant_id`, `ext_party_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='AI HR 候选人与员工主体关联';
|
||||
Reference in New Issue
Block a user