-- 医生排班：一条记录 = 一段连续可挂号时间（支持同日多段、白班/夜班）
-- 表前缀默认 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`);
