-- 代码作用（白话）：在不写入任何账号密码或 Jeddy 哈希的前提下，为现有账号表补齐页面权限和会话失效字段。
-- 关联文件：SystemUserEntity.java、AuthTokenFilter.java、SystemUserAdminService.java。
-- 关联逻辑（调用链/数据流）：数据库字段/触发器 -> 认证过滤器校验 auth_version -> 登录 Cookie 立即失效。

-- 本脚本在部署前的只读核对确认字段不存在后执行一次；MySQL 不支持 ADD COLUMN IF NOT EXISTS。
ALTER TABLE as_system_user
  ADD COLUMN page_permissions JSON NULL COMMENT '页面权限映射：NONE/READ/EDIT',
  ADD COLUMN password_updated_at DATETIME NULL COMMENT '密码哈希最后更新时间',
  ADD COLUMN auth_version INT NOT NULL DEFAULT 1 COMMENT '登录凭证版本号';

CREATE UNIQUE INDEX uk_as_system_user_username ON as_system_user (username);

DROP TRIGGER IF EXISTS trg_as_system_user_password_changed;
DELIMITER $$
CREATE TRIGGER trg_as_system_user_password_changed
BEFORE UPDATE ON as_system_user
FOR EACH ROW
BEGIN
  IF NOT (NEW.password_hash <=> OLD.password_hash) THEN
    SET NEW.password_updated_at = CURRENT_TIMESTAMP;
    SET NEW.auth_version = COALESCE(OLD.auth_version, 1) + 1;
  END IF;
END$$
DELIMITER ;

-- 回滚说明：仅在确认没有依赖新字段和唯一索引后，先 DROP TRIGGER，再 DROP INDEX，最后 DROP COLUMN；
-- 绝不可在未备份 as_system_user 或存在新账号数据时直接执行回滚，也不得在此脚本写入 Jeddy 哈希。
