@extends('layouts.app') @section('content') @php $campaignAudienceDefaults = $campaignAudienceDefaults ?? []; $selectedSourceCampaignId = (int) old('source_campaign_id', $sourceCampaignId ?: optional($campaigns->first())->id); $selectedCampaign = $campaigns->firstWhere('id', $selectedSourceCampaignId); $selectedDefaults = $campaignAudienceDefaults[$selectedSourceCampaignId] ?? ['include' => [], 'exclude' => []]; $oldIncludeIds = array_map('intval', (array) old('include_list_ids', $selectedDefaults['include'] ?? [])); $oldExcludeIds = array_map('intval', (array) old('exclude_list_ids', $selectedDefaults['exclude'] ?? [])); $selectedStartMode = old('start_mode', 'scheduled'); $defaultScheduledLocal = now($defaultTimezone)->addHour()->format('Y-m-d\TH:i'); $nameValue = old('name', $selectedCampaign ? $selectedCampaign->name . ' - A/B Test' : ''); $generateAiValue = filter_var(old('generate_ai_subjects', false), FILTER_VALIDATE_BOOLEAN); $maxVariantCount = \App\Support\AbTestingSupport::maxVariantCount(); @endphp

Crear prueba A/B

Aliases random, variantes editables y lista final separada.

Resultados
@csrf
1

Campana base

Se clona una version por variante y otra para la final.

Con AI, las pruebas usan SPS aleatorio 1-50; la final usa este valor.

2

Audiencia origen

La muestra random respeta exclusiones y supresiones antes de crear aliases.

@forelse ($lists as $list) @php $listId = (int) $list->id; @endphp @empty No hay listas activas. @endforelse
@forelse ($lists as $list) @php $listId = (int) $list->id; @endphp @empty No hay listas activas. @endforelse
3

Timing

Inicio, cadencia entre variantes y espera para final.

Se generaran aliases ocultos de prueba y una lista final con el remanente enviable.

Cancelar
@endsection @push('scripts') @endpush