更新
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
-- 诊次序号 / 每诊单最新有效订单 的批量查询覆盖索引(RevisitVisitSlotService、tcm:revisit-due-scan、RevisitRateLogic::fetchOrderSeqRows)
|
||||
-- 现有仅 idx_diagnosis_id(2026_04_07_create_tcm_prescription_order.sql:33)。ADD INDEX 不幂等,重复执行报 1061 可忽略;执行前 SHOW INDEX 确认
|
||||
ALTER TABLE `zyt_tcm_prescription_order`
|
||||
ADD KEY `idx_diag_del_fs_ct` (`diagnosis_id`, `delete_time`, `fulfillment_status`, `create_time`);
|
||||
@@ -0,0 +1,55 @@
|
||||
-- 复诊到期快照:每诊单一行(当前周期 = 最新有效业务订单)。
|
||||
-- 写入:php think tcm:revisit-due-scan --mode=full(每日)/ --mode=incremental(每 30 分钟)+ 业务钩子(订单/挂号/指派)即时刷新单条。
|
||||
-- 诊次口径与复诊接诊率一致:有效业务订单(剔 4/9/10、未软删)序号 + tcm_diagnosis.revisit_slot_start_offset(RevisitVisitSlotService)。
|
||||
-- 时间相关状态(到期/预警/超期/过号/已约)在读取时由本表事实列(due_date、appointment_state、appointment_date、promised_date、closed_state)与 CURDATE() 推导,不再 join 挂号表。
|
||||
-- 缺开药天数(medication_days=0)的行保持 closed_state=0,由读取侧推导为「缺开药天数」;仅无医助/诊单删除或禁用/无有效订单时置 5。
|
||||
-- 索引:uk_diagnosis 一诊单一行/幂等 upsert;idx_assistant_open 弹窗拉取与列表 chip 计数;idx_open_due cron 与主管视图;idx_source_order 订单变更钩子。
|
||||
CREATE TABLE IF NOT EXISTS `zyt_tcm_diagnosis_revisit_due` (
|
||||
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
`diagnosis_id` int unsigned NOT NULL DEFAULT 0 COMMENT '诊单ID(zyt_tcm_diagnosis.id)',
|
||||
`assistant_id` int unsigned NOT NULL DEFAULT 0 COMMENT '当前持有医助(随 tcm_diagnosis.assistant_id 同步,(int) 强转)',
|
||||
`patient_name` varchar(64) NOT NULL DEFAULT '' COMMENT '患者姓名快照',
|
||||
`source_order_id` int unsigned NOT NULL DEFAULT 0 COMMENT '本周期锚点业务订单 zyt_tcm_prescription_order.id(最新有效订单)',
|
||||
`order_create_time` int unsigned NOT NULL DEFAULT 0 COMMENT '锚点订单下单时间',
|
||||
`valid_order_count` smallint unsigned NOT NULL DEFAULT 0 COMMENT '有效订单数',
|
||||
`anchor_ts` int unsigned NOT NULL DEFAULT 0 COMMENT '用药起算时间戳',
|
||||
`anchor_src` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '起算来源:1=签收 2=发货 3=下单',
|
||||
`medication_days` smallint unsigned NOT NULL DEFAULT 0 COMMENT '开药天数(订单 medication_days,缺省回落处方 usage_days;0=缺失)',
|
||||
`days_src` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '天数来源:0=缺失 1=订单 2=处方',
|
||||
`rule_days` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '天数档位:14/21/28/30,0=其它',
|
||||
`total_medication_days` smallint unsigned NOT NULL DEFAULT 0 COMMENT '累计开药天数',
|
||||
`current_slot` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '患者当前已完成诊次(有效订单数+偏移)',
|
||||
`next_slot` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '待复诊诊次 = current_slot+1',
|
||||
`first_touch_date` date NULL COMMENT '首次触达日(首笔有效订单/首条指派取早)',
|
||||
`due_date` date NULL COMMENT '预计复诊日 = DATE(anchor_ts)+medication_days+grace;缺天数为 NULL',
|
||||
`closed_state` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '0=进行中 2=已挂号(自动) 3=已面诊(自动) 4=人工关闭 5=失效(无医助/诊单删除或禁用/无有效订单)',
|
||||
`booked_appointment_id` int unsigned NOT NULL DEFAULT 0 COMMENT '触发关闭或当前待面诊的挂号单 id',
|
||||
`appointment_state` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '锚点订单之后最新有效挂号状态(事实列):0=无 1=已约 3=已面诊 4=过号',
|
||||
`appointment_date` date NULL COMMENT '上述挂号的预约日期(事实列)',
|
||||
`missed_count` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '本周期过号/已约未到次数',
|
||||
`contact_count` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '本周期「已联系」次数(上限 2,之后按延迟计)',
|
||||
`contacted_at` int unsigned NOT NULL DEFAULT 0 COMMENT '最近一次「已联系」时间',
|
||||
`promised_date` date NULL COMMENT '患者承诺复诊日期',
|
||||
`snooze_count` smallint unsigned NOT NULL DEFAULT 0 COMMENT '延迟处理次数(越点越上心的依据)',
|
||||
`escalation_level` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '升级等级 0~3 = f(snooze_count)',
|
||||
`next_remind_at` int unsigned NOT NULL DEFAULT 0 COMMENT '下次弹窗时刻;弹窗只取 next_remind_at<=now',
|
||||
`first_shown_at` int unsigned NOT NULL DEFAULT 0 COMMENT '首次弹出时间(仅写一次)',
|
||||
`last_shown_at` int unsigned NOT NULL DEFAULT 0 COMMENT '最近弹出时间(统计用,不做节流)',
|
||||
`last_snoozed_at` int unsigned NOT NULL DEFAULT 0 COMMENT '最近延迟时间',
|
||||
`last_snoozed_by` int unsigned NOT NULL DEFAULT 0 COMMENT '最近延迟人',
|
||||
`handled_at` int unsigned NOT NULL DEFAULT 0 COMMENT '人工关闭时间',
|
||||
`handled_by` int unsigned NOT NULL DEFAULT 0 COMMENT '人工关闭人',
|
||||
`handle_reason` varchar(16) NOT NULL DEFAULT '' COMMENT '人工关闭原因 lost/other',
|
||||
`handle_remark` varchar(200) NOT NULL DEFAULT '' COMMENT '人工关闭说明',
|
||||
`wecom_self_at` int unsigned NOT NULL DEFAULT 0 COMMENT '最近一次企微推送本人(P2)',
|
||||
`wecom_self_count_day` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '当日已推送本人次数(P2)',
|
||||
`wecom_supervisor_at` int unsigned NOT NULL DEFAULT 0 COMMENT '最近一次企微抄送主管(P2)',
|
||||
`computed_at` int unsigned NOT NULL DEFAULT 0 COMMENT '最近重算时间',
|
||||
`create_time` int unsigned NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||||
`update_time` int unsigned NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_diagnosis` (`diagnosis_id`),
|
||||
KEY `idx_assistant_open` (`assistant_id`, `closed_state`, `appointment_state`, `due_date`, `next_remind_at`),
|
||||
KEY `idx_open_due` (`closed_state`, `due_date`),
|
||||
KEY `idx_source_order` (`source_order_id`)
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '诊单复诊到期快照(每诊单一行,列表标红/弹窗/延迟升级共用)';
|
||||
@@ -0,0 +1,20 @@
|
||||
-- 复诊到期事件流水:供审计与「越点越上心」统计(主管视图可按延迟/升级次数排序)。
|
||||
-- 注意:弹窗轮询不写流水(只更新 first/last_shown_at),避免日志膨胀。
|
||||
CREATE TABLE IF NOT EXISTS `zyt_tcm_diagnosis_revisit_due_log` (
|
||||
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
`due_id` int unsigned NOT NULL DEFAULT 0 COMMENT 'zyt_tcm_diagnosis_revisit_due.id',
|
||||
`diagnosis_id` int unsigned NOT NULL DEFAULT 0 COMMENT '诊单ID',
|
||||
`assistant_id` int unsigned NOT NULL DEFAULT 0 COMMENT '事件时持有医助',
|
||||
`source_order_id` int unsigned NOT NULL DEFAULT 0 COMMENT '事件时周期订单',
|
||||
`event` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '1=延迟 2=已联系 3=人工关闭 4=自动关闭-已挂号 5=自动关闭-已面诊 6=周期重置(新订单) 7=重新打开(挂号取消/过号) 8=企微推送 9=医助变更 10=形态升级 11=首次弹出',
|
||||
`snooze_count_after` smallint unsigned NOT NULL DEFAULT 0 COMMENT '事件后延迟次数',
|
||||
`level_after` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '事件后升级等级',
|
||||
`overdue_days` smallint NOT NULL DEFAULT 0 COMMENT '事件时超期天数(负=未到期)',
|
||||
`payload` varchar(500) NOT NULL DEFAULT '' COMMENT 'JSON:next_remind_at/promised_date/appointment_id/order_id/remark/from_assistant 等',
|
||||
`operator_id` int unsigned NOT NULL DEFAULT 0 COMMENT '操作人 admin.id,0=系统',
|
||||
`create_time` int unsigned NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_due_time` (`due_id`, `create_time`),
|
||||
KEY `idx_assistant_event_time` (`assistant_id`, `event`, `create_time`),
|
||||
KEY `idx_diagnosis_id` (`diagnosis_id`)
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '诊单复诊到期事件流水';
|
||||
@@ -0,0 +1,8 @@
|
||||
-- 依赖:先执行 02/03;服务器 crontab 每分钟 php think crontab;首次 last_time 为空时调度器只记下次时间不执行(Crontab.php:46-54)
|
||||
-- 幂等:按 command + params 判重,可重复执行。命令内部整体 try/catch 并 return 0,避免 Crontab::start 将任务置 ERROR。
|
||||
INSERT INTO `zyt_dev_crontab` (`name`,`type`,`system`,`remark`,`command`,`params`,`status`,`expression`,`create_time`,`update_time`)
|
||||
SELECT '复诊到期快照-每日全量', 1, 0, '全量重算 tcm_diagnosis_revisit_due(签收时间/过号变化/钩子漏刷兜底)', 'tcm:revisit-due-scan', '--mode=full', 1, '30 8 * * *', UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
|
||||
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `zyt_dev_crontab` WHERE `command`='tcm:revisit-due-scan' AND `params`='--mode=full' AND `delete_time` IS NULL);
|
||||
INSERT INTO `zyt_dev_crontab` (`name`,`type`,`system`,`remark`,`command`,`params`,`status`,`expression`,`create_time`,`update_time`)
|
||||
SELECT '复诊到期快照-增量', 1, 0, '仅重算近 2 小时有订单/挂号/指派变更的诊单,并重评 closed_state=2 的行', 'tcm:revisit-due-scan', '--mode=incremental', 1, '*/30 * * * *', UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
|
||||
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `zyt_dev_crontab` WHERE `command`='tcm:revisit-due-scan' AND `params`='--mode=incremental' AND `delete_time` IS NULL);
|
||||
@@ -0,0 +1,56 @@
|
||||
-- 复诊到期提醒(需求 4 弹窗)接口按钮权限,挂在「中医诊单」(perms=tcm.diagnosis/lists, type=C) 下。
|
||||
-- 为什么必须登记:AuthMiddleware.php:111-117 对「未在菜单登记」的接口对所有登录账号直接放行,
|
||||
-- 因此 pending / summary / snooze / snoozeAll / contact / close 六个 action 全部登记为 A 类权限点,
|
||||
-- 未授权账号调用将返回「权限不足」(验收 §11 需求 4 第 7 条)。
|
||||
-- 为什么自动授权:登记后若不授予,现有医助会立刻失权、弹窗不弹;末尾 INSERT IGNORE 把六个权限点授予
|
||||
-- 所有已拥有 tcm.diagnosis/lists 的角色(写法照抄 1.9.20260803/add_performance_dashboard_menu.sql:50-56)。
|
||||
-- 超管(root=1)不走菜单校验;「全部菜单」类角色若按 * 配置需人工复核。执行后需清理 AdminAuthCache 或等缓存过期。
|
||||
-- 幂等:INSERT … SELECT … WHERE NOT EXISTS,可重复执行。排序 70~75 紧随 1.9.20260505 的待办权限(60~62)。
|
||||
|
||||
SET @diag_menu_id := (SELECT id FROM zyt_system_menu WHERE perms = 'tcm.diagnosis/lists' AND type = 'C' LIMIT 1);
|
||||
|
||||
INSERT INTO zyt_system_menu (pid, type, name, icon, sort, perms, paths, component, selected, params, is_cache, is_show, is_disable, create_time, update_time)
|
||||
SELECT @diag_menu_id, 'A', '复诊到期-弹窗待办', '', 70, 'tcm.revisitDue/pending', '', '', '', '', 0, 1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
|
||||
FROM DUAL
|
||||
WHERE @diag_menu_id IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM zyt_system_menu WHERE perms = 'tcm.revisitDue/pending');
|
||||
|
||||
INSERT INTO zyt_system_menu (pid, type, name, icon, sort, perms, paths, component, selected, params, is_cache, is_show, is_disable, create_time, update_time)
|
||||
SELECT @diag_menu_id, 'A', '复诊到期-计数', '', 71, 'tcm.revisitDue/summary', '', '', '', '', 0, 1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
|
||||
FROM DUAL
|
||||
WHERE @diag_menu_id IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM zyt_system_menu WHERE perms = 'tcm.revisitDue/summary');
|
||||
|
||||
INSERT INTO zyt_system_menu (pid, type, name, icon, sort, perms, paths, component, selected, params, is_cache, is_show, is_disable, create_time, update_time)
|
||||
SELECT @diag_menu_id, 'A', '复诊到期-延迟', '', 72, 'tcm.revisitDue/snooze', '', '', '', '', 0, 1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
|
||||
FROM DUAL
|
||||
WHERE @diag_menu_id IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM zyt_system_menu WHERE perms = 'tcm.revisitDue/snooze');
|
||||
|
||||
INSERT INTO zyt_system_menu (pid, type, name, icon, sort, perms, paths, component, selected, params, is_cache, is_show, is_disable, create_time, update_time)
|
||||
SELECT @diag_menu_id, 'A', '复诊到期-全部延迟', '', 73, 'tcm.revisitDue/snoozeAll', '', '', '', '', 0, 1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
|
||||
FROM DUAL
|
||||
WHERE @diag_menu_id IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM zyt_system_menu WHERE perms = 'tcm.revisitDue/snoozeAll');
|
||||
|
||||
INSERT INTO zyt_system_menu (pid, type, name, icon, sort, perms, paths, component, selected, params, is_cache, is_show, is_disable, create_time, update_time)
|
||||
SELECT @diag_menu_id, 'A', '复诊到期-已联系', '', 74, 'tcm.revisitDue/contact', '', '', '', '', 0, 1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
|
||||
FROM DUAL
|
||||
WHERE @diag_menu_id IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM zyt_system_menu WHERE perms = 'tcm.revisitDue/contact');
|
||||
|
||||
INSERT INTO zyt_system_menu (pid, type, name, icon, sort, perms, paths, component, selected, params, is_cache, is_show, is_disable, create_time, update_time)
|
||||
SELECT @diag_menu_id, 'A', '复诊到期-人工关闭', '', 75, 'tcm.revisitDue/close', '', '', '', '', 0, 1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
|
||||
FROM DUAL
|
||||
WHERE @diag_menu_id IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM zyt_system_menu WHERE perms = 'tcm.revisitDue/close');
|
||||
|
||||
-- 自动授予:所有已拥有「中医诊单」列表权限的角色,默认获得六个弹窗权限点
|
||||
INSERT IGNORE INTO zyt_system_role_menu (role_id, menu_id)
|
||||
SELECT DISTINCT rm.role_id, m2.id
|
||||
FROM zyt_system_role_menu rm
|
||||
INNER JOIN zyt_system_menu m1 ON m1.id = rm.menu_id AND m1.perms = 'tcm.diagnosis/lists'
|
||||
INNER JOIN zyt_system_menu m2 ON m2.perms IN (
|
||||
'tcm.revisitDue/pending', 'tcm.revisitDue/summary', 'tcm.revisitDue/snooze',
|
||||
'tcm.revisitDue/snoozeAll', 'tcm.revisitDue/contact', 'tcm.revisitDue/close'
|
||||
);
|
||||
@@ -0,0 +1,6 @@
|
||||
-- 继承指派时患者所处诊次快照(RevisitVisitSlotService::slotAtTime 口径:继承时刻之前的有效实单数 + 偏移)。
|
||||
-- 统计以实时重算为准(事后退款/取消/改 offset 会联动);本列用于指派记录面板展示与对账(php think tcm:backfill-inherit-visit-slot --verify)。
|
||||
-- ALTER 不幂等,重复执行报列已存在可忽略。
|
||||
ALTER TABLE `zyt_tcm_diagnosis_assign_log`
|
||||
ADD COLUMN `inherit_visit_slot` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '继承时患者已完成诊次(实单数+偏移);0=非继承/未计算' AFTER `is_inherit`,
|
||||
ADD COLUMN `inherit_visit_slot_calc_time` int unsigned NOT NULL DEFAULT 0 COMMENT '快照计算/回填时间' AFTER `inherit_visit_slot`;
|
||||
@@ -0,0 +1,7 @@
|
||||
-- 自动分配日志同时记录两套口径的二诊率,便于回溯分档依据
|
||||
-- visit2_rate:当前口径(inherit_mode=slot,每列独立分母);visit2_rate_new_assign:旧口径(分母仅新指派)
|
||||
-- rate_version:本批次分档所用字段(config project.revisit_rate.auto_assign_tier_field):v1=仅新指派 v2=每列独立分母
|
||||
-- ALTER 不幂等,重复执行报列已存在可忽略。
|
||||
ALTER TABLE `zyt_tcm_diagnosis_auto_assign_log`
|
||||
ADD COLUMN `visit2_rate_new_assign` decimal(8,2) NULL DEFAULT NULL COMMENT '旧口径二诊率(分母仅新指派)' AFTER `visit2_rate`,
|
||||
ADD COLUMN `rate_version` varchar(8) NOT NULL DEFAULT 'v1' COMMENT '分档所用口径:v1=仅新指派 v2=每列独立分母' AFTER `visit2_rate_new_assign`;
|
||||
@@ -0,0 +1,34 @@
|
||||
-- 复诊到期跟进(P2 主管团队视图)菜单,挂在「数据统计」目录(name='数据统计' AND type='M')下,模板 1.9.20260715/add_auto_assign_log_menu.sql。
|
||||
-- 页面路径: /stats/revisit_due
|
||||
-- 前端组件: /stats/revisit_due/index
|
||||
-- 查询权限: tcm.revisitDue/lists(C 类页面,lists 支持 export=1/2 导出,不另设 export 权限点)
|
||||
-- 流水权限: tcm.revisitDue/logs(A 类按钮,挂在页面下)
|
||||
-- 数据来源: zyt_tcm_diagnosis_revisit_due / zyt_tcm_diagnosis_revisit_due_log(命令 tcm:revisit-due-scan 与业务钩子写入)
|
||||
-- 为什么必须登记:AuthMiddleware 对「未在菜单登记」的接口对所有登录账号直接放行,登记后未授权账号返回「权限不足」。
|
||||
-- 注意:本文件【不自动授予任何角色】——主管视图由管理员在「角色管理」里按角色勾选;
|
||||
-- 数据范围由角色 data_scope 决定(HasDataScopeFilter::applyDataScopeByOwner('assistant_id')),医助本人只能看到自己的行。
|
||||
-- 幂等:INSERT … SELECT … WHERE NOT EXISTS,可重复执行。
|
||||
|
||||
SET @stats_root_id := (SELECT id FROM zyt_system_menu WHERE name = '数据统计' AND type = 'M' LIMIT 1);
|
||||
|
||||
INSERT INTO `zyt_system_menu`
|
||||
(`pid`, `type`, `name`, `icon`, `sort`, `perms`, `paths`, `component`, `selected`, `params`, `is_cache`, `is_show`, `is_disable`, `create_time`, `update_time`)
|
||||
SELECT
|
||||
@stats_root_id, 'C', '复诊到期跟进', '', 13,
|
||||
'tcm.revisitDue/lists', '/stats/revisit_due', '/stats/revisit_due/index',
|
||||
'', '', 0, 1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
|
||||
FROM DUAL
|
||||
WHERE @stats_root_id IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM zyt_system_menu WHERE perms = 'tcm.revisitDue/lists');
|
||||
|
||||
SET @revisit_due_page_id := (SELECT id FROM zyt_system_menu WHERE perms = 'tcm.revisitDue/lists' AND type = 'C' LIMIT 1);
|
||||
|
||||
INSERT INTO `zyt_system_menu`
|
||||
(`pid`, `type`, `name`, `icon`, `sort`, `perms`, `paths`, `component`, `selected`, `params`, `is_cache`, `is_show`, `is_disable`, `create_time`, `update_time`)
|
||||
SELECT
|
||||
@revisit_due_page_id, 'A', '复诊到期-流水', '', 1,
|
||||
'tcm.revisitDue/logs', '', '',
|
||||
'', '', 0, 1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
|
||||
FROM DUAL
|
||||
WHERE @revisit_due_page_id IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM zyt_system_menu WHERE perms = 'tcm.revisitDue/logs');
|
||||
@@ -0,0 +1,12 @@
|
||||
-- 复诊到期提醒企微推送定时任务(P2,方案 §5.2),模板 04_add_revisit_due_crontab.sql。
|
||||
-- 依赖:先执行 02/03(快照与流水表);服务器 crontab 每分钟 php think crontab;首次 last_time 为空时调度器只记下次时间不执行。
|
||||
-- status=1 直接启用,但命令内部先读 project.revisit_reach.wecom_enabled:默认 false 时每次只输出「未启用」即返回(空跑,不调企微、不写流水);
|
||||
-- 产品确认开启后把配置改为 true 即生效,不需要再改本表。
|
||||
-- 命令内部整体 try/catch 并 return 0,避免 Crontab::start 将任务置 ERROR;params 不超过 64 字符。
|
||||
-- 幂等:按 command + params 判重,可重复执行。
|
||||
INSERT INTO `zyt_dev_crontab` (`name`,`type`,`system`,`remark`,`command`,`params`,`status`,`expression`,`create_time`,`update_time`)
|
||||
SELECT '复诊到期企微-每日汇总', 1, 0, '每位有到期未挂号/过号行的医助一条企微汇总(wecom_enabled=false 时空跑)', 'tcm:revisit-due-notify', '--mode=daily', 1, '0 9 * * *', UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
|
||||
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `zyt_dev_crontab` WHERE `command`='tcm:revisit-due-notify' AND `params`='--mode=daily' AND `delete_time` IS NULL);
|
||||
INSERT INTO `zyt_dev_crontab` (`name`,`type`,`system`,`remark`,`command`,`params`,`status`,`expression`,`create_time`,`update_time`)
|
||||
SELECT '复诊到期企微-升级推送', 1, 0, 'escalation_level>=3 的行推本人(每行每日≤wecom_daily_cap),snooze_count>=5 每日抄送主管一次(wecom_enabled=false 时空跑)', 'tcm:revisit-due-notify', '--mode=tick', 1, '*/30 * * * *', UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
|
||||
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `zyt_dev_crontab` WHERE `command`='tcm:revisit-due-notify' AND `params`='--mode=tick' AND `delete_time` IS NULL);
|
||||
@@ -0,0 +1,23 @@
|
||||
-- 「我的复诊接诊率」卡片接口权限(方案 §10 D1-h,P2),挂在「个人业绩」页面(perms=stats.assistantPerformance/overview, type=C) 下。
|
||||
-- 为什么必须登记:AuthMiddleware.php:111-117 对「未在菜单登记」的接口对所有登录账号直接放行,
|
||||
-- 因此 stats.assistantPerformance/revisitRate 登记为 A 类权限点,未授权账号调用返回「权限不足」。
|
||||
-- 为什么自动授权:该接口只返回本人行(RevisitRateLogic::assistantOverview),与个人业绩页同受众;
|
||||
-- 末尾 INSERT IGNORE 把该权限点授予所有已拥有个人业绩页的角色,避免「登记后卡片报权限不足」
|
||||
-- (写法照抄 1.9.20260803/add_performance_dashboard_menu.sql:50-56 / 本目录 05_add_revisit_due_menu.sql)。
|
||||
-- 超管(root=1)不走菜单校验;「全部菜单」类角色若按 * 配置需人工复核。执行后需清理 AdminAuthCache 或等缓存过期。
|
||||
-- 幂等:INSERT … SELECT … WHERE NOT EXISTS,可重复执行。
|
||||
|
||||
SET @perf_menu_id := (SELECT id FROM zyt_system_menu WHERE perms = 'stats.assistantPerformance/overview' AND type = 'C' LIMIT 1);
|
||||
|
||||
INSERT INTO zyt_system_menu (pid, type, name, icon, sort, perms, paths, component, selected, params, is_cache, is_show, is_disable, create_time, update_time)
|
||||
SELECT @perf_menu_id, 'A', '个人业绩-我的复诊接诊率', '', 10, 'stats.assistantPerformance/revisitRate', '', '', '', '', 0, 1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
|
||||
FROM DUAL
|
||||
WHERE @perf_menu_id IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM zyt_system_menu WHERE perms = 'stats.assistantPerformance/revisitRate');
|
||||
|
||||
-- 自动授予:所有已拥有「个人业绩」页面权限的角色,默认获得「我的复诊接诊率」权限点
|
||||
INSERT IGNORE INTO zyt_system_role_menu (role_id, menu_id)
|
||||
SELECT DISTINCT rm.role_id, m2.id
|
||||
FROM zyt_system_role_menu rm
|
||||
INNER JOIN zyt_system_menu m1 ON m1.id = rm.menu_id AND m1.perms = 'stats.assistantPerformance/overview'
|
||||
INNER JOIN zyt_system_menu m2 ON m2.perms = 'stats.assistantPerformance/revisitRate';
|
||||
Reference in New Issue
Block a user