-- 003_create_super_admins.sql
-- 这个迁移文件新增超级管理员表，用于后台登录和后续所有管理接口的 JWT 鉴权。

CREATE TABLE IF NOT EXISTS super_admins (
  id INT UNSIGNED NOT NULL AUTO_INCREMENT,
  username VARCHAR(50) NOT NULL COMMENT '登录账号',
  password_hash VARCHAR(255) NOT NULL COMMENT '密码哈希，禁止存储明文密码',
  display_name VARCHAR(50) NOT NULL COMMENT '展示名称',
  status ENUM('ACTIVE', 'INACTIVE') NOT NULL DEFAULT 'ACTIVE' COMMENT '账号状态',
  last_login_at DATETIME(3) NULL COMMENT '最后登录时间',
  created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
  updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
  PRIMARY KEY (id),
  UNIQUE KEY uk_super_admins_username (username),
  KEY idx_super_admins_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='超级管理员表';

-- 初始化一个本地开发用超级管理员账号。
-- 账号：admin
-- 密码：Admin@123456
-- password_hash 使用 PBKDF2-SHA256 生成，登录校验逻辑在 src/modules/auth/password.ts。
INSERT INTO super_admins (id, username, password_hash, display_name, status)
VALUES (
  1,
  'admin',
  'pbkdf2$sha256$310000$vXBBypwmLVKkGa1Og8Z3SQ$yAV40TqZjrzx1-xg27ucQqL3Hc5HQ44t-sarPwpjLUA',
  '超级管理员',
  'ACTIVE'
)
ON DUPLICATE KEY UPDATE
  display_name = VALUES(display_name),
  status = VALUES(status);
