1a37daea68
- system_logs 表 + 持久化(查询/筛选/分页/动作枚举) - 全局审计中间件:记录全部写操作(POST/PUT/DELETE)+登录,含操作人(JWT)/角色/中文动作/方法/路径/目标/状态/成功/耗时/IP/查询参数 - 中文动作标签按路由推导,目标ID从路径提取 - GET /api/system-logs(仅系统管理员)支持按动作/关键词/时间/成功失败筛选 - 前端「日志管理」页:筛选+分页+明细展开;导航与路由接入
35 lines
1.0 KiB
JavaScript
35 lines
1.0 KiB
JavaScript
/* eslint-disable */
|
|
/**
|
|
* 系统操作审计日志:记录全系统的写操作(谁/何时/何角色/动作/目标/方法/路径/结果/IP/耗时)。
|
|
* 供系统管理员审计。仅记录状态变更类请求(POST/PUT/DELETE)与登录。
|
|
*/
|
|
|
|
exports.up = (pgm) => {
|
|
pgm.sql(`
|
|
CREATE TABLE IF NOT EXISTS system_logs (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
ts TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
actor_id TEXT,
|
|
actor_name TEXT,
|
|
role TEXT,
|
|
action TEXT NOT NULL,
|
|
method TEXT NOT NULL,
|
|
path TEXT NOT NULL,
|
|
target_id TEXT,
|
|
status INTEGER,
|
|
success BOOLEAN,
|
|
duration_ms INTEGER,
|
|
ip TEXT,
|
|
query TEXT,
|
|
detail JSONB
|
|
);
|
|
CREATE INDEX IF NOT EXISTS idx_system_logs_ts ON system_logs(ts DESC);
|
|
CREATE INDEX IF NOT EXISTS idx_system_logs_actor ON system_logs(actor_id);
|
|
CREATE INDEX IF NOT EXISTS idx_system_logs_action ON system_logs(action);
|
|
`);
|
|
};
|
|
|
|
exports.down = (pgm) => {
|
|
pgm.sql(`DROP TABLE IF EXISTS system_logs;`);
|
|
};
|