fix(aihr): recover stalled media processing

This commit is contained in:
key
2026-07-29 15:09:01 +08:00
parent f17b904b5c
commit 652e48884b
18 changed files with 838 additions and 76 deletions
+3 -1
View File
@@ -199,6 +199,7 @@ CREATE TABLE IF NOT EXISTS `aihr_knowledge_upload_item` (
`category` varchar(100) DEFAULT '' COMMENT '目标分类',
`space_codes_json` json DEFAULT NULL COMMENT '目标知识空间编码数组',
`staging_path` varchar(500) NOT NULL COMMENT '暂存文件路径',
`source_attach_id` bigint DEFAULT NULL COMMENT '从既有附件重新解析时的附件ID',
`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',
@@ -207,7 +208,8 @@ CREATE TABLE IF NOT EXISTS `aihr_knowledge_upload_item` (
`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`)
KEY `idx_aihr_upload_item_status` (`tenant_id`, `status`, `update_time`),
KEY `idx_aihr_upload_item_source` (`tenant_id`, `source_attach_id`, `id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='知识库批量上传队列';
CREATE TABLE IF NOT EXISTS `aihr_knowledge_space_grant` (
@@ -0,0 +1,36 @@
-- 资料处理媒体重试:记录从既有知识附件重新解析的来源,支持直接从 OSS 原件重新入队。
-- 可重复执行;依赖 aihr_knowledge_upload_item。
SET @has_source_attach_id := (
SELECT COUNT(*) FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name = 'aihr_knowledge_upload_item'
AND column_name = 'source_attach_id'
);
SET @media_reprocess_ddl := IF(
@has_source_attach_id = 0,
'ALTER TABLE aihr_knowledge_upload_item ADD COLUMN source_attach_id bigint DEFAULT NULL COMMENT ''从既有附件重新解析时的附件ID'' AFTER staging_path',
'SELECT 1'
);
PREPARE media_reprocess_stmt FROM @media_reprocess_ddl;
EXECUTE media_reprocess_stmt;
DEALLOCATE PREPARE media_reprocess_stmt;
SET @has_media_source_index := (
SELECT COUNT(*) FROM information_schema.statistics
WHERE table_schema = DATABASE()
AND table_name = 'aihr_knowledge_upload_item'
AND index_name = 'idx_aihr_upload_item_source'
);
SET @media_reprocess_ddl := IF(
@has_media_source_index = 0,
'ALTER TABLE aihr_knowledge_upload_item ADD KEY idx_aihr_upload_item_source (tenant_id, source_attach_id, id)',
'SELECT 1'
);
PREPARE media_reprocess_stmt FROM @media_reprocess_ddl;
EXECUTE media_reprocess_stmt;
DEALLOCATE PREPARE media_reprocess_stmt;
SET @has_source_attach_id := NULL;
SET @has_media_source_index := NULL;
SET @media_reprocess_ddl := NULL;