feat(107-automation-email-send-once): idempotent send-once per order for email automation
Phase 107 complete: - New table automation_email_once_deliveries with UNIQUE KEY (rule_id, action_id, order_id) - AutomationEmailOnceRepository: wasSent() / markSent() with ON DUPLICATE KEY guard - AutomationService: send_once_per_order flag — mark only on successful send - Checkbox "Wyslij tylko raz dla tego zamowienia" in rule form (edit + new action JS) - 2 unit tests added; 3/3 passing (49 assertions) Milestone v3.1 Operational Enhancements: COMPLETE (2/2 phases) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
21
.paul/changelog/2026-04-25.md
Normal file
21
.paul/changelog/2026-04-25.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# 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`
|
||||
Reference in New Issue
Block a user