-- ============================================= -- 任务状态变更历史记录表 -- 专门记录任务状态的每一次流转,便于审计与追溯 -- ============================================= DROP TABLE IF EXISTS `sys_task_status_history`; CREATE TABLE `sys_task_status_history` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `task_id` BIGINT NOT NULL COMMENT '任务ID', `task_code` VARCHAR(64) DEFAULT NULL COMMENT '任务编号(冗余,方便查询)', `from_status` VARCHAR(32) DEFAULT NULL COMMENT '变更前状态码(NULL表示初始创建)', `from_status_name` VARCHAR(64) DEFAULT NULL COMMENT '变更前状态名称', `to_status` VARCHAR(32) NOT NULL COMMENT '变更后状态码', `to_status_name` VARCHAR(64) DEFAULT NULL COMMENT '变更后状态名称', `change_reason` VARCHAR(500) DEFAULT NULL COMMENT '变更原因/备注', `change_source` VARCHAR(32) DEFAULT 'APP' COMMENT '触发来源:APP-移动端,ADMIN-管理后台,SYSTEM-系统自动,LEGACY-旧系统同步', `operator_id` BIGINT DEFAULT NULL COMMENT '操作人ID', `operator_name` VARCHAR(64) DEFAULT NULL COMMENT '操作人姓名', `change_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '变更时间', `longitude` DOUBLE DEFAULT NULL COMMENT '操作时的经度(GPS定位)', `latitude` DOUBLE DEFAULT NULL COMMENT '操作时的纬度(GPS定位)', `location_address` VARCHAR(255) DEFAULT NULL COMMENT '操作时的位置地址', `ip_address` VARCHAR(128) DEFAULT NULL COMMENT '操作IP地址', `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注', PRIMARY KEY (`id`), INDEX `idx_task_id` (`task_id`), INDEX `idx_task_code` (`task_code`), INDEX `idx_to_status` (`to_status`), INDEX `idx_change_time`(`change_time`), INDEX `idx_operator_id`(`operator_id`), CONSTRAINT `fk_status_history_task` FOREIGN KEY (`task_id`) REFERENCES `sys_task`(`task_id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='任务状态变更历史记录表';