← К списку версий
v0.41.1
25.08.2026
PATCH
Система email-рассылок: шаблоны, трекинг, дашборд
Что сделано
- `AdminController@index` — передаёт `$upcomingCampaigns`, `$scheduledForTomorrow`, `$scheduledForWeek` во view
- `admin/index.blade.php` — новый блок «Предстоящие письма» между подсказками и «Требуют внимания»: список запланированных кампаний с датой/временем, типом аудитории, числом получателей
- Подсветка: сегодня — красный, завтра — жёлтый, позже — серый
- Hint-блок: «Завтра запланировано рассылок: N»
- `CampaignService::buildUtmParams()` — генерирует `utm_source=ipd_platform`, `utm_medium=email`, `utm_campaign={slug}`
- `CampaignMail` — принимает `$utmSource`, `$utmMedium`, `$utmCampaign`, `$mailLog`; передаёт `$utmParams` и `$trackingPixelUrl` в Blade
- Кнопка «Открыть на платформе» теперь содержит UTM-параметры
- Миграция `2026_08_25_230000` — `tracking_token` (char 32, unique, nullable) в `mail_logs`
- `MailLog` — автогенерация `tracking_token` при создании (Str::random(32)), методы `trackingPixelUrl()` и `clickUrl()`
- `emails/campaign.blade.php` — `<img>` tracking pixel внизу письма (1x1 transparent GIF)
- `SendCampaignEmailJob` — передаёт `$mailLog` в CampaignMail для инъекции пикселя
- `emails/campaign.blade.php` — обновлён: карточка Алексея Гапеева (фото, должность, телефоны, email, сайт), footer с ООО «Студия ИПД» и УНП, ссылка «Управление уведомлениями»
- `CampaignService::buildRecipients()` — `$seenEmails` массив: один email = одно письмо, дубликаты пропускаются
- Version bump → 0.41.1