# Conflicts: # AGENTS.md # README.md # backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/domain/AihrPracticeDto.java # backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrOrgSyncService.java # backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java # backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrUploadQueueService.java # backend/ruoyi-modules/ruoyi-aihr/src/test/java/org/dromara/aihr/service/AihrOrgSyncServiceTest.java # backend/ruoyi-modules/ruoyi-aihr/src/test/java/org/dromara/aihr/service/AihrPracticeSeedServiceTest.java # backend/ruoyi-modules/ruoyi-aihr/src/test/java/org/dromara/aihr/service/AihrUploadQueueServiceTest.java # docs/20260708/uni-app用户侧前端重建计划.md # docs/API_INTEGRATION.md # docs/BRD_IMPLEMENTATION_AUDIT.md # docs/BRD_PRODUCTION_MIGRATION_RUNBOOK.md # docs/DEMO_ACCEPTANCE.md # docs/DEV_SETUP.md # docs/FIGMA_IMPLEMENTATION_MATRIX.md # docs/README.md # frontend/src/views/knowledge/processing.vue # mobile-uni/src/pages/supervisor/assign/index.vue # mobile-uni/src/pages/supervisor/index/index.vue # mobile-uni/src/pages/supervisor/profile/index.vue # mobile-uni/src/pages/supervisor/review/index.vue # mobile-uni/src/pages/supervisor/reviews/index.vue # mobile-uni/src/pages/supervisor/team/index.vue # mobile-uni/src/pages/user/cases/index.vue # mobile-uni/src/pages/user/practice/index.vue # mobile-uni/src/pages/user/profile/index.vue # mobile-uni/src/pages/user/sop/index.vue # mobile-uni/src/pages/user/today/index.vue # mobile-uni/src/types/api.ts # scripts/tests/aihr-schema-migrations.test.sh
127 lines
6.0 KiB
SQL
127 lines
6.0 KiB
SQL
-- AIHR 知识反馈与知识缺口日志迁移(MySQL 8.x)
|
|
-- 补齐生产不能依赖运行时懒建表的两张治理表;不写入业务数据,可重复执行。
|
|
|
|
CREATE TABLE IF NOT EXISTS `aihr_knowledge_gap` (
|
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
`tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci 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) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci 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',
|
|
`feedback_reason_codes` varchar(255) DEFAULT NULL COMMENT '未解决原因代码',
|
|
`feedback_comment` varchar(500) DEFAULT NULL COMMENT '未解决补充说明',
|
|
`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_reason_codes_exists := (
|
|
SELECT COUNT(*)
|
|
FROM information_schema.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE()
|
|
AND TABLE_NAME = 'aihr_knowledge_answer_feedback'
|
|
AND COLUMN_NAME = 'feedback_reason_codes'
|
|
);
|
|
SET @aihr_feedback_reason_codes_ddl := IF(
|
|
@aihr_feedback_table_exists = 1 AND @aihr_feedback_reason_codes_exists = 0,
|
|
'ALTER TABLE aihr_knowledge_answer_feedback ADD COLUMN `feedback_reason_codes` varchar(255) DEFAULT NULL COMMENT ''未解决原因代码'' AFTER `verdict`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE aihr_feedback_reason_codes_stmt FROM @aihr_feedback_reason_codes_ddl;
|
|
EXECUTE aihr_feedback_reason_codes_stmt;
|
|
DEALLOCATE PREPARE aihr_feedback_reason_codes_stmt;
|
|
|
|
SET @aihr_feedback_comment_exists := (
|
|
SELECT COUNT(*)
|
|
FROM information_schema.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE()
|
|
AND TABLE_NAME = 'aihr_knowledge_answer_feedback'
|
|
AND COLUMN_NAME = 'feedback_comment'
|
|
);
|
|
SET @aihr_feedback_comment_ddl := IF(
|
|
@aihr_feedback_table_exists = 1 AND @aihr_feedback_comment_exists = 0,
|
|
'ALTER TABLE aihr_knowledge_answer_feedback ADD COLUMN `feedback_comment` varchar(500) DEFAULT NULL COMMENT ''未解决补充说明'' AFTER `feedback_reason_codes`',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE aihr_feedback_comment_stmt FROM @aihr_feedback_comment_ddl;
|
|
EXECUTE aihr_feedback_comment_stmt;
|
|
DEALLOCATE PREPARE aihr_feedback_comment_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;
|