Files
RiskAgent/migrations/1730000027000_system_logs.cjs
T
freedakgmail 1a37daea68 系统管理员:新增日志管理(全系统操作审计)
- system_logs 表 + 持久化(查询/筛选/分页/动作枚举)
- 全局审计中间件:记录全部写操作(POST/PUT/DELETE)+登录,含操作人(JWT)/角色/中文动作/方法/路径/目标/状态/成功/耗时/IP/查询参数
- 中文动作标签按路由推导,目标ID从路径提取
- GET /api/system-logs(仅系统管理员)支持按动作/关键词/时间/成功失败筛选
- 前端「日志管理」页:筛选+分页+明细展开;导航与路由接入
2026-06-14 08:49:26 +08:00

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;`);
};