59 lines
3.2 KiB
SQL
59 lines
3.2 KiB
SQL
-- 公司消息 R2:单文件异步提炼、原文件受控下载及消息追问上下文。
|
|
-- 可重复执行,需在 aihr_20260723_broadcast_targeting_mysql8.sql 之后执行。
|
|
|
|
CREATE TABLE IF NOT EXISTS `aihr_broadcast_attachment` (
|
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '公司文件ID',
|
|
`tenant_id` varchar(20) NOT NULL COMMENT '租户编号',
|
|
`message_id` bigint DEFAULT NULL COMMENT '绑定的公司消息ID',
|
|
`oss_id` bigint NOT NULL COMMENT '原文件OSS编号',
|
|
`file_name` varchar(255) NOT NULL COMMENT '原文件名',
|
|
`file_size` bigint NOT NULL COMMENT '文件字节数',
|
|
`content_type` varchar(100) NOT NULL COMMENT '内容类型',
|
|
`status` varchar(20) NOT NULL DEFAULT 'QUEUED' COMMENT 'QUEUED/PROCESSING/READY/FAILED',
|
|
`extracted_text` longtext DEFAULT NULL COMMENT '提取文本,仅供服务端上下文使用',
|
|
`summary` varchar(1000) DEFAULT NULL COMMENT 'AI提炼摘要',
|
|
`error_message` varchar(500) DEFAULT NULL COMMENT '公开失败说明',
|
|
`uploaded_by` bigint NOT NULL COMMENT '上传账号ID',
|
|
`create_time` datetime NOT NULL COMMENT '上传时间',
|
|
`update_time` datetime NOT NULL COMMENT '更新时间',
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_aihr_broadcast_attachment_oss` (`tenant_id`, `oss_id`),
|
|
UNIQUE KEY `uk_aihr_broadcast_attachment_message` (`tenant_id`, `message_id`),
|
|
KEY `idx_aihr_broadcast_attachment_queue` (`status`, `update_time`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='银城大喇叭公司文件提炼';
|
|
|
|
SET @has_broadcast_attachment_id := (
|
|
SELECT COUNT(*) FROM information_schema.COLUMNS
|
|
WHERE table_schema = DATABASE() AND table_name = 'aihr_broadcast_message'
|
|
AND column_name = 'attachment_id'
|
|
);
|
|
SET @broadcast_attachment_ddl := IF(
|
|
@has_broadcast_attachment_id = 0,
|
|
'ALTER TABLE aihr_broadcast_message ADD COLUMN attachment_id bigint DEFAULT NULL COMMENT ''公司文件ID'' AFTER content, ADD KEY idx_aihr_broadcast_message_attachment (tenant_id, attachment_id)',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE aihr_broadcast_attachment_stmt FROM @broadcast_attachment_ddl; EXECUTE aihr_broadcast_attachment_stmt; DEALLOCATE PREPARE aihr_broadcast_attachment_stmt;
|
|
|
|
SET @broadcast_attachment_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 @broadcast_attachment_target_collation := COALESCE(@broadcast_attachment_target_collation, @@collation_database);
|
|
SET @broadcast_attachment_table_collation := (
|
|
SELECT table_collation FROM information_schema.tables
|
|
WHERE table_schema = DATABASE() AND table_name = 'aihr_broadcast_attachment'
|
|
LIMIT 1
|
|
);
|
|
SET @broadcast_attachment_ddl := IF(
|
|
@broadcast_attachment_table_collation = @broadcast_attachment_target_collation,
|
|
'SELECT 1',
|
|
CONCAT('ALTER TABLE aihr_broadcast_attachment CONVERT TO CHARACTER SET utf8mb4 COLLATE ', @broadcast_attachment_target_collation)
|
|
);
|
|
PREPARE aihr_broadcast_attachment_stmt FROM @broadcast_attachment_ddl; EXECUTE aihr_broadcast_attachment_stmt; DEALLOCATE PREPARE aihr_broadcast_attachment_stmt;
|
|
|
|
SET @has_broadcast_attachment_id := NULL;
|
|
SET @broadcast_attachment_target_collation := NULL;
|
|
SET @broadcast_attachment_table_collation := NULL;
|
|
SET @broadcast_attachment_ddl := NULL;
|