-- 诊单腾讯云 IM 单聊消息归档（定时从 admin_getroammsg 同步，突破云端约 7 天漫游限制）
-- 已在生产部分环境创建（参见 server/database/migrations/create_tcm_im_chat_message.sql）
-- 此处使用 IF NOT EXISTS 安全重入，确保新环境部署时一并建表

CREATE TABLE IF NOT EXISTS `zyt_tcm_im_chat_message` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `diagnosis_id` int unsigned NOT NULL DEFAULT 0 COMMENT '诊单ID',
  `patient_id` int unsigned NOT NULL DEFAULT 0 COMMENT '患者ID（冗余，便于按患者维度排查/统计）',
  `msg_id` varchar(160) NOT NULL DEFAULT '' COMMENT '业务唯一键：MsgSeq_MsgRandom_From_Account',
  `from_account` varchar(64) NOT NULL DEFAULT '' COMMENT '发送方 IM UserID',
  `to_account` varchar(64) NOT NULL DEFAULT '' COMMENT '接收方 IM UserID',
  `msg_time` int unsigned NOT NULL DEFAULT 0 COMMENT '消息时间 Unix 时间戳',
  `is_from_doctor` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '是否医生/医助侧发送',
  `msg_type` varchar(32) NOT NULL DEFAULT '' COMMENT 'text/image/file/sound/video/custom/...',
  `text` mediumtext COMMENT '文本或自定义消息 Data',
  `image_url` varchar(1024) NOT NULL DEFAULT '' COMMENT '图片 URL',
  `file_url` varchar(1024) NOT NULL DEFAULT '' COMMENT '文件/语音/视频 URL',
  `file_name` varchar(512) NOT NULL DEFAULT '' COMMENT '文件名',
  `raw_elem_type` varchar(64) NOT NULL DEFAULT '' COMMENT 'TIM 元素类型',
  `from_staff_name` varchar(64) NOT NULL DEFAULT '' COMMENT '医生侧姓名快照',
  `doctor_peer_account` varchar(64) NOT NULL DEFAULT '' COMMENT '拉取会话时使用的医生侧账号 doctor_*',
  `create_time` int unsigned NOT NULL DEFAULT 0 COMMENT '入库时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_msg_id` (`msg_id`),
  KEY `idx_diagnosis_time` (`diagnosis_id`,`msg_time`),
  KEY `idx_patient_time` (`patient_id`,`msg_time`),
  KEY `idx_msg_time` (`msg_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='诊单IM聊天记录归档';
