-- ============================================================ -- 芯导-LIMS 第四批需求 DDL -- ⑧ 安全与权限:审计日志(敏感操作留痕) -- ⑨ 系统配置与扩展:LIMS 专属参数表 -- 说明:⑦ 数据分析用现有数据表增强接口,不新增表 -- 库:lims-ruoyi -- ============================================================ -- ============================================================ -- ⑧ 审计日志:记录敏感数据的增删改与导出 -- ============================================================ DROP TABLE IF EXISTS `lims_audit_log`; CREATE TABLE `lims_audit_log` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `module` VARCHAR(64) DEFAULT NULL COMMENT '模块(样品管理/实验管理/数据采集/实时监控/资源管理/系统配置)', `biz_type` VARCHAR(64) DEFAULT NULL COMMENT '业务类型(sample/experiment/collection/monitor/instrument/reagent/alert/config)', `biz_id` BIGINT DEFAULT NULL COMMENT '业务记录ID', `biz_code` VARCHAR(128) DEFAULT NULL COMMENT '业务编号(如样品编号、实验编号)', `action` VARCHAR(32) DEFAULT NULL COMMENT '动作(create/update/delete/export/view/status_change/stock_out/stock_in)', `table_name` VARCHAR(64) DEFAULT NULL COMMENT '涉及表名', `field_name` VARCHAR(128) DEFAULT NULL COMMENT '涉及字段(可空)', `old_value` VARCHAR(2000) DEFAULT NULL COMMENT '变更前值', `new_value` VARCHAR(2000) DEFAULT NULL COMMENT '变更后值', `description` VARCHAR(1000) DEFAULT NULL COMMENT '操作说明', `operator` VARCHAR(64) DEFAULT NULL COMMENT '操作人', `operator_ip` VARCHAR(64) DEFAULT NULL COMMENT '操作IP', `is_sensitive` CHAR(1) DEFAULT '0' COMMENT '是否敏感操作(1-是,0-否)', `exec_result` VARCHAR(32) DEFAULT 'success' COMMENT '结果(success/fail)', `error_msg` VARCHAR(1000) DEFAULT NULL COMMENT '失败原因', `operate_time` DATETIME DEFAULT NULL COMMENT '操作时间', `del_flag` CHAR(1) DEFAULT '0' COMMENT '删除标志(0-正常,2-删除)', `tenant_id` BIGINT DEFAULT NULL COMMENT '租户ID', `create_time` DATETIME DEFAULT NULL COMMENT '创建时间', `create_user` INT DEFAULT NULL COMMENT '创建用户', `update_time` DATETIME DEFAULT NULL COMMENT '修改时间', `update_user` INT DEFAULT NULL COMMENT '修改用户', PRIMARY KEY (`id`), KEY `idx_biz` (`biz_type`, `biz_id`), KEY `idx_operator` (`operator`), KEY `idx_operate_time` (`operate_time`), KEY `idx_module` (`module`), KEY `idx_tenant` (`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='LIMS-审计日志'; -- ============================================================ -- ⑨ LIMS 专属系统参数(定制化配置) -- ============================================================ DROP TABLE IF EXISTS `lims_setting`; CREATE TABLE `lims_setting` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `category` VARCHAR(64) DEFAULT NULL COMMENT '分类(collect-采集,clean-清洗,alert-预警,security-安全,sample-样品,reagent-试剂,ui-界面)', `setting_key` VARCHAR(128) DEFAULT NULL COMMENT '参数键', `setting_name` VARCHAR(255) DEFAULT NULL COMMENT '参数名称', `setting_value` VARCHAR(2000) DEFAULT NULL COMMENT '参数值', `value_type` VARCHAR(32) DEFAULT 'string' COMMENT '值类型(string/number/boolean/select/json)', `options` VARCHAR(1000) DEFAULT NULL COMMENT '可选值(select 类型用,逗号分隔)', `default_value` VARCHAR(2000) DEFAULT NULL COMMENT '默认值', `description` VARCHAR(1000) DEFAULT NULL COMMENT '说明', `editable` CHAR(1) DEFAULT '1' COMMENT '是否可编辑(1-可编辑,0-只读)', `sort_no` INT DEFAULT 100 COMMENT '排序', `del_flag` CHAR(1) DEFAULT '0' COMMENT '删除标志(0-正常,2-删除)', `tenant_id` BIGINT DEFAULT NULL COMMENT '租户ID', `create_time` DATETIME DEFAULT NULL COMMENT '创建时间', `create_user` INT DEFAULT NULL COMMENT '创建用户', `update_time` DATETIME DEFAULT NULL COMMENT '修改时间', `update_user` INT DEFAULT NULL COMMENT '修改用户', PRIMARY KEY (`id`), UNIQUE KEY `uk_setting_key` (`setting_key`), KEY `idx_category` (`category`), KEY `idx_tenant` (`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='LIMS-系统参数配置'; -- ============================================================ -- 预置系统参数 -- ============================================================ INSERT INTO `lims_setting` (`category`, `setting_key`, `setting_name`, `setting_value`, `value_type`, `options`, `default_value`, `description`, `editable`, `sort_no`) VALUES ('collect', 'collect.autoClean', '采集后自动清洗', 'true', 'boolean', NULL, 'true', '数据采集成功后是否立即按清洗规则处理', '1', 10), ('collect', 'collect.batchLimit', '单次清洗上限', '200', 'number', NULL, '200', '定时任务单次最多处理多少条待清洗记录', '1', 20), ('clean', 'clean.discardOnVerifyFail','验证不通过时丢弃', 'false', 'boolean', NULL, 'false', '范围校验不通过的记录是否直接标记为丢弃(默认只标记不丢弃)', '1', 30), ('alert', 'alert.dedupMinutes', '告警去重窗口(分钟)', '5', 'number', NULL, '5', '同一监控项在多少分钟内不重复生成同类告警', '1', 40), ('alert', 'alert.autoResolve', '恢复后自动关闭告警', 'true', 'boolean', NULL, 'true', '数值恢复正常后是否自动把未处理告警置为已处理', '1', 50), ('alert', 'alert.notifyLevels', '需要通知的级别', 'high,medium', 'select', 'high,medium,low', 'high,medium', '哪些级别的告警需要弹窗/短信提醒', '1', 60), ('sample', 'sample.codePrefix', '样品编号前缀', 'SP', 'string', NULL, 'SP', '新建样品时编号自动生成用的前缀', '1', 70), ('sample', 'sample.expiryWarnDays', '样品临期提醒天数', '7', 'number', NULL, '7', '有效期剩余天数小于该值时标记为临期', '1', 80), ('reagent', 'reagent.expiryWarnDays', '试剂临期提醒天数', '30', 'number', NULL, '30', '试剂有效期剩余天数小于该值时标记为临期', '1', 90), ('security','security.auditEnabled', '启用审计日志', 'true', 'boolean', NULL, 'true', '是否记录敏感操作审计日志(关闭后不写 lims_audit_log)', '1', 100), ('security','security.auditRetainDays', '审计日志保留天数', '180', 'number', NULL, '180', '超过该天数的审计日志可清理', '1', 110), ('security','security.maskSensitive', '列表脱敏显示', 'true', 'boolean', NULL, 'true', '列表页对备注等敏感字段做部分遮挡', '1', 120), ('ui', 'ui.refreshInterval', '实时监控刷新秒数', '30', 'number', NULL, '30', '实时监控页自动刷新的间隔秒数', '1', 130); -- ============================================================ -- 校验 -- ============================================================ SELECT table_name, table_comment FROM information_schema.tables WHERE table_schema = 'lims-ruoyi' AND table_name IN ('lims_audit_log','lims_setting') ORDER BY table_name; SELECT category, COUNT(*) AS cnt FROM `lims_setting` GROUP BY category ORDER BY category;