-- ─── Pedidos de aula experimental + registo do anti-spam ──────────────────── -- Até aqui o pedido de aula experimental só existia como email: sem SMTP (ou -- com o SMTP em baixo) o visitante via «erro» e o pedido perdia-se. Agora fica -- guardado primeiro, como as inscrições, e o email é só um aviso. -- -- blocked_submissions: onde o anti-spam partilhado (platform-tools, -- functions_antispam_forms.php) guarda o que recusou — um falso positivo é uma -- lead verdadeira, e tem de se poder ler. Esquema igual ao do dance. -- -- Só cria tabelas. Safe to re-run. CREATE TABLE IF NOT EXISTS `trial_leads` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `gym_id` INT NOT NULL DEFAULT 1, `name` VARCHAR(150) NOT NULL, `email` VARCHAR(190) NOT NULL DEFAULT '', `phone` VARCHAR(40) NOT NULL DEFAULT '', `preferred_date` DATE NULL DEFAULT NULL, `period` VARCHAR(40) NOT NULL DEFAULT '', `message` TEXT NULL, `consent` TINYINT(1) NOT NULL DEFAULT 0, `consent_text` VARCHAR(255) NOT NULL DEFAULT '', `ip` VARCHAR(45) NOT NULL DEFAULT '', `user_agent` VARCHAR(255) NOT NULL DEFAULT '', `status` VARCHAR(20) NOT NULL DEFAULT 'novo', `admin_notes` TEXT NULL, `email_sent` TINYINT(1) NOT NULL DEFAULT 0, `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` DATETIME NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, `updated_by` INT UNSIGNED NULL DEFAULT NULL, `deleted_at` DATETIME NULL DEFAULT NULL, `deleted_by` INT UNSIGNED NULL DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_trial_leads_gym` (`gym_id`, `deleted_at`, `status`), KEY `idx_trial_leads_ip` (`ip`, `created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `blocked_submissions` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `form` VARCHAR(40) NOT NULL COMMENT 'trial, inscricao, evento', `reason` VARCHAR(190) NOT NULL COMMENT 'Regra que travou, ou os sinais somados', `score` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Pontuação de conteúdo; 0 nas recusas diretas', `ip` VARCHAR(45) NOT NULL DEFAULT '', `user_agent` VARCHAR(250) NOT NULL DEFAULT '', `payload` TEXT DEFAULT NULL COMMENT 'JSON do que foi submetido, sem o token CSRF', `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `idx_bs_form` (`form`), KEY `idx_bs_ip` (`ip`), KEY `idx_bs_created` (`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;