chore: 新增剧本对话关联字段迁移脚本

This commit is contained in:
2026-06-28 16:50:31 +08:00
parent 6bc00863fa
commit 0e2cc42a41
@@ -0,0 +1,45 @@
-- 剧本表新增对话关联字段
ALTER TABLE t_epic_script
ADD COLUMN conversation_id VARCHAR(64) DEFAULT NULL COMMENT '关联对话ID',
ADD COLUMN current_version_message_id VARCHAR(64) DEFAULT NULL COMMENT '当前生效版本消息ID',
ADD UNIQUE KEY uk_user_conversation (user_id, conversation_id),
ADD KEY idx_conversation_id (conversation_id);
-- 对话表新增剧本关联字段
ALTER TABLE t_conversation
ADD COLUMN script_id VARCHAR(64) DEFAULT NULL COMMENT '关联剧本ID',
ADD COLUMN current_message_id VARCHAR(64) DEFAULT NULL COMMENT '当前生效的剧本消息ID',
ADD KEY idx_script_id (script_id),
ADD KEY idx_user_type (user_id, type);
-- 消息表新增剧本关联和版本字段
ALTER TABLE t_message
ADD COLUMN script_id VARCHAR(64) DEFAULT NULL COMMENT '关联剧本ID(冗余字段)',
ADD COLUMN version_number INT DEFAULT 0 COMMENT '版本序号(同一parent_message_id下递增)',
ADD KEY idx_script_id (script_id),
ADD KEY idx_parent_message_id (parent_message_id);
-- 注意:type、metadata 字段已存在,无需新增
-- 历史数据回填:根据 plot_json 中的 conversationId 回填 t_epic_script.conversation_id
UPDATE t_epic_script s
LEFT JOIN t_conversation c ON c.id = JSON_UNQUOTE(JSON_EXTRACT(s.plot_json, '$.conversationId'))
SET s.conversation_id = c.id
WHERE s.conversation_id IS NULL
AND JSON_UNQUOTE(JSON_EXTRACT(s.plot_json, '$.conversationId')) IS NOT NULL;
-- 历史数据回填:根据 conversation_id 回填 t_conversation.script_id
UPDATE t_conversation c
JOIN t_epic_script s ON s.conversation_id = c.id
SET c.script_id = s.id
WHERE c.script_id IS NULL;
-- 历史消息回填 script_id 和 type
UPDATE t_message m
JOIN t_conversation c ON c.id = m.conversation_id
SET m.script_id = c.script_id
WHERE c.script_id IS NOT NULL;
UPDATE t_message
SET type = 'chat'
WHERE type IS NULL OR type = '';