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