# 2026-04-25 ## Co zrobiono - [Phase 107, Plan 01] Dodano mechanizm idempotentnej jednorazowej wysyłki e-mail dla akcji automatyzacji - Utworzono tabelę `automation_email_once_deliveries` z UNIQUE KEY `(rule_id, action_id, order_id)` i FK CASCADE - Dodano `AutomationEmailOnceRepository` z metodami `wasSent()` / `markSent()` - Zintegrowano guard idempotencji w `AutomationService::handleSendEmail()` — mark tylko po sukcesie - Dodano checkbox "Wyślij tylko raz dla tego zamówienia" w formularzu reguły (edycja + nowa akcja JS) - Dodano 2 testy jednostkowe: scenariusz send-once i multi-send; testy przechodzą (3/3, 49 assertions) ## Zmienione pliki - `database/migrations/20260425_000102_create_automation_email_once_deliveries_table.sql` - `src/Modules/Automation/AutomationEmailOnceRepository.php` - `src/Modules/Automation/AutomationService.php` - `src/Modules/Automation/AutomationController.php` - `resources/views/automation/form.php` - `public/assets/js/modules/automation-form.js` - `src/Modules/Cron/CronHandlerFactory.php` - `tests/Unit/AutomationServiceTest.php`