feat(system): 新增操作日志表与 V2 迁移
需求 2.5.1 要求记录用户管理操作,先落表结构: - operation_logs 表:冗余 username 保证账号删除后仍可追溯, user_id 外键 ON DELETE SET NULL,success 默认 '0' 与 login_logs 口径一致 - 截断常量(USERNAME/ERROR_MESSAGE/REQUEST_DATA)集中定义,供写入方引用 - 修复既有 V1 迁移与迁移模板的 downgrade:索引是外键唯一支撑索引, 先 drop_index 会报 errno 1553,改为只 drop_table - 同步 db/migration/V2 与 init-dev.sql,迁移版本号更新为 a45a8087831b Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
1 parent
273ebf4657
commit
ad5fe4a411
9 files changed
+365
-30
No files matched your search
@@ -0,0 +1,32 @@
|
||||
-- Running upgrade 6165691326d4 -> a45a8087831b
|
||||
|
||||
CREATE TABLE operation_logs (
|
||||
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
||||
user_id BIGINT UNSIGNED COMMENT '操作人ID(账号删除后置空)',
|
||||
username VARCHAR(64) NOT NULL COMMENT '操作人用户名(冗余存储便于追溯)',
|
||||
module VARCHAR(64) NOT NULL COMMENT '所属模块,如 用户管理',
|
||||
action VARCHAR(32) NOT NULL COMMENT '操作类型:新增/修改/删除/导出',
|
||||
summary VARCHAR(255) NOT NULL COMMENT '操作摘要(中文,供人阅读)',
|
||||
method VARCHAR(8) COMMENT 'HTTP 方法',
|
||||
path VARCHAR(255) COMMENT '请求路径',
|
||||
ip VARCHAR(45) COMMENT '客户端IP(45位兼容IPv6)',
|
||||
user_agent VARCHAR(255) COMMENT '客户端User-Agent(截断存储)',
|
||||
request_data TEXT COMMENT '请求参数(已脱敏)',
|
||||
success TINYINT NOT NULL COMMENT '是否成功:1成功 0失败' DEFAULT '0',
|
||||
error_message VARCHAR(500) COMMENT '失败原因(写入方须截断)',
|
||||
duration_ms INTEGER COMMENT '处理耗时(毫秒)',
|
||||
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT pk_operation_logs PRIMARY KEY (id),
|
||||
CONSTRAINT fk_operation_logs_user_id FOREIGN KEY(user_id) REFERENCES users (id) ON DELETE SET NULL
|
||||
)CHARSET=utf8mb4 ENGINE=InnoDB COMMENT='操作日志表' COLLATE utf8mb4_general_ci;
|
||||
|
||||
CREATE INDEX idx_operation_logs_create_time ON operation_logs (create_time);
|
||||
|
||||
CREATE INDEX idx_operation_logs_module ON operation_logs (module);
|
||||
|
||||
CREATE INDEX idx_operation_logs_user_id ON operation_logs (user_id);
|
||||
|
||||
CREATE INDEX idx_operation_logs_username ON operation_logs (username);
|
||||
|
||||
UPDATE alembic_version SET version_num='a45a8087831b' WHERE alembic_version.version_num = '6165691326d4';
|
||||
|
||||
Reference in new issue
Block a user