-- ============================================================ -- 安保工单体系 - 数据库表结构 -- 数据库: aiot-alarm(与 alarm_event 同库) -- ============================================================ -- ------------------------------------------------------------ -- 1. 安保人员表 -- ------------------------------------------------------------ CREATE TABLE IF NOT EXISTS `security_user` ( `id` INT NOT NULL AUTO_INCREMENT, `user_id` VARCHAR(64) NOT NULL COMMENT '人员唯一ID', `name` VARCHAR(100) NOT NULL COMMENT '姓名', `phone` VARCHAR(20) DEFAULT NULL COMMENT '手机号', `wechat_uid` VARCHAR(100) DEFAULT NULL COMMENT '企微userid', `role` VARCHAR(50) DEFAULT 'guard' COMMENT '角色: guard(保安) / supervisor(主管) / manager(经理)', `team_id` VARCHAR(64) DEFAULT NULL COMMENT '班组ID', `status` VARCHAR(20) DEFAULT 'active' COMMENT '状态: active / inactive', `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP, `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `uk_user_id` (`user_id`), KEY `idx_team_id` (`team_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='安保人员表'; -- ------------------------------------------------------------ -- 2. 安保工单表 -- ------------------------------------------------------------ CREATE TABLE IF NOT EXISTS `security_work_order` ( `order_id` VARCHAR(64) NOT NULL COMMENT '工单ID: WO + 时间戳 + uuid', -- 来源告警(告警工单必填,手动工单可空) `alarm_id` VARCHAR(64) DEFAULT NULL COMMENT '关联 alarm_event.alarm_id', -- 工单内容 `title` VARCHAR(200) NOT NULL COMMENT '工单标题', `description` TEXT DEFAULT NULL COMMENT '工单描述', `priority` SMALLINT DEFAULT 2 COMMENT '优先级: 1低 2中 3高 4紧急', -- 设备/区域信息(冗余,方便查询和责任追溯) `camera_id` VARCHAR(64) DEFAULT NULL COMMENT '摄像头ID', `roi_id` VARCHAR(64) DEFAULT NULL COMMENT 'ROI区域ID', `alarm_type` VARCHAR(50) DEFAULT NULL COMMENT '告警类型: intrusion / leave_post', `image_url` VARCHAR(512) DEFAULT NULL COMMENT '截图URL', -- 派发信息(生成时写入,确保责任可追溯) `assigned_user_id` VARCHAR(64) DEFAULT NULL COMMENT '处理人user_id → security_user.user_id', `assigned_user_name` VARCHAR(100) DEFAULT NULL COMMENT '处理人姓名(冗余)', `assigned_team_id` VARCHAR(64) DEFAULT NULL COMMENT '班组ID', -- 状态 `status` VARCHAR(20) NOT NULL DEFAULT 'PENDING' COMMENT '工单状态: PENDING / DISPATCHED / PROCESSING / DONE / CLOSED', -- 处理结果 `result` TEXT DEFAULT NULL COMMENT '处理结果描述', -- 创建人 `created_by` VARCHAR(64) DEFAULT NULL COMMENT '创建人', -- 时间 `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP, `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `dispatch_time` DATETIME DEFAULT NULL COMMENT '派单时间', `finish_time` DATETIME DEFAULT NULL COMMENT '完成时间', PRIMARY KEY (`order_id`), UNIQUE KEY `uk_alarm_id` (`alarm_id`) COMMENT '一个告警只能生成一个工单', KEY `idx_swo_status` (`status`), KEY `idx_swo_assigned` (`assigned_user_id`), KEY `idx_swo_created_at` (`created_at`), KEY `idx_swo_camera_roi_type` (`camera_id`, `roi_id`, `alarm_type`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='安保工单表'; -- ------------------------------------------------------------ -- 3. 工单操作记录表 -- ------------------------------------------------------------ CREATE TABLE IF NOT EXISTS `work_order_log` ( `id` INT NOT NULL AUTO_INCREMENT, `order_id` VARCHAR(64) NOT NULL COMMENT '关联工单ID → security_work_order.order_id', `action` VARCHAR(50) NOT NULL COMMENT '操作: CREATE / DISPATCH / ACCEPT / FINISH / CLOSE', `operator_id` VARCHAR(64) DEFAULT NULL COMMENT '操作人ID', `operator_name` VARCHAR(100) DEFAULT NULL COMMENT '操作人姓名', `remark` TEXT DEFAULT NULL COMMENT '备注', `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `idx_wol_order_id` (`order_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工单操作记录表'; -- ============================================================ -- 状态流转说明 -- ============================================================ -- -- 工单状态机: -- -- PENDING ──派单──→ DISPATCHED ──接单──→ PROCESSING ──完成──→ DONE -- │ │ -- └────────关闭────────→ CLOSED ←──────────关闭──────────────┘ -- -- 工单来源: -- 1. 告警自动生成(alarm_id 不为空) -- 告警确认 → 查询值班人员 → 生成工单 → 派单通知 -- -- 2. 手动创建(alarm_id 为空) -- 管理员/主管手动创建 → 指定处理人 → 派单通知 -- -- 告警合并规则: -- 同一 camera_id + roi_id + alarm_type,5分钟内只生成1个工单 -- 通过 idx_swo_camera_roi_type 索引 + 服务层逻辑实现 -- -- ============================================================ -- 关联关系 -- ============================================================ -- -- alarm_event (告警) -- │ -- │ alarm_id (一对一,UNIQUE) -- ▼ -- security_work_order (工单) -- │ -- │ assigned_user_id -- ▼ -- security_user (安保人员) -- -- security_work_order (工单) -- │ -- │ order_id (一对多) -- ▼ -- work_order_log (操作记录) --