CREATE TABLE IF NOT EXISTS rec_exam_attempt ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, participant_id INT NOT NULL, phase TINYINT UNSIGNED NOT NULL, questions_json MEDIUMTEXT NOT NULL, answers_json MEDIUMTEXT NOT NULL, deadline BIGINT NOT NULL, active_token CHAR(64) NOT NULL, status VARCHAR(20) NOT NULL DEFAULT 'active', started_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, submitted_at DATETIME NULL, UNIQUE KEY participant_phase (participant_id, phase) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS rec_exam_event ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, attempt_id BIGINT UNSIGNED NOT NULL, event_type VARCHAR(40) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, KEY attempt_events (attempt_id, id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS rec_candidate_login_guard ( email_hash CHAR(64) NOT NULL PRIMARY KEY, failures INT NOT NULL DEFAULT 0, blocked_until BIGINT NOT NULL DEFAULT 0, window_started BIGINT NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;