From 931fd2467133519bafcf253ddd2b15bf7d7d3451 Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Fri, 14 Aug 2026 17:06:25 +0800 Subject: [PATCH] chore(duty): add duty_day/slot/assignment tables and menu SQL Co-authored-by: Cursor --- .../migrate_20260814_duty_schedule.sql | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 backend/scripts/migrate_20260814_duty_schedule.sql diff --git a/backend/scripts/migrate_20260814_duty_schedule.sql b/backend/scripts/migrate_20260814_duty_schedule.sql new file mode 100644 index 000000000..35a981a3c --- /dev/null +++ b/backend/scripts/migrate_20260814_duty_schedule.sql @@ -0,0 +1,83 @@ +-- backend/scripts/migrate_20260814_duty_schedule.sql +-- 值班排班 V1:按日链接 + 班次名额 + 报名 + +CREATE TABLE IF NOT EXISTS `duty_day` ( + `id` varchar(64) NOT NULL COMMENT '主键ID(UUID)', + `duty_date` date NOT NULL COMMENT '值班日期', + `access_token` varchar(64) NOT NULL COMMENT '公开访问令牌', + `link_status` varchar(16) NOT NULL DEFAULT 'open' COMMENT 'open/closed', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建者', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建部门', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标志', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_token` (`access_token`), + KEY `idx_tenant_date` (`tenant_no`, `duty_date`, `del_flag`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='值班日(一天一条公开链接)'; + +CREATE TABLE IF NOT EXISTS `duty_slot` ( + `id` varchar(64) NOT NULL COMMENT '主键ID(UUID)', + `duty_day_id` varchar(64) NOT NULL COMMENT '值班日ID', + `shift_type` varchar(32) NOT NULL COMMENT 'morning/evening/duty', + `capacity` int(11) NOT NULL DEFAULT 1 COMMENT '名额', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建者', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建部门', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标志', + PRIMARY KEY (`id`), + KEY `idx_day` (`duty_day_id`, `del_flag`), + KEY `idx_tenant` (`tenant_no`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='值班班次名额'; + +CREATE TABLE IF NOT EXISTS `duty_assignment` ( + `id` varchar(64) NOT NULL COMMENT '主键ID(UUID)', + `duty_slot_id` varchar(64) NOT NULL COMMENT '班次名额ID', + `source` varchar(16) NOT NULL COMMENT 'assign/grab', + `user_id` varchar(64) DEFAULT NULL COMMENT '系统用户ID(指定时)', + `person_name` varchar(64) NOT NULL COMMENT '展示姓名', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建者', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建部门', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标志', + PRIMARY KEY (`id`), + KEY `idx_slot` (`duty_slot_id`, `del_flag`), + KEY `idx_tenant` (`tenant_no`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='值班占位(指定或抢班)'; + +-- 菜单:挂在 Web 虚拟根(parent_id=2,menu_name=Web端)下「值班排班」 +INSERT INTO `sys_menu` ( + `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, + `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, + `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` +) VALUES ( + 'DUTY000000000000000000000000001', + '值班排班', + '2', + 'C', + 'duty-schedule', + '/duty/schedule/index', + 'duty:schedule:list', + 1, '1', '1', 'shanxia2.0', 90, + '日历排班与公开抢班链接', + 'system', '', NOW(), NULL, NOW(), 0 +) +ON DUPLICATE KEY UPDATE + `menu_name`=VALUES(`menu_name`), + `component`=VALUES(`component`), + `perms`=VALUES(`perms`), + `path`=VALUES(`path`);