30 lines
2.3 KiB
SQL
30 lines
2.3 KiB
SQL
-- 诊单待办事项(T5 - 2026-05-05)
|
||
-- 用途:医助在诊单上挂「将来要提醒自己的事」,到点由企微推送给创建人本人。
|
||
-- 设计:状态机 0=待执行 → 1=已发送(成功)/ 2=已取消(人工) / 3=发送失败(终态,不重试)
|
||
-- 索引说明:
|
||
-- idx_diagnosis_id —— 编辑页/列表按诊单查询
|
||
-- idx_creator_id —— 反查某 admin 创建过的待办(取消权限校验等)
|
||
-- idx_status_remind_time —— 复合索引,cron 扫表「status=0 AND remind_time<=now」核心索引
|
||
|
||
CREATE TABLE IF NOT EXISTS `zyt_tcm_diagnosis_todo` (
|
||
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||
`diagnosis_id` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '所属诊单 id(zyt_tcm_diagnosis.id)',
|
||
`patient_id` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '冗余患者 id,便于反查',
|
||
`content` varchar(500) NOT NULL DEFAULT '' COMMENT '提醒内容(企微推送正文)',
|
||
`remind_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '提醒时间戳(秒);cron 扫描 remind_time<=now',
|
||
`status` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT '状态:0=待执行 1=已发送 2=已取消 3=发送失败',
|
||
`creator_id` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '创建人 admin.id(推送目标)',
|
||
`creator_name` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人姓名快照',
|
||
`notified_at` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '实际推送时间(成功时写入)',
|
||
`error` varchar(500) NOT NULL DEFAULT '' COMMENT '失败原因(status=3 时写入)',
|
||
`cancelled_at` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '取消时间',
|
||
`cancelled_by` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '取消人 admin.id',
|
||
`create_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`update_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`delete_time` int(11) unsigned NULL DEFAULT NULL COMMENT '软删除时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_diagnosis_id` (`diagnosis_id`),
|
||
KEY `idx_creator_id` (`creator_id`),
|
||
KEY `idx_status_remind_time` (`status`, `remind_time`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '诊单待办事项(企微定时推送给创建人)';
|