-- 创建账号操作审计日志表 CREATE TABLE tb_account_operation_log ( id BIGSERIAL PRIMARY KEY, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 操作主体 operator_id BIGINT NOT NULL, -- 操作人 ID operator_type INT NOT NULL, -- 操作人类型 (1=超管 2=平台 3=代理 4=企业) operator_name VARCHAR(255) NOT NULL, -- 操作人用户名 -- 操作对象 target_account_id BIGINT, -- 目标账号 ID(可选,删除操作后可能查不到) target_username VARCHAR(255), -- 目标账号用户名 target_user_type INT, -- 目标账号类型 -- 操作内容 operation_type VARCHAR(50) NOT NULL, -- create/update/delete/assign_roles/remove_role operation_desc TEXT NOT NULL, -- 操作描述(中文) -- 变更详情(JSON 格式) before_data JSONB, -- 变更前数据(update 操作) after_data JSONB, -- 变更后数据(create/update 操作) -- 请求上下文 request_id VARCHAR(255), -- 请求 ID(关联访问日志) ip_address VARCHAR(50), -- 操作 IP user_agent TEXT -- User-Agent ); -- 创建索引优化查询性能 CREATE INDEX idx_account_log_operator ON tb_account_operation_log(operator_id, created_at); CREATE INDEX idx_account_log_target ON tb_account_operation_log(target_account_id, created_at); CREATE INDEX idx_account_log_created ON tb_account_operation_log(created_at DESC); -- 添加表注释 COMMENT ON TABLE tb_account_operation_log IS '账号操作审计日志表'; COMMENT ON COLUMN tb_account_operation_log.operator_id IS '操作人ID'; COMMENT ON COLUMN tb_account_operation_log.operator_type IS '操作人类型: 1=超级管理员 2=平台用户 3=代理账号 4=企业账号'; COMMENT ON COLUMN tb_account_operation_log.operator_name IS '操作人用户名'; COMMENT ON COLUMN tb_account_operation_log.target_account_id IS '目标账号ID'; COMMENT ON COLUMN tb_account_operation_log.target_username IS '目标账号用户名'; COMMENT ON COLUMN tb_account_operation_log.target_user_type IS '目标账号类型'; COMMENT ON COLUMN tb_account_operation_log.operation_type IS '操作类型: create/update/delete/assign_roles/remove_role'; COMMENT ON COLUMN tb_account_operation_log.operation_desc IS '操作描述(中文)'; COMMENT ON COLUMN tb_account_operation_log.before_data IS '变更前数据(JSONB格式,用于update操作)'; COMMENT ON COLUMN tb_account_operation_log.after_data IS '变更后数据(JSONB格式,用于create/update操作)'; COMMENT ON COLUMN tb_account_operation_log.request_id IS '请求ID,可关联访问日志'; COMMENT ON COLUMN tb_account_operation_log.ip_address IS '操作来源IP地址'; COMMENT ON COLUMN tb_account_operation_log.user_agent IS '用户代理(浏览器信息)';