From 0e2cc42a419fe82ea098009b1b841bc847f5c20f Mon Sep 17 00:00:00 2001 From: Peanut Date: Sun, 28 Jun 2026 16:50:31 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=96=B0=E5=A2=9E=E5=89=A7=E6=9C=AC?= =?UTF-8?q?=E5=AF=B9=E8=AF=9D=E5=85=B3=E8=81=94=E5=AD=97=E6=AE=B5=E8=BF=81?= =?UTF-8?q?=E7=A7=BB=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../V20260628__script_dialogue_relation.sql | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 server/src/main/resources/db/migration/V20260628__script_dialogue_relation.sql diff --git a/server/src/main/resources/db/migration/V20260628__script_dialogue_relation.sql b/server/src/main/resources/db/migration/V20260628__script_dialogue_relation.sql new file mode 100644 index 0000000..c6d2854 --- /dev/null +++ b/server/src/main/resources/db/migration/V20260628__script_dialogue_relation.sql @@ -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 = '';