chore: 新增剧本对话关联字段迁移脚本
This commit is contained in:
@@ -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 = '';
|
||||
Reference in New Issue
Block a user