-- ============================================================
|
-- 芯导-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;
|