-- 02158 admin_action_log —— 管理端写操作审计（PR C 起要求）
--
-- 每一条 admin CRUD/rules 更新都在同事务内插入一行审计流水，方便后续追责
-- 与合规审查。actor_user_id 是操作者的 user.id；action 是操作动作
-- （lottery.activity.create / lottery.prize.update / lottery.rules.put / ...）；
-- target_ids 是被操作对象的主键数组（JSON）；request_hash 是请求 body 的 sha1
-- 摘要（对同一批次多次写入去重）；ip/user_agent 从上下文取。

CREATE TABLE IF NOT EXISTS `admin_action_log` (
  `id`             BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  `actor_user_id`  BIGINT UNSIGNED NOT NULL              COMMENT '操作者 user.id',
  `action`         VARCHAR(64)     NOT NULL              COMMENT '动作 code（点分层级）',
  `target_ids`     VARCHAR(255)    NOT NULL DEFAULT ''   COMMENT '被操作对象 ID 逗号分隔或 JSON 数组',
  `request_hash`   VARCHAR(64)     NOT NULL DEFAULT ''   COMMENT '请求 body sha1 摘要',
  `ip`             VARCHAR(45)     NOT NULL DEFAULT ''   COMMENT '操作者 IP',
  `user_agent`     VARCHAR(255)    NOT NULL DEFAULT ''   COMMENT '操作者 UA',
  `created_at`     DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间',
  PRIMARY KEY (`id`),
  KEY `idx_actor_time` (`actor_user_id`, `created_at`),
  KEY `idx_action_time` (`action`, `created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='后台写操作审计流水';
