This commit is contained in:
Your Name
2026-03-27 18:06:12 +08:00
parent 9160c36735
commit 099bc1dd22
645 changed files with 276473 additions and 957 deletions
@@ -0,0 +1,3 @@
-- 预约表:渠道来源(字典 type_value = channels
ALTER TABLE `zyt_doctor_appointment`
ADD COLUMN `channel_source` varchar(64) NOT NULL DEFAULT '' COMMENT '渠道来源(字典channels)' AFTER `remark`;
@@ -0,0 +1,18 @@
-- 医生排班:一条记录 = 一段连续可挂号时间(支持同日多段、白班/夜班)
-- 表前缀默认 zyt_,与 config/database.php 中 prefix 一致
ALTER TABLE `zyt_doctor_roster`
ADD COLUMN `start_time` varchar(5) DEFAULT NULL COMMENT '接诊开始 HH:mm' AFTER `period`,
ADD COLUMN `end_time` varchar(5) DEFAULT NULL COMMENT '接诊结束 HH:mm' AFTER `start_time`,
ADD COLUMN `shift_type` varchar(20) DEFAULT NULL COMMENT 'day白班/night夜班' AFTER `end_time`,
ADD COLUMN `slot_minutes` smallint unsigned NOT NULL DEFAULT 15 COMMENT '号源间隔分钟' AFTER `shift_type`;
-- 历史数据:按原上午/下午补全时间
UPDATE `zyt_doctor_roster` SET `start_time`='09:00', `end_time`='12:00' WHERE `period`='morning' AND (`start_time` IS NULL OR `start_time`='');
UPDATE `zyt_doctor_roster` SET `start_time`='14:00', `end_time`='18:00' WHERE `period`='afternoon' AND (`start_time` IS NULL OR `start_time`='');
-- 原唯一键限制「每天仅上午+下午」,需改为按时段区分
ALTER TABLE `zyt_doctor_roster` DROP INDEX `uk_doctor_date_period`;
-- 防止同一天重复录入完全相同的时间段(含软删字段,与 ThinkPHP 软删一致)
ALTER TABLE `zyt_doctor_roster` ADD UNIQUE KEY `uk_doctor_date_segment` (`doctor_id`,`date`,`start_time`,`end_time`,`delete_time`);
@@ -0,0 +1,3 @@
-- 药材库:拼音首字母连写,供列表检索(如 甘草 -> gc)
ALTER TABLE `zyt_doctor_medicine`
ADD COLUMN `name_pinyin_abbr` varchar(64) NOT NULL DEFAULT '' COMMENT '名称拼音首字母(小写连写)' AFTER `name`;
@@ -0,0 +1,27 @@
-- 诊单腾讯云 IM 单聊消息归档(定时从 admin_getroammsg 同步,突破云端约 7 天漫游限制)
-- 执行前请确认库名与表前缀(默认前缀 zyt_)
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聊天记录归档';