-- ============================================================
-- JesusAI 安全增强迁移 v2.3
-- 1. admin_logs：后台操作全量日志
-- 2. groups.invite_expires_at：邀请码过期时间（私密群）
-- 3. users.membership_expire_at：订阅到期时间（预留，后续 cron 降档）
-- 执行：mysql -u root jesusai < migration_v2.3_security.sql
-- ============================================================

-- 1. 后台操作日志表
CREATE TABLE IF NOT EXISTS admin_logs (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    action VARCHAR(64) NOT NULL COMMENT '操作类型：login/payment_approve/payment_reject/delete_post/...',
    detail VARCHAR(500) DEFAULT NULL COMMENT '操作详情',
    ip VARCHAR(64) DEFAULT NULL,
    user_agent VARCHAR(255) DEFAULT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_action (action),
    INDEX idx_created (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='后台操作日志';

-- 2. 邀请码过期时间（私密群创建后默认 30 天有效）
ALTER TABLE groups
    ADD COLUMN invite_expires_at DATETIME NULL COMMENT '邀请码过期时间' AFTER invite_code;

-- 已有私密群的邀请码补齐 30 天有效期（从现在起算，避免历史码立即失效）
UPDATE groups
   SET invite_expires_at = DATE_ADD(NOW(), INTERVAL 30 DAY)
 WHERE is_private = 1 AND invite_code IS NOT NULL AND invite_expires_at IS NULL;

-- 3. 订阅到期时间（grant_membership 时写入，cron 到期降回 free）
ALTER TABLE users
    ADD COLUMN membership_expire_at DATETIME NULL COMMENT '会员到期时间，NULL=永久' AFTER membership_tier;
