CREATE TABLE IF NOT EXISTS reports ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, reporter_user_id BIGINT UNSIGNED NOT NULL, target_type VARCHAR(30) NOT NULL, target_id BIGINT UNSIGNED NOT NULL, reason_code VARCHAR(50) NOT NULL, description VARCHAR(1000) NOT NULL DEFAULT '', evidence_json JSON NULL, status VARCHAR(20) NOT NULL DEFAULT 'PENDING', handled_by BIGINT UNSIGNED NULL, handled_at DATETIME(3) NULL, created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (id), KEY idx_reports_status_created (status, created_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS moderation_tasks ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, target_type VARCHAR(30) NOT NULL, target_id BIGINT UNSIGNED NOT NULL, content_type VARCHAR(30) NOT NULL, risk_score INT NOT NULL DEFAULT 0, machine_result JSON NULL, status VARCHAR(20) NOT NULL DEFAULT 'PENDING', reviewer_id BIGINT UNSIGNED NULL, review_result VARCHAR(255) NOT NULL DEFAULT '', created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), reviewed_at DATETIME(3) NULL, PRIMARY KEY (id), KEY idx_moderation_status_created (status, created_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS user_risk_profiles ( user_id BIGINT UNSIGNED NOT NULL, risk_score INT NOT NULL DEFAULT 0, risk_level TINYINT UNSIGNED NOT NULL DEFAULT 0, message_score INT NOT NULL DEFAULT 0, device_score INT NOT NULL DEFAULT 0, report_score INT NOT NULL DEFAULT 0, behavior_score INT NOT NULL DEFAULT 0, updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3), PRIMARY KEY (user_id), KEY idx_risk_level_score (risk_level, risk_score) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS risk_events ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, user_id BIGINT UNSIGNED NOT NULL, event_type VARCHAR(50) NOT NULL, score_delta INT NOT NULL, device_id VARCHAR(100) NOT NULL DEFAULT '', ip VARCHAR(45) NOT NULL DEFAULT '', metadata JSON NULL, created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (id), KEY idx_risk_event_user_created (user_id, created_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS notifications ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, user_id BIGINT UNSIGNED NOT NULL, type VARCHAR(30) NOT NULL, title VARCHAR(100) NOT NULL, content VARCHAR(1000) NOT NULL, biz_type VARCHAR(30) NOT NULL DEFAULT '', biz_id BIGINT UNSIGNED NULL, read_at DATETIME(3) NULL, created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (id), KEY idx_notify_user_read_created (user_id, read_at, created_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;